This document seeks to improve clarity and coherence.
See also Developer Guide.
Last Updated at 2026.05.28
You would like to build the application from source instead of developing and contributing.
- A desktop computer 1:
- at least 4G RAM
- enough available storage space, on user home disk (at least ~3G)
- Compatible desktop operating system 1:
- Windows 10/11 (tested)
- Ubuntu 24.04 (tested)
- JDK 21 (Android Gradle Plugin 9.2.1 along with Gradle 9.5.1 are used in this project)
- Android SDK (automatically downloaded via AGP)
- Internet connection
If you would like to contribute:
- Git
- Android Studio Panda 4 | 2025.3.4 Patch 1 (Note: JetBrain IDEA may not be compatible due to its limited support on latest Android Gradle Plugin)
(bash or powershell)
Choose one of the following methods:
- Download from release page (
Source code (zip/tar.gz)) - Clone using Git:
git clone <REPO-URL> --depth=1 -b <VERSION>
Temurin by Eclipse Adoptium Foundation for example:
winget install --id EclipseAdoptium.Temurin.21.JDKapt-get install temurin-21-jdkyum install temurin-21-jdkcd <SOURCE>
# Set-Location <SOURCE>See Generate A New Keystore for Signing if you hadn't.
Set environment variables RELEASE_KEYSTORE_FILE, RELEASE_KEYSTORE_PASSWORD, RELEASE_KEY_ALIAS, RELEASE_KEY_PASSWORD to values for your signing keys;
Or append <USER_HOME>\.gradle\gradle.properties (replace <*> with yours):
release.keystoreFile=<path-to-signing-key>
release.keystorePassword=<keystore-password>
release.keyAlias=<key-alias>
release.keyPassword=<key-password>See Also Appendix Generate Signing Configuration
Now, we can build project in variant of Modern and Stable with Build Type Release now. 2
./gradlew assembleModernStableReleaseBuilt apk is in ./app/build/outputs/apk/modernStable/release/ with name PhonographPlus_<VERSION>-modern-stable-release.apk
You can run
./gradlew PublishModernStableReleaseto move apk to ./products/ModernStableRelease and rename to Phonograph Plus_<VERSION>_ModernStableRelease.apk
Use JDK's keytool to generate a new one if you haven't:
keytool -genkeypair -storepass <keystore-password> -alias <key-alias> -keypass <key-password> -keyalg RSA -keysize 2048 -keystore <your-signing-key-file-path>For bash users, you can append global gradle.properties via these commands (replace <*> with yours), if Gradle home directory is set to default:
echo "release.keystoreFile=<your-signing-key-file-path>" >> ~/.gradle/gradle.properties
echo "release.keystorePassword=<keystore-password>" >> ~/.gradle/gradle.properties
echo "release.keyAlias=<key-alias>" >> ~/.gradle/gradle.properties
echo "release.keyPassword=<key-password>" >> ~/.gradle/gradle.properties(local gradle.properties in project root is passible as well)
Or export environment variables every time:
export RELEASE_KEYSTORE_FILE=<your-signing-key-file-path>
export RELEASE_KEYSTORE_PASSWORD=<keystore-password>
export RELEASE_KEY_ALIAS=<key-alias>
export RELEASE_KEY_PASSWORD=<key-password>Footnotes
-
Compatibility is uncertain on Termux; Android 16 with full Linux VM may be compatible. ↩ ↩2
-
See more in section Build Variant from Development Guild. ↩