import com.android.build.gradle.AppExtension import com.android.build.gradle.LibraryExtension import java.io.ByteArrayOutputStream plugins { alias(libs.plugins.agp.app) apply false alias(libs.plugins.jetbrains.kotlin.android) apply false alias(libs.plugins.android.library) apply false } fun String.execute(currentWorkingDir: File = file("./")): String { val byteOut = ByteArrayOutputStream() project.exec { workingDir = currentWorkingDir commandLine = split("\\s".toRegex()) standardOutput = byteOut } return String(byteOut.toByteArray()).trim() } val gitCommitCount = "git rev-list HEAD --count".execute().toInt() val gitCommitHash = "git rev-parse --verify --short HEAD".execute() // also the soname val moduleId by extra("tricky_store") val moduleName by extra("Tricky Store") val verName by extra("v1") val verCode by extra(gitCommitCount) val commitHash by extra(gitCommitHash) val abiList by extra(listOf("arm64-v8a", "x86_64")) val androidMinSdkVersion by extra(31) val androidTargetSdkVersion by extra(34) val androidCompileSdkVersion by extra(34) val androidBuildToolsVersion by extra("34.0.0") val androidCompileNdkVersion by extra("27.0.11902837") val androidSourceCompatibility by extra(JavaVersion.VERSION_17) val androidTargetCompatibility by extra(JavaVersion.VERSION_17) tasks.register("Delete", Delete::class) { delete(rootProject.buildDir) } fun Project.configureBaseExtension() { extensions.findByType(AppExtension::class)?.run { namespace = "io.github.a13e300.tricky_store" compileSdkVersion(androidCompileSdkVersion) ndkVersion = androidCompileNdkVersion buildToolsVersion = androidBuildToolsVersion defaultConfig { minSdk = androidMinSdkVersion targetSdk = androidCompileSdkVersion versionCode = verCode versionName = verName } compileOptions { sourceCompatibility = androidSourceCompatibility targetCompatibility = androidTargetCompatibility } } extensions.findByType(LibraryExtension::class)?.run { namespace = "io.github.a13e300.tricky_store" compileSdk = androidCompileSdkVersion ndkVersion = androidCompileNdkVersion buildToolsVersion = androidBuildToolsVersion defaultConfig { minSdk = androidMinSdkVersion } lint { abortOnError = true } compileOptions { sourceCompatibility = androidSourceCompatibility targetCompatibility = androidTargetCompatibility } } } subprojects { plugins.withId("com.android.application") { configureBaseExtension() } plugins.withId("com.android.library") { configureBaseExtension() } plugins.withType(JavaPlugin::class.java) { extensions.configure(JavaPluginExtension::class.java) { sourceCompatibility = androidSourceCompatibility targetCompatibility = androidTargetCompatibility } } }