plugins { alias(libs.plugins.android.application) alias(libs.plugins.jetbrains.kotlin.android) alias(libs.plugins.dagger.hilt.android) alias(libs.plugins.compose.compiler) alias(libs.plugins.jetbrains.kotlin.serialization) alias(libs.plugins.firebase.perf) id("com.google.devtools.ksp") id("com.google.gms.google-services") id("com.google.firebase.crashlytics") } android { namespace = "com.suno.android" compileSdk = libs.versions.compileSdk.get().toInt() defaultConfig { applicationId = "com.suno.android" minSdk = libs.versions.minSdk.get().toInt() targetSdk = 35 versionName = "1.40.0" val versionNameOverride = findProperty("android.injected.version.name") as String? if (versionNameOverride != null) { versionName = versionNameOverride } // Should never be changed from 1 for local development, true value only gets set on deploy versionCode = 1 val versionCodeOverride = findProperty("android.injected.version.code") as String? if (versionCodeOverride != null) { versionCode = versionCodeOverride.toInt() } testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { useSupportLibrary = true } buildConfigField("boolean", "IS_STAFF", "false") } buildTypes { release { buildConfigField("boolean", "IS_DEBUG", "false") isMinifyEnabled = true isShrinkResources = true isDebuggable = false proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", ) firebaseCrashlytics { mappingFileUploadEnabled = true } } debug { buildConfigField("boolean", "IS_DEBUG", "true") isMinifyEnabled = false isShrinkResources = false isDebuggable = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro", ) firebaseCrashlytics { mappingFileUploadEnabled = false } } } compileOptions { sourceCompatibility = JavaVersion.toVersion(libs.versions.java.get()) targetCompatibility = JavaVersion.toVersion(libs.versions.java.get()) } kotlinOptions { jvmTarget = libs.versions.java.get() freeCompilerArgs += "-opt-in=androidx.compose.material3.ExperimentalMaterial3Api" freeCompilerArgs += "-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi" freeCompilerArgs += "-opt-in=com.google.accompanist.permissions.ExperimentalPermissionsApi" } buildFeatures { compose = true buildConfig = true } composeOptions { kotlinCompilerExtensionVersion = libs.versions.composeCompiler.get() } packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" excludes += "/META-INF/LICENSE.md" excludes += "META-INF/LICENSE-notice.md" } } androidResources { generateLocaleConfig = false } bundle { language { enableSplit = false } } flavorDimensions += listOf("environment") productFlavors { create("staff") create("prod") } } composeCompiler { stabilityConfigurationFile = rootProject.layout.projectDirectory.file("stability_config.conf") // uncomment to enable reports in app/build/compose_compiler // reportsDestination = layout.buildDirectory.dir("compose_compiler") // metricsDestination = layout.buildDirectory.dir("compose_compiler") } dependencies { val staffImplementation by configurations val prodImplementation by configurations implementation(project(":common-ui")) implementation(project(":common-data")) implementation(project(":common-db")) implementation(project(":common-networking")) implementation(project(":common-core-utils")) implementation(project(":common-media")) implementation(project(":common-i18n")) implementation(project(":common-analytics")) implementation(project(":common-res")) implementation(project(":common-mvi")) implementation(project(":common-gating")) implementation(project(":feature-tweaks")) implementation(project(":framework:auth:api")) implementation(project(":framework:auth:clerk")) implementation(project(":framework:release:api")) prodImplementation(project(":framework:release:playstore")) staffImplementation(project(":framework:release:firebase")) implementation(libs.androidx.camera.lifecycle) implementation(libs.androidx.camera.view) implementation(libs.androidx.camera.camera2) implementation(libs.androidx.lifecycle.process) implementation(libs.androidx.appcompat.resources) implementation(libs.review) implementation(libs.androidx.mediarouter) implementation(libs.firebase.messaging.ktx) implementation(libs.libphonenumber) implementation(libs.process.phoenix) implementation(libs.androidx.camera.viewfinder.core) implementation(libs.androidx.camera.viewfinder.view) implementation(libs.androidx.camera.viewfinder.compose) ksp(libs.dagger.hilt.compiler) implementation(platform(libs.firebase.bom)) implementation(libs.firebase.crashlytics) implementation(libs.firebase.analytics) implementation(libs.firebase.perf) implementation(libs.androidx.core.ktx) implementation(libs.androidx.lifecycle.runtime.ktx) implementation(libs.androidx.activity.compose) implementation(platform(libs.androidx.compose.bom)) implementation(libs.androidx.paging.compose) implementation(libs.dagger.hilt.android) implementation(libs.androidx.hilt.navigation.compose) implementation(libs.kotlinx.serialization.json) implementation(libs.kotlinx.collections.immutable) // BILLING implementation(libs.billing.ktx) implementation(libs.revenuecat.purchases) implementation(libs.revenuecat.purchases.ui) implementation(libs.androidx.material.icons.extended) implementation(libs.play.services.cast.framework) implementation(libs.androidx.browser) testImplementation(libs.junit) testImplementation(libs.kotlinx.coroutines.test) testImplementation(libs.mockk) testImplementation(libs.androidx.testing.core) testImplementation(libs.turbine) androidTestImplementation(libs.mockk.android) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.compose.ui.test.junit4) debugImplementation(libs.androidx.compose.ui.tooling) debugImplementation(libs.androidx.compose.ui.test.manifest) // PlayStore in-app review implementation(libs.review) implementation(libs.review.ktx) implementation(libs.hcaptcha) // Statsig implementation(libs.statsig) // Braze implementation(libs.braze.sdk) // Apps Flyer // implementation(libs.af.android.sdk) implementation(libs.installreferrer) implementation(libs.singular.sdk) implementation(libs.play.services.ads.identifier) // lokalise implementation(libs.lokalize) implementation(libs.androidx.work.ktx) implementation(libs.androidx.hilt.work) }