【发布时间】:2017-01-28 05:05:26
【问题描述】:
在将 Android Studio 更新到 2.2 版后,我还获得了 Gradle 插件的更新(它是 2.1.3):
...
classpath 'com.android.tools.build:gradle:2.2.0'
...
我看到未对齐的变体 APK 文件,但不再生成其他变体。我尝试启用 zip 对齐:
buildTypes {
release {
minifyEnabled false
zipAlignEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
debug {
applicationIdSuffix '.debug'
}
}
但没有任何改变。有什么想法吗?
我“解决”了转回
classpath 'com.android.tools.build:gradle:2.1.3'
在项目级别build.gradle。
编辑 (20160922):
感谢 Fayder Florez 的回复。没错,构建环境现在只生成一个 apk (https://code.google.com/p/android/issues/detail?id=212591)。
但使用代码(使用VERSION CODE和VERSION NAME重命名输出文件名):
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
def padVersionCode = variant.versionCode.toString();
padVersionCode = padVersionCode.padLeft(5, '0')
def newApkName = "${output.baseName}_${padVersionCode}-${variant.versionName}"
if (!output.zipAlign)
newApkName = newApkName + "_unaligned"
newApkName = newApkName + ".apk"
output.outputFile = new File(output.outputFile.parent, newApkName)
}
}
我将“_unaligned”附加到输出文件名,所以我认为output.zipAlign 是false。
那么输出文件真的对齐了吗?
编辑 (20161013)
感谢ending0421,建议使用构建工具检查apk:
zipalign -c -v 4 路径/文件名
现在我现在已经正确生成了 APK 并且 zipalign 命令 syays:
验证成功
【问题讨论】:
-
我验证了 output.zipalign 始终为空,因此满足 if 条件并且生成的 apk 名称包含后缀“_unaligned.apk”(根据 OP 中的代码)。但是生成的文件是 zipaligned。
标签: android gradle gradle-plugin android-studio-2.2 zipalign