Skip to content

Latest commit

 

History

History
91 lines (58 loc) · 3.32 KB

Developer_Guide.md

File metadata and controls

91 lines (58 loc) · 3.32 KB

Developer Guide / 开发指南

This document describes the overview of this project for developers.

See also Build Instruction.

Last Update: 2024.11.01

Toolchain & Dependencies

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 JDK 17
  • Android Gradle Plugin 8.7.2
  • Android SDK 35
  • kotlin for JVM(Android) 2.0.21

Libraries

Highlight:

  • Jetpack Compose 1.7.5
  • Jetpack Datastore 1.1.1
  • kotlinx.serialization
  • kotlinx.parcelize
  • koin as a lightweight Dependency Injection solution

See List of Libraries and Gradle Plugins in Use for details

Build Variants

Since 1.81, we have two Flavor Dimension currently: purpose (for different release channel), target (for Android platform).

And, there are two default BuildTypes (debug/release), and all release shrinks and minifies.

Dimension purpose

Dimension purpose2 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

Dimension target

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)

Project Structure

Gradle Module

Currently:

  • app(app/): all actual code of the Phonograph Plus
  • changelog-generator(tools/changelog-generator): for generating changelog from

Repository Structure

Except gradle's file ():

  • .github/: Github Action and templates
  • .idea/: Android Studio's config including code style config and run config
  • app/, tools/changelog-generator: Gradle Module
  • docs/: documents
  • scripts/: bash scripts for ci
  • fastlane/metadata/android/: F-droid metadata, like summary, screenshot, changelogs
  • version_catalog.json: containing the latest version information that Phonograph Plus would read at
  • startup
  • crowdin.yml: Crowdin configuration
  • LICENSE.txt: GPL licenses
  • ReleaseNote.toml: GitHub Action preview_release read this and post to Release Page

Source Code Structure of Phonograph Plus

TODO

Footnotes

  1. Before 1.8, there is only purpose.

  2. Before v0.4.0, there are more variants (like common as stable, ci for Github Action).