This project uses the Gradle build tool. The recommended development environment is Android Studio with the Kotlin Multiplatform plugin installed, which will automatically detect the project and download the necessary dependencies for you.
Since the project is using Gradle 8.10.2 with the Android Gradle Plugin (AGP) version 8.7.2 you should use Android Studio Ladybug or later (have a look here for a compatibility matrix between versions of Gradle, AGP and Android Studio) and here for the compatibility between the Kotlin Multiplatform plugin, Kotlin, Gradle and AGP. Alternatively, you can try and use IntelliJ IDEA or Fleet but some extra steps may be needed to ensure everything fits and runs together.
In order for Gradle to build, you will need to have a JDK installed on your local development machine, if you are using stock Android Studio it ships with the default JetBrains runtime, you could have a look in the Settings dialog under the section "Build, Execution, Deployment > Build Tools > Gradle"in the "Gradle JDK" location drop-down menu.
If you want to use your custom JDK (e.g. under Linux you want to try OpenJDK instead), please make sure that it has a suitable version, according to this page.
Since building this project requires a quite lot of RAM due to its multi-module structure
and to the fact that it is quite a complex project, please make sure that the gradle.properties
file in the root folder contains proper memory settings for the JVM and the Kotlin compile daemon:
org.gradle.jvmargs=-Xmx4096M -Dfile.encoding=UTF-8 -Dkotlin.daemon.jvm.options\="-Xmx4096M"
Finally, this app uses Sentry for crash reporting, but its configuration is not committed in the
VCS for safety reasons. In order to be able to build the project, please create an
empty build.properties
file in the core/utils
directory with the following content:
sentry_dsn=dummy_dsn
Similarly, create a core/utils/build.properties
with the dummy configuration for the fallback
translation API:
inner_translation_api_url=dummy_url
Symbols used in version numbers:
Number | Meaning |
---|---|
α | major version |
β | minor version |
γ | patch version |
δ | pre-release version |
ε | build number |
- checkout the
master
branch - increment
versionCode
(ε) andversionName
(α.β.γ-betaδ) incomposeApp/build.gradle.kts
- add everything to stage and create a commit with the message "version α.β.γ-betaδ"
- tag the commit with the label "α.β.γ-betaδ"
- push both the commit and tag to
origin
- (optional) create an announcement in the Friendica group
- checkout the
master
branch - increment
versionCode
(ε) andversionName
(α.β.γ) incomposeApp/build.gradle.kts
- update
res/changelog.txt
with a detailed change list, remembering:- to include PR (with author) and issue references (if possible)
- to update the version comparison for GitHub diff view
- create a file called
ε.txt
underfastlane/metadata/android/en-US/changelogs/
with the change list copying the content ofres/changelog.txt
(remember: 500 character limit) - add everything to stage and create a commit with the message "version α.β.γ"
- tag the commit with the label "α.β.γ"
- push both the commit and tag to
origin
- (optional) create an announcement in the Friendica group