问题 Android Studio 2.2更新:使用新的Gradle Plugin 2.2.0生成的对齐APK(zipAlign)


在将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)。

但是使用代码(使用重命名de输出文件名) 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)

感谢结尾0421 并建议使用构建工具检查apk:

zipalign -c -v 4 path / fileName

现在 我现在已正确生成APK 和zipalign命令syays:

验证成功


10866
2017-09-20 10:06


起源

我验证了output.zipalign始终为null,因此if条件得到满足,并且生成的apk名称包含后缀“_unaligned.apk”(根据OP中的代码)。但是生成的文件是zipaligned。 - drulabs


答案:


根据这个论坛: https://code.google.com/p/android/issues/detail?id=212591

“嗨,我们不再生成未对齐的apks。作为速度改进的一部分,我们生成了已经对齐的apk。所以,而不是两个,你只需得到最后一个。

@ yair.kikielka谢谢。“


7
2017-09-21 09:17





回复编辑(20160922):

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

是的!您可以验证使用

zipalign -c -v 4 path / fileName

当您在由gradle version> = 2.2生成的apk文件上运行此命令时,您将获得“Verification successcesful”。这意味着已经对齐了。


4
2017-10-12 16:45