Android Studio - 如何压缩对齐 apk

Posted

技术标签:

【中文标题】Android Studio - 如何压缩对齐 apk【英文标题】:Android Studio - How to ZipAlign apk 【发布时间】:2014-02-10 03:14:26 【问题描述】:

我已经使用 android Studio 创建了一个签名的 apk,现在我将对其进行压缩,我已经阅读了以下内容: http://developer.android.com/tools/help/zipalign.html 但我仍然不确定在哪里添加代码行,是在 Gradle 文件中,我在文件中的什么位置添加代码行?

【问题讨论】:

一个问题,我们可以压缩已经签名的apk吗?我正在手动操作,但安装时出错,任何建议here。 @CoDe,是的,你可以。 link 【参考方案1】:

在主模块的 build.gradle 文件中,您可以拥有多种构建类型以及调试类型。

您可以在任何 buildType 中指定 zipAlign 特性,方法是使用

buildTypes 

     release 
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        zipAlignEnabled true
    

注意:旧版本使用zipAlign,而不是zipAlignEnabled

无论您是否定义,始终为调试和发布 buildTypes 创建默认 gradle 任务。 Debug 用于调试目的和发布签名应用程序(构建 >> 生成签名 Apk)。您必须为发布版本定义您的签名配置。

检查下面提到的链接中的构建类型部分,了解您可以在构建类型中使用的其他属性

http://tools.android.com/tech-docs/new-build-system/user-guide

【讨论】:

请注意,随着 Android Studio 1.0 的发布,runProguard 应更改为 minifyEnabled 我添加了 zipAlignEnabled true,但开发者控制台一直告诉我 apk 文件不是 zip 对齐的。 注意,正确zip对齐的文件不在buikd/output/apk目录下,而是直接在app目录下。我已经花时间在这上面了! @pyus13 有人知道 zipAlign 的默认值是什么吗?如果我们不写它,那么它是假的或真的。 我试过 zipAlignEnabled false,但 apk 仍然是 zip 对齐的。【参考方案2】:

如果您从 Android Studio 创建了一个.apk 文件(发布模式),则您的 APK 已经对齐。 zipalign 步骤是 Build Process in Android Studio 的一部分。

您可以通过以下方式检查 APK:

zipalign -c -v 4 APP.apk

要对齐 APK,请运行:

zipalign -v 4 APP.apk ZIPALIGNED_APP.apk

【讨论】:

Android Studio 默认为我创建非 zip 对齐的发布模式 .apk 文件!【参考方案3】:

设置类路径 'com.android.tools.build:gradle:2.2.0-alpha3' 到

类路径'com.android.tools.build:gradle:2.1.2'

【讨论】:

任何时候。 :) @herrmarte【参考方案4】:

zipalign 在ADT/sdk/build-tools/android4.4W

    复制android4.4W文件夹

    粘贴到yourproject/platforms/android/build/outputs/apk

    现在,复制yourkey.keystore and your project.apk

    将它们粘贴到android4.4W 完整路径中

    yourproject/platforms/android/build/outputs/apk/android4.4W

    那么,$ zipalign -v 4 project.apk wowdone.apk

更多详情请访问:http://prehow.com/convert-wordpress-to-android-app-tutorial.html

就是这样,希望这个答案对你有帮助。

【讨论】:

我没有在指定位置找到任何android4.4W文件夹。【参考方案5】:

要完成完整的签名过程,请执行以下步骤。 (构建签名的 apk 后手动对齐 Zip)

第 0 步:在签署 apk 之前,在您的应用程序 module.gradle 文件中添加代码:将 zippAlignEnable 和 minifyEnable 设置为 true。

buildTypes 
        release 
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            //zipAlignEnabled true 
           //uncomment for automatically zip aligned by studio
        
    

第 1 步: 签署您的 APK,发布模式 more info

第 2 步: 查找位置:.\your sdk\build-tools\24.0.0

第 3 步:复制您的 .jks 密钥库文件和签名的 APK,然后在此处粘贴

第 4 步: 打开命令提示符(适用于 windows)。 设置路径。您所在的位置 粘贴东西。

第五步:输入命令:zipalign -f -v 4 infile.apk outfile.apk

这里的 infile 是我签名的 apk,outfile 是上传到 Play 商店的文件。

完成...!

如果 cmp 将得到 BUILD 失败。

See here for more about error(Zipalign 构建失败)执行以下操作

1) 重启并打开 Android Studio,

2) 关闭cmd,然后重新打开。

3) 现在做上面的过程。

编辑: resources.arsc 发现 BAD-1 错误

 set classpath 'com.android.tools.build:gradle:2.2.0-alpha3'

classpath 'com.android.tools.build:gradle:2.1.2'

发布愉快 :)

【讨论】:

Mac 用户:5) ./zipalign -f -v 4 infile.apk outfile.apk 我尝试了同样的方法,但在安装 align_apk 时出现错误,请检查this。【参考方案6】:

这对我有用:

    将最后一个版本文件夹 22.0.1 复制到 yourproject/platforms/android/build/outputs/apk (就像我的最后一个版本是 22.0.1 版本)

    将 yourkey.keystore 和 project.apk 复制到此版本文件夹 22.0.1。

    在路径 yourproject/platforms/android/build/outputs/apk/22.0.1 下,运行以下命令:

    zipalign -v 4 name_of_current.apk name_of_wanted.apk
    

    name_of_wanted.apk 应位于 yourproject/platforms/android/build/outputs/apk/22.0.1 下

【讨论】:

以上是关于Android Studio - 如何压缩对齐 apk的主要内容,如果未能解决你的问题,请参考以下文章

Android Studio 视图对齐方式

如何在Linux系统下安装Android Studio

Android Studio Gradle 3.6.0之后apk变大了很多,约等于2倍的原因

Android Studio Gradle 3.6.0之后apk变大了很多,约等于2倍的原因

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

android studio: 对齐成员变量及链式方法