Skip to content
This repository was archived by the owner on Jun 3, 2026. It is now read-only.

Configuration and Versions

Aarsh edited this page May 28, 2026 · 5 revisions

Configuration & Versions

The single source of truth for every dependency / plugin version is gradle/libs.versions.toml for the catalogued ones and app/build.gradle.kts for direct declarations. This page is a flattened reference at the time of v3.8 (stable).


Toolchain

Tool Pinned Where
Gradle 8.13 gradle/wrapper/gradle-wrapper.properties
Android Gradle Plugin 9.0.1 libs.versions.toml → agp
Kotlin 2.3.0 (in catalog) libs.versions.toml → kotlin
Google Services Gradle plugin 4.4.4 libs.versions.toml → googleGmsGoogleServices
Gradle Play Publisher (GPP) 4.0.0 libs.versions.toml → gpp
JVM target (sourceCompatibility / targetCompatibility / Kotlin jvmTarget) 11 app/build.gradle.kts
JDK required to build 17+ (Microsoft OpenJDK 17 known-good) AGP 9 requires it

The build uses org.gradle.toolchains.foojay-resolver-convention for automatic JVM selection when needed.


SDKs

Setting Value
compileSdk 36 (Android 16)
targetSdk 36
minSdk 35 (Android 15)

minSdk=35 is unusually aggressive — the app deliberately doesn't try to support older devices.


App version

Setting Value (as of v3.8)
versionCode 57
versionName "3.8"

Bumped per Build & Release.


Dependencies

Declared in app/build.gradle.kts — currently coordinates are hard-coded rather than going through the catalog. Tidiness opportunity: move them to libs.versions.toml (see Known Issues).

AndroidX core / UI

Coordinate Version
androidx.core:core-ktx 1.12.0
androidx.appcompat:appcompat 1.6.1
androidx.activity:activity-ktx 1.8.2
androidx.constraintlayout:constraintlayout 2.1.4
androidx.lifecycle:lifecycle-runtime-ktx 2.7.0
androidx.swiperefreshlayout:swiperefreshlayout 1.1.0
androidx.core:core-splashscreen 1.0.1

Material

com.google.android.material:material 1.14.0-alpha08

Material is on an alpha track deliberately for Material 3 Expressive components (Extended FAB shrink/extend, collapsing app bar refinements, etc.). Stable releases lag the expressive features.

Firebase

Coordinate Version
platform("com.google.firebase:firebase-bom") 32.7.2 (BoM — pins everything below)
com.google.firebase:firebase-analytics (BoM)
com.google.firebase:firebase-auth (BoM)
com.google.firebase:firebase-firestore (BoM)

Auth (Credential Manager)

Coordinate Version
androidx.credentials:credentials 1.2.0
androidx.credentials:credentials-play-services-auth 1.2.0
com.google.android.libraries.identity.googleid:googleid 1.1.0

Other

Coordinate Version Purpose
androidx.biometric:biometric 1.2.0-alpha05 App Lock
androidx.work:work-runtime-ktx 2.9.0 Notification worker
junit:junit 4.13.2 Local unit tests
androidx.test.ext:junit 1.1.5 Instrumented tests
androidx.test.espresso:espresso-core 3.5.1 Instrumented tests

Build configuration

buildTypes.release:

  • isMinifyEnabled = true (R8 on)
  • isShrinkResources = true
  • ProGuard files: proguard-android-optimize.txt + project proguard-rules.pro (preserves Firestore models)
  • signingConfig reads from local.properties (populated by ./retrieve_secrets.sh)

buildFeatures.viewBinding = true — enabled, but most adapters/activities still use findViewById directly.


Gradle properties (gradle.properties)

Property Value Effect
org.gradle.jvmargs -Xmx2048m -Dfile.encoding=UTF-8 2 GB heap, UTF-8 sources
android.useAndroidX true Required
kotlin.code.style official JetBrains style
android.nonTransitiveRClass true Per-module R class — smaller, faster

Repositories

settings.gradle.kts declares:

  • For plugins: google() (filtered to com.android.*, com.google.*, androidx.*), mavenCentral(), gradlePluginPortal().
  • For libraries: google(), mavenCentral(). FAIL_ON_PROJECT_REPOS is set — any module that tries to declare its own repo fails the build.

Updating versions

The safe order:

  1. Bump Gradle first (gradle-wrapper.properties).
  2. Then AGP (libs.versions.toml). AGP dictates the minimum Gradle.
  3. Then Kotlin (libs.versions.toml). Some AGP versions require a matching Kotlin range.
  4. Then dependencies. Firebase libs are best bumped together via the BoM.
  5. Re-sync in Studio and run ./gradlew :app:assembleDebug to confirm.

Quick "what's out of date" check (with the Ben Manes plugin added):

./gradlew dependencyUpdates

Plugin not in the build today; add id("com.github.ben-manes.versions") version "0.51.0" to the root build.gradle.kts if you want this.


See also

Clone this wiki locally