import java.io.FileInputStream import java.util.Properties val localProps = Properties().apply { val f = rootProject.file("local.properties") if (f.exists()) FileInputStream(f).use { load(it) } } plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) alias(libs.plugins.kotlin.compose) alias(libs.plugins.googleService) alias(libs.plugins.crashlytics) alias(libs.plugins.jetbrainsKotlinSerialization) alias(libs.plugins.ksp) alias(libs.plugins.hilt) id("kotlin-parcelize") } android { namespace = "com.jarica.compartirgastos" compileSdk = 35 ndkVersion = "27.2.12479018" defaultConfig { applicationId = "com.jarica.compartirgastos" minSdk = 24 targetSdk = 35 versionCode = 3 versionName = "1.0.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } signingConfigs { create("release") { val storeFilePath = localProps.getProperty("RELEASE_STORE_FILE") if (storeFilePath != null) { storeFile = rootProject.file(storeFilePath) storePassword = localProps.getProperty("RELEASE_STORE_PASSWORD") keyAlias = localProps.getProperty("RELEASE_KEY_ALIAS") keyPassword = localProps.getProperty("RELEASE_KEY_PASSWORD") } } } buildTypes { release { isMinifyEnabled = true isShrinkResources = true proguardFiles( getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro" ) signingConfig = signingConfigs.getByName("release") ndk { debugSymbolLevel = "SYMBOL_TABLE" } } } compileOptions { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = "11" } buildFeatures { compose = true buildConfig = true } } // Room exporta el esquema de cada versión a /app/schemas (uno por versión). // Sirve para (1) versionar el esquema en git y (2) escribir y testear migraciones reales. ksp { arg("room.schemaLocation", "$projectDir/schemas") } dependencies { // Hilt implementation(libs.dagger.hilt) implementation(libs.androidx.appcompat) implementation(libs.material) implementation(libs.androidx.activity) implementation(libs.ui.graphics) implementation(libs.androidx.compose.runtime) implementation(libs.androidx.compose.foundation.layout) implementation(libs.androidx.compose.ui.graphics) ksp(libs.dagger.hilt.android.compiler) ksp(libs.dagger.hilt.compiler) implementation(libs.hilt.navigation.compose) // Room implementation(libs.room.runtime) implementation(libs.room.ktx) ksp(libs.room.compiler) implementation(libs.androidx.runtime.livedata) //NAVIGATION implementation(libs.navigation.compose) implementation(libs.kotlin.serialization.json) //FIREBASE implementation(platform(libs.firebase)) implementation(libs.crashlytics) implementation(libs.firebase.config) implementation(libs.coroutines.play.services) 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.ui) implementation(libs.androidx.ui.graphics) implementation(libs.androidx.ui.tooling.preview) implementation(libs.androidx.material3) //DATASTOREPREFERENCE implementation(libs.dataStorePreference) //corrutinas implementation(libs.corrutinas) //AdMob implementation(libs.play.services.ads) //In-App Review implementation(libs.play.review) //Play Billing (compra para quitar anuncios) implementation(libs.billing.ktx) testImplementation(libs.junit) androidTestImplementation(libs.androidx.junit) androidTestImplementation(libs.androidx.espresso.core) androidTestImplementation(platform(libs.androidx.compose.bom)) androidTestImplementation(libs.androidx.ui.test.junit4) debugImplementation(libs.androidx.ui.tooling) debugImplementation(libs.androidx.ui.test.manifest) implementation(libs.accompanist.systemuicontroller) }