import java.io.FileInputStream import java.util.Properties import com.android.build.api.variant.FilterConfiguration.FilterType.* plugins { id("com.android.application") id("kotlin-android") // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. id("dev.flutter.flutter-gradle-plugin") } val localProperties = Properties() val localPropertiesFile = rootProject.file("local.properties") if (localPropertiesFile.exists()) { localPropertiesFile.reader(Charsets.UTF_8).use { reader -> localProperties.load(reader) } } var flutterVersionCode = localProperties.getProperty("flutter.versionCode") ?: "1" var flutterVersionName = localProperties.getProperty("flutter.versionName") ?: "1.0" val keystoreProperties = Properties() val keystorePropertiesFile = rootProject.file("key.properties") if (keystorePropertiesFile.exists()) { keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } android { namespace = "dev.imranr.obtainium" compileSdk = flutter.compileSdkVersion ndkVersion = "27.0.12077973" // 'flutter.ndkVersion' produces warnings (TODO can/should we switch back?) compileOptions { isCoreLibraryDesugaringEnabled = true sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 } kotlinOptions { jvmTarget = JavaVersion.VERSION_11.toString() } defaultConfig { applicationId = "dev.imranr.obtainium" // You can update the following values to match your application needs. // For more information, see: https://flutter.dev/to/review-gradle-config. minSdk = 24 targetSdk = flutter.targetSdkVersion versionCode = flutterVersionCode.toInt() versionName = flutterVersionName } flavorDimensions("flavor") productFlavors { create("normal") { dimension = "flavor" applicationIdSuffix = "" } create("fdroid") { dimension = "flavor" applicationIdSuffix = ".fdroid" } } signingConfigs { create("release") { keyAlias = keystoreProperties["keyAlias"].toString() keyPassword = keystoreProperties["keyPassword"].toString() storeFile = keystoreProperties["storeFile"]?.let { file(it) } storePassword = keystoreProperties["storePassword"].toString() } } buildTypes { getByName("release") { signingConfig = signingConfigs.getByName("release") } getByName("debug") { applicationIdSuffix = ".debug" versionNameSuffix = "-debug" } } } val abiCodes = mapOf("x86_64" to 1, "armeabi-v7a" to 2, "arm64-v8a" to 3) androidComponents { onVariants { variant -> variant.outputs.forEach { output -> val name = output.filters.find { it.filterType == ABI }?.identifier val baseAbiCode = abiCodes[name] if (baseAbiCode != null) { output.versionCode.set(baseAbiCode + ((output.versionCode.get() ?: 0) * 10)) } } } } dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5") } flutter { source = "../.." }