生成从 Android Studio 签名的 .apk 时,zipalign 会自动执行吗?

Posted

技术标签:

【中文标题】生成从 Android Studio 签名的 .apk 时,zipalign 会自动执行吗?【英文标题】:Does zipalign execute automatically when a .apk is generated as signed from Android Studio? 【发布时间】:2015-09-02 04:41:16 【问题描述】:

我想知道为 release 生成签名 .apk 的方法是否也对 apk 进行压缩对齐。在 android 页面 (http://developer.android.com/tools/publishing/app-signing.html#studio) 的方向上,尚不清楚 zipalign 是否是不同的步骤。

谢谢!

【问题讨论】:

【参考方案1】:

您可以在 build.gradle 文件中定义构建类型。

buildTypes 

     debug 
        storeFile file("debug.keystore")
     

     release 
        zipAlignEnabled true
     

调试 apk 时使用调试配置,创建发布 apk 时使用发布配置。

如果您在发布时将 zipAlignEnabled 设置为 true,则 apk 将被压缩对齐。如果不指定,则发布时默认值为 true,apk 将自动进行 zipalign。对于调试,默认值为 false。

详细了解构建类型和您可以在此处设置的其他可能属性:http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Types

【讨论】:

所以我已经从 android studio 生成了一个带有密码和 KeyStrore 的签名 .apk ,发布的 .apk 已保存在一个路径中,所以如果我是正确的 .apk 是 singed 和 zipaligned 吗? 是的。如果您在导出 apk 时在向导中选择“发布”作为构建类型。 我刚刚完成了构建 --> 生成 singed apk 并按照向导进行操作!我想我选择了 release !那么我准备好发布应用了吗? 是的!你应该在这里阅读整个过程:developer.android.com/tools/publishing/app-signing.html#studio【参考方案2】:

Android 构建工具可以为您处理这个问题。 Android Studio 会自动对齐您的 APK。

使用以下命令确认existing.apk的对齐方式:

zipalign -c -v <alignment> existing.apk

是一个定义字节对齐边界的整数。这必须始终为 4(提供 32 位对齐),否则它实际上什么都不做。

标志:

-f : 覆盖现有的 outfile.zip -v :详细输出 -p : outfile.zip 应该对 infile.zip 中的所有共享对象文件使用相同的页面对齐方式 -c : 确认给定文件的对齐方式

Zipalign

【讨论】:

以上是关于生成从 Android Studio 签名的 .apk 时,zipalign 会自动执行吗?的主要内容,如果未能解决你的问题,请参考以下文章

androidstudio项目签名打包生成apk出错整理

Android Studio系列-签名打包

android studio 项目初期生成jks和后期生成jks一样吗?

Android Studio开发Android应用如何签名

Android studio怎么生成签名apk

android studio怎样生成apk文件