build.gradle.kts
| 1 | plugins { |
| 2 | id("com.android.application") |
| 3 | id("org.jetbrains.kotlin.plugin.compose") |
| 4 | } |
| 5 | |
| 6 | android { |
| 7 | namespace = "de.upapp" |
| 8 | compileSdk = 37 |
| 9 | |
| 10 | defaultConfig { |
| 11 | applicationId = "de.upapp" |
| 12 | minSdk = 31 |
| 13 | targetSdk = 37 |
| 14 | versionCode = 1 |
| 15 | versionName = "0.1.0" |
| 16 | } |
| 17 | |
| 18 | // Without ANDROID_KEYSTORE, assembleRelease builds an unsigned APK. |
| 19 | val keystore = providers.environmentVariable("ANDROID_KEYSTORE").orNull |
| 20 | val releaseSigning = keystore?.let { |
| 21 | signingConfigs.create("release") { |
| 22 | storeFile = file(it) |
| 23 | storePassword = providers.environmentVariable("ANDROID_KEYSTORE_PASSWORD").get() |
| 24 | keyAlias = providers.environmentVariable("ANDROID_KEY_ALIAS").get() |
| 25 | // PKCS12 has one password for the store and the key. |
| 26 | keyPassword = storePassword |
| 27 | } |
| 28 | } |
| 29 | buildTypes { |
| 30 | release { signingConfig = releaseSigning } |
| 31 | } |
| 32 | |
| 33 | buildFeatures { |
| 34 | compose = true |
| 35 | buildConfig = true |
| 36 | } |
| 37 | testOptions { unitTests.isReturnDefaultValues = true } |
| 38 | packaging { |
| 39 | resources.excludes += "META-INF/versions/9/OSGI-INF/MANIFEST.MF" |
| 40 | resources.pickFirsts += "META-INF/LICENSE.md" |
| 41 | } |
| 42 | } |
| 43 | |
| 44 | dependencies { |
| 45 | implementation(platform("androidx.compose:compose-bom:2026.09.00")) |
| 46 | implementation("androidx.compose.material3:material3") |
| 47 | implementation("androidx.compose.material:material-icons-core:1.7.8") |
| 48 | implementation("androidx.activity:activity-compose:1.13.0") |
| 49 | implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.11.0") |
| 50 | // Conscrypt has no TLS_PSK_WITH_AES_128_CBC_SHA256, the car's only session cipher. |
| 51 | implementation("org.bouncycastle:bctls-jdk18on:1.86.2") |
| 52 | |
| 53 | testImplementation("junit:junit:4.13.2") |
| 54 | // android.jar only has org.json stubs. |
| 55 | testImplementation("org.json:json:20260814") |
| 56 | // Creates the test certificates for the registration handshake. |
| 57 | testImplementation("org.bouncycastle:bcpkix-jdk18on:1.86") |
| 58 | } |
| 59 |