Repository navigation
Configuration and 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).
| 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.
| 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.
| Setting | Value (as of v3.8) |
|---|---|
versionCode |
57 |
versionName |
"3.8" |
Bumped per Build & Release.
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).
| 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 |
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.
| 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) |
| 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 |
| 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 |
buildTypes.release:
-
isMinifyEnabled = true(R8 on) isShrinkResources = true- ProGuard files:
proguard-android-optimize.txt+ projectproguard-rules.pro(preserves Firestore models) -
signingConfigreads fromlocal.properties(populated by./retrieve_secrets.sh)
buildFeatures.viewBinding = true — enabled, but most adapters/activities still use findViewById directly.
| 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 |
settings.gradle.kts declares:
-
For plugins:
google()(filtered tocom.android.*,com.google.*,androidx.*),mavenCentral(),gradlePluginPortal(). -
For libraries:
google(),mavenCentral().FAIL_ON_PROJECT_REPOSis set — any module that tries to declare its own repo fails the build.
The safe order:
-
Bump Gradle first (
gradle-wrapper.properties). -
Then AGP (
libs.versions.toml). AGP dictates the minimum Gradle. -
Then Kotlin (
libs.versions.toml). Some AGP versions require a matching Kotlin range. - Then dependencies. Firebase libs are best bumped together via the BoM.
-
Re-sync in Studio and run
./gradlew :app:assembleDebugto confirm.
Quick "what's out of date" check (with the Ben Manes plugin added):
./gradlew dependencyUpdatesPlugin 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.
- Build & Release — actual gradle command set.
- Known Issues — including the version-catalog-bypass for some deps.
Source: aarshps/varisankya-android · This wiki is human-facing; the repo itself targets AI coding agents (AGENTS.md).