import java.util.Properties plugins { // Android Application? id("com.android.application") // Support for kotlin in Android kotlin("android") // Data Injection id("dagger.hilt.android.plugin") // Safe Navigation id("androidx.navigation.safeargs") // OSS Licenses id("com.google.android.gms.oss-licenses-plugin") // keep at bottom kotlin("kapt") } // The application ID val appID = "com.dzeio.openhealth" // the application supported languages val locales = listOf("en", "fr") // minimum application required SDK version to run val sdkMin = 21 // target SDK version val sdkTarget = 33 android { signingConfigs { create("release") { try { val keystoreProperties = Properties().apply { load(rootProject.file("./keystore.properties").reader()) } if (keystoreProperties.isNotEmpty()) { storePassword = keystoreProperties["storePassword"] as String keyPassword = keystoreProperties["keyPassword"] as String keyAlias = keystoreProperties["keyAlias"] as String storeFile = file(keystoreProperties["storeFile"] as String) } } catch (_: Exception) {} } } compileSdk = sdkTarget defaultConfig { // App ID applicationId = appID // Android 5 Lollipop minSdk = sdkMin // Android 12 targetSdk = sdkTarget // Semantic Versioning versionName = "0.1.0" versionCode = 1 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" kapt { arguments { arg("room.schemaLocation", "$projectDir/schemas") } } buildConfigField( "String[]", "LOCALES", "new String[]{\"" + locales.joinToString("\",\"") + "\"}" ) resourceConfigurations += locales } buildTypes { getByName("release") { // Slimmer version isMinifyEnabled = true isDebuggable = true proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") signingConfig = signingConfigs.getByName("release") } getByName("debug") { proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") applicationIdSuffix = ".dev" versionNameSuffix = "-dev" isDebuggable = true // make it debuggable isRenderscriptDebuggable = true // Optimization Level renderscriptOptimLevel = 0 } } // Compile using JAVA 8 compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } // Enable View Binding and Data Binding buildFeatures { viewBinding = true dataBinding = true } namespace = appID } dependencies { // Dzeio Charts implementation(project(":charts")) // Dzeio Crash Handler implementation("com.dzeio:crashhandler:1.0.1") // Core dependencies implementation("androidx.core:core-ktx:1.9.0") implementation("androidx.appcompat:appcompat:1.7.0-alpha01") implementation("javax.inject:javax.inject:1") implementation("com.google.android.material:material:1.8.0-beta01") implementation("androidx.constraintlayout:constraintlayout:2.1.4") implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.5.1") implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1") // Coroutines implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.4") // Settings implementation("androidx.preference:preference-ktx:1.2.0") // DataStore implementation("androidx.datastore:datastore:1.0.0") // Navigation implementation("androidx.navigation:navigation-fragment-ktx:2.5.3") implementation("androidx.navigation:navigation-ui-ktx:2.5.3") // Paging implementation("androidx.paging:paging-runtime:3.1.1") implementation("androidx.paging:paging-runtime-ktx:3.1.1") // Services implementation("androidx.work:work-runtime-ktx:2.7.1") // Tests testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") // Graph implementation("com.github.PhilJay:MPAndroidChart:v3.1.0") // Hilt implementation("com.google.dagger:hilt-android:2.44.2") kapt("com.google.dagger:hilt-compiler:2.44.2") // ROOM implementation("androidx.room:room-runtime:2.4.3") kapt("androidx.room:room-compiler:2.4.3") implementation("androidx.room:room-ktx:2.4.3") testImplementation("androidx.room:room-testing:2.4.3") // Futures implementation("com.google.guava:guava:31.1-jre") implementation("androidx.concurrent:concurrent-futures:1.1.0") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-guava:1.6.4") // OSS Licenses implementation("com.google.android.gms:play-services-oss-licenses:17.0.0") // Retrofit (Open Food Fact) implementation("com.squareup.retrofit2:retrofit:2.9.0") implementation("com.squareup.retrofit2:converter-gson:2.9.0") implementation("com.squareup.okhttp3:logging-interceptor:4.9.1") }