Android Studio 2.2 更新:未使用新的 Gradle 插件 2.2.0 生成对齐的 APK (zipAlign)
Posted
技术标签:
【中文标题】Android Studio 2.2 更新:未使用新的 Gradle 插件 2.2.0 生成对齐的 APK (zipAlign)【英文标题】:Android Studio 2.2 update: aligned APK (zipAlign) not generated using the new Gradle Plugin 2.2.0 【发布时间】: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。 【参考方案1】:根据本论坛:https://code.google.com/p/android/issues/detail?id=212591
“嗨,我们不再生成未对齐的 apk。作为提高速度的一部分,我们生成了已经对齐的 apk。因此,您只需获得最后一个,而不是两个。
@yair.kikielka 谢谢。”
【讨论】:
【参考方案2】:回复编辑(20160922):
那么输出文件真的对齐了吗?
是的!您可以使用
进行验证zipalign -c -v 4 路径/文件名
当你对 gradle version >=2.2 生成的 apk 文件运行这个命令时,你会得到 "Verification succesful" 。这意味着已经对齐。
【讨论】:
以上是关于Android Studio 2.2 更新:未使用新的 Gradle 插件 2.2.0 生成对齐的 APK (zipAlign)的主要内容,如果未能解决你的问题,请参考以下文章
更新到 Android Studio 4.1,flutter 插件和 dart 插件未安装