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 CODEVERSION 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.zipAlignfalse

那么输出文件真的对齐了吗?

编辑 (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 中的 JKS 文件位置未更新

更新到 Android Studio 4.1,flutter 插件和 dart 插件未安装

更新后android studio中的资源错误:未找到资源

Android Studio 2.2 来啦

Android的Studio 2.2 预览 - 新的UI设计师和约束布局

重要Android Studio 2.2 来啦