This document describes the overview of this project for developers.
See also Build Instruction.
Last Update: 2026.03.08
This is a Kotlin Android Application.
Gradle Version Catalogs is used in this project:
Please refer libs.versions.toml for all the libraries and all gradle plugins.
Toolchain
- Gradlew
9.3.1, along with JDK21 Android Gradle Plugin8.13.2- Android SDK
36 - kotlin for JVM(Android)
2.3.10
Libraries
Highlight:
Jetpack ComposeJetpack Datastorekotlinx.serializationkotlinx.parcelizekoinas a lightweight Dependency Injection solution
See List of Libraries and Gradle Plugins in Use for details
Since 1.81, we have two Flavor Dimension currently: channel (for different release channels), target (for Android platforms).
And, there are two default BuildTypes (debug/release), and all release shrinks and minifies.
Dimension channel2 |
Extra Package Name Suffix | Usage | Note |
|---|---|---|---|
stable |
(None) | Stable & LTS channel release |
|
fdroid |
(None) | Fdroid reproducible build release | based on stable |
preview |
.preview |
Preview channel release |
|
next |
.eap |
Early Access Preview channel release |
|
checkout |
.checkout |
(Github Action Build ) |
for locating bug |
We make this distinction mostly for bypassing Scope Storage for Android 10.
Dimension target |
Target SDK | Min SDK | Descriptions |
|---|---|---|---|
modern |
(Latest) | 24 | for mainstream android device users |
legacy |
28 | 24 | for legacy android device user (especially Android 10, to bypass Scope Storage) |
Currently:
- app(
app/): source code of the Phonograph Plus - changelog-generator(
tools/changelog-generator): utility for generating formated changelogs and release notes
Except files relative to gradle or building:
.github/:Github Actionand templates.idea/: Android Studio's config including code style config and run configapp/,tools/changelog-generator: Gradle Moduledocs/: documentsscripts/: utility scriptsfastlane/metadata/android/: F-droid metadata, like summary, screenshot, changelogscrowdin.yml: Crowdin configurationReleaseNote.yaml,ReleaseNoteStable.yaml: Pending release notes as well as metadata, used for generating changelogs and release note everywhere on releasingfdroid.properties: metadata of current latest version, unusedversion_catalog.json: containing the latest version metadata that Phonograph Plus used for checking updates
TODO