import java.io.File import java.util.Properties plugins { id("com.android.application") } val releaseSigningProperties = Properties() val releaseSigningPropertiesFile = File( System.getProperty("user.home"), ".config/android/release-signing.properties" ) if (releaseSigningPropertiesFile.isFile) { releaseSigningPropertiesFile.inputStream().use(releaseSigningProperties::load) } val releaseKeystorePath = releaseSigningProperties.getProperty("storeFile") val releaseKeyAlias = releaseSigningProperties.getProperty("keyAlias") val releaseStorePassword = providers.gradleProperty("androidReleaseStorePassword").orNull val releaseKeyPassword = providers.gradleProperty("androidReleaseKeyPassword").orNull val hasSharedReleaseSigningConfig = !releaseKeystorePath.isNullOrBlank() && !releaseKeyAlias.isNullOrBlank() val hasSharedReleaseSigningSecrets = !releaseStorePassword.isNullOrBlank() && !releaseKeyPassword.isNullOrBlank() val requestedTaskNames = gradle.startParameter.taskNames.map(String::lowercase) val releaseBuildRequested = requestedTaskNames.any { "release" in it } if (releaseBuildRequested && (!hasSharedReleaseSigningConfig || !hasSharedReleaseSigningSecrets)) { error( "Release signing is not configured. " + "Create ~/.config/android/release-signing.properties and provide " + "androidReleaseStorePassword/androidReleaseKeyPassword." ) } android { namespace = "se.ajpanton.navbuttons" compileSdk = 36 dependenciesInfo { includeInApk = false includeInBundle = false } signingConfigs { if (hasSharedReleaseSigningConfig && hasSharedReleaseSigningSecrets) { create("release") { storeFile = file(releaseKeystorePath!!) storePassword = releaseStorePassword keyAlias = releaseKeyAlias keyPassword = releaseKeyPassword } } } defaultConfig { applicationId = "se.ajpanton.navbuttons" minSdk = 35 targetSdk = 35 versionCode = 1 versionName = "0.1" } buildTypes { release { isMinifyEnabled = true isShrinkResources = true if (hasSharedReleaseSigningConfig && hasSharedReleaseSigningSecrets) { signingConfig = signingConfigs.getByName("release") } proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro") } } packaging { resources { merges += "META-INF/xposed/*" } } compileOptions { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } } dependencies { implementation("androidx.annotation:annotation:1.7.1") implementation("org.lsposed.hiddenapibypass:hiddenapibypass:6.1") compileOnly("io.github.libxposed:api:101.0.0") testImplementation("junit:junit:4.13.2") androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") }