This document describes the overview of this project for developers.
See also Build Instruction.
Last Update: 2024.11.01
This is a pure 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
8.10.2
, requiring JDK17
Android Gradle Plugin
8.7.2
- Android SDK
35
- kotlin for JVM(Android)
2.0.21
Libraries
Highlight:
Jetpack Compose
1.7.5Jetpack Datastore
1.1.1kotlinx.serialization
kotlinx.parcelize
koin
as 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: purpose
(for different release channel), target
(for Android platform).
And, there are two default BuildType
s (debug
/release
), and all release
shrinks and minifies.
Dimension purpose 2 |
Extra Package Name Suffix | Usage | Note |
---|---|---|---|
stable |
(None) | Stable & LTS channel release |
|
preview |
.preview |
Preview channel release |
|
checkout |
.checkout |
(Github Action Build ) |
for locating bug |
We make this distinction mostly for surpass Scope Storage for Android 10.
Dimension target |
Target SDK | Min SDK | Descriptions |
---|---|---|---|
modern |
(Latest) | 24 | for mainstream android device user |
legacy |
28 | 24 | for legacy android device user (especially Android 10, to bypass Scope Storage) |
Currently:
- app(
app/
): all actual code of the Phonograph Plus - changelog-generator(
tools/changelog-generator
): for generating changelog from
Except gradle's file ():
.github/
:Github Action
and templates.idea/
: Android Studio's config including code style config and run configapp/
,tools/changelog-generator
: Gradle Moduledocs/
: documentsscripts/
: bash scripts for cifastlane/metadata/android/
: F-droid metadata, like summary, screenshot, changelogsversion_catalog.json
: containing the latest version information that Phonograph Plus would read at- startup
crowdin.yml
: Crowdin configurationLICENSE.txt
: GPL licensesReleaseNote.toml
: GitHub Actionpreview_release
read this and post to Release Page
TODO