引用一段官方原文:Kotlin 脚本 (KTS) 比 Groovy 更适合用于编写 Gradle 脚本,因为采用 Kotlin 编写的代码可读性更高,并且 Kotlin 提供了更好的编译时检查和 IDE 支持。Android Gradle 插件 4.0 支持在 Gradle build 配置中使用 KTS。具体概念参考官方文档。
ndk替换
ndk {
// 设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
abiFilters "armeabi-v7a", "arm64-v8a" , 'armeabi' , 'x86', 'armeabi-v7a', 'x86_64', 'arm64-v8a'
}
替换为
ndk {
// 设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
//noinspection ChromeOsAbiSupport
abiFilters+= listOf("armeabi-v7a","arm64-v8a","armeabi","x86","x86_64")
}
设置发布apk名称
android.applicationVariants.configureEach { variant ->
variant.outputs.configureEach {
// def date = new Date().format("yyyy-MM-dd hh.mm" , TimeZone.getTimeZone("Asia/Shanghai"))
def dateFormat = new SimpleDateFormat("yyyyMMddHHmm")
dateFormat.setTimeZone(TimeZone.getTimeZone("Asia/Shanghai"))
def date=dateFormat.format(new Date())
// def date = new Date().format("yyyy-MM-dd hh.mm", TimeZone.getTimeZone("GMT+08"))
if (variant.buildType.name == 'debug') {
outputFileName = "你的应用名称-${versionName}-${date}-debug.apk"
}
if (variant.buildType.name == 'release') {
outputFileName = "你的应用名称-${versionName}-${date}-release.apk"
}
}
}
替换为
applicationVariants.all {
val variant = this
variant.outputs
.map { it as com.android.build.gradle.internal.api.BaseVariantOutputImpl }
.forEach { output ->
val dateFormat = SimpleDateFormat("yyyyMMddHHmm")
dateFormat.timeZone = TimeZone.getTimeZone("Asia/Shanghai")
val date=dateFormat.format(Date())
val outputFileName = "你的应用名称-${variant.baseName}-${variant.versionName}-${variant.versionCode}-${date}.apk"
output.outputFileName = outputFileName
}
}
signingConfigs
signingConfigs {
release {
//签名文件路径
storeFile file("..\\key.jks")
//签名文件密码
storePassword "xxxxxx"
//别名
keyAlias "xxxxxx"
//别名密码
keyPassword "xxxxxx"
}
}
替换为
signingConfigs {
register("release") {
//签名文件路径
storeFile = file("..\\key.jks")
//签名文件密码
storePassword = "xxxxxx"
//别名
keyAlias = "xxxxxx"
//别名密码
keyPassword = "xxxxxx"
}
}
buildTypes
buildTypes {
release {
signingConfig signingConfigs.release
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.release
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
替换为
buildTypes {
release {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
debug {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = true
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
compileOptions
compileOptions {
sourceCompatibility JavaVersion.VERSION_17
targetCompatibility JavaVersion.VERSION_17
}
替换为
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
}
参考: