【发布时间】:2015-01-15 13:26:00
【问题描述】:
我想通过“abi”使用“splits”,但仅用于发布版本。这可能吗?我尝试使用 ext 变量和“def”变量,默认情况下也设置为 false。此变量在 buildTypes 中为 releaseWithLog(和发布)设置为 true。
但我不知道 Gradle 是如何工作的,因为当我将带有测试消息的 writeln() 添加到“debug”、“releaseWithLog”和“release”并运行构建时,所有消息都在输出中,所以这证实了我尽管我为调试而构建,但变量“splitsEnabled”设置为 true - 我希望调试值为“false”(因此不使用拆分进行调试)。
apply plugin: 'com.android.application'
android {
compileSdkVersion 19
buildToolsVersion '20.0.0'
ext {
splitsEnabled = false
}
defaultConfig {
...
}
buildTypes {
debug {
...
}
releaseWithLog {
...
splitsEnabled = true
}
release.initWith(releaseWithLog)
release {
...
}
}
...
splits {
abi {
println(splitsEnabled)
enable splitsEnabled
reset()
include 'x86', 'armeabi-v7a', 'armeabi'
exclude 'x86_64', 'mips64', 'arm64-v8a', 'mips'
universalApk true
}
}
...
【问题讨论】:
-
由于
splits是buildTypes的对等体,我怀疑不能在每种类型的基础上进行拆分,但我很高兴被证明是错误的。但请记住,enable splitsEnabled在选择构建类型之前运行良好。build.gradle中的语句主要是构建对象模型。这不是解释脚本。只有在构建对象模型之后,Gradle 才会开始确定正在运行的任务所需的构建类型。 -
我也很感兴趣 - 很想节省构建时间并在 Debug 中构建一个拆分
-
我最终回到了旧的 ABI 构建方式来解决这个问题! twitter.com/silentnuke/status/619501266646003713
标签: android android-gradle-plugin