Android Studio 发布版本不 zipaligning

标签 android android-studio google-play apk android-studio-2.2

我在将我的 .apk 上传到 Google Play 商店时遇到问题。直到上周,我之前能够上传多个不同的构建,但今天我收到错误消息,我应该先对我的文件进行 zipalign。

编辑:通常情况下,我能够通过使用 Android Studios 内置的“生成签名 APK”向导来生成 AppStore 接受的签名和 zipaligned .apk。这在今天不起作用,并导致了以下情况:

我尝试了以下方法:

    Android studio 生成的app-release.apk 的
  • 手动zipalign。当我尝试此操作时,最后出现错误“VERIFICATION FAILED”。一些谷歌搜索说提供到您具有写访问权限的位置的完整路径很重要,所以我尝试使用特定路径进行操作,但无济于事:

    ./zipalign -v -f 4 /Users/<username>/git/<projectname>/app/app-release.apk /Users/<username>/git/<projectname>/app/aligned.apk

  • 然后我尝试下载 APK Signer 1.8.5 并使用它来压缩 .apk - 看吧,成功了!它创建了一个对齐的 apk,我可以使用 Android Studio 自己的 zipalign 工具验证它

    ./zipalign -c -v 4 app-release_ALIGNED.apk

    和 APK 签名者本身。但是,现在上传时出现错误:

    Failed to run aapt dump badging: W/ResourceType(208730): Bad resource table: header size 0x80a3 or total size 0x80b50000 is larger than data size 0x7bcc4 ERROR: dump failed because the resource table is invalid/corrupt.

    这个,我一直没能找到解决办法。

  • 然后我尝试重新创建环境 我之前能够通过恢复到之前的提交/构建以及从 AS 2.2 预览版 3 恢复到 AS2.2 来上传 APK预览 2,但又一次 - 运气不好。

  • 最后,我尝试显式添加

    zipAlignEnabled true

    我在 Gradle 中的发布配置,但这也没有帮助。

我没有建议,希望有人能提供帮助? :-) 谢谢

最佳答案

终于,我发现了!

我在根目录 build.gradle 中偶然发现了这一行:

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

Android Studio 2.2 预览版 3 需要此 gradle 构建工具升级,而我只是一如既往地按下“确定,继续”。我很好奇,并试图将其改回上次有效的状态,

classpath 'com.android.tools.build:gradle:2.2.0-alpha2'

并改为在 Android Studio 预览版 2 中构建项目 - 瞧,它成功了!似乎 alpha3 版本存在错误。

我希望这对某人有所帮助。我知道我是一个快乐的星期五露营者,这是肯定的! :-)

self 提醒:无论我的 friend 和同事如何插入, future 生产应用程序都不要依赖金丝雀构建。

关于Android Studio 发布版本不 zipaligning,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37746977/

相关文章:

android - Google Play 开发者分发协议(protocol)。在哪里查看并同意

android - 处理 "cannot find symbol class"错误

android - 单击单个项目选择回收站 View 中的所有项目

android - 如何通过 NDK 访问 Android Lollipop DocumentFile 文件?

android - 如何使用接近传感器和音频管理器减少Android设备中的音量

react-native - 访问 Expo SQLite 数据库的物理存储

android - 错误 :(1, 0) 插件:找不到 'com.android.application'

java - 安卓 Java : ArraylistMultiMap last value associated with the key is not getting deleted

android - 如何检测设备上是否存在 Android Market?

Android:禁止在平板电脑上安装应用程序