- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在安卓中,ZipAlign用于在 4 字节边界上对齐资源以加速资源加载:
The resource-handling code in Android can efficiently access resources when they're aligned on 4-byte boundaries by memory-mapping them. But for resources that are not aligned (i.e. when zipalign hasn't been run on an apk), it has to fall back to explicitly reading them—which is slower and consumes additional memory.
运行工具后,可以使用命令验证对齐。
zipalign -c -v 4 application.apk
这会生成一份报告并说明是否存在错误。就我而言,此报告表明没有对齐错误,但第一个数字(我假设它是资源在最终 APK 中的位置)似乎表明某些资源未在 4 字节边界上对齐。
这是这份报告的开头:
Verifying alignment of APP-signed-aligned.apk (4)...
50 META-INF/MANIFEST.MF (OK - compressed)
24245 META-INF/KEYS.SF (OK - compressed)
49830 META-INF/KEYS.DSA (OK - compressed)
50683 AndroidManifest.xml (OK - compressed)
53096 assets/Assets/DB_Normal.db (OK)
595425 assets/Assets/Common/DM/Structures.xml (OK - compressed)
我错过了什么?第一个数字是资源的位置吗?例如 Structures.xml
似乎位于 595425
,这不是 4 字节的倍数。
最佳答案
对齐对于压缩数据无关紧要。
想法是能够对未压缩的 block 进行内存映射并直接访问它们。比方说,如果您的 PNG 解码器尝试以 32 位整数的形式访问数据,并且您有一个仿真器模拟最坏情况的 ARM CPU 行为并在您进行未对齐的 32 位访问时抛出 SIGBUS,那么您不能简单地如果未对齐,则访问图像数据。
zlib inflate 代码不关心数据是否对齐,因此 zipalign 不关心对齐压缩数据。
关于android - ZipAlign 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19543520/
我最近问自己,为什么在 Android 中我们必须先签名然后然后 zipalign apk。我搜索了一些背景信息,这些过程在技术上是如何工作的。我还是有点不高兴,因为这些描述并没有真正从技术上解释为什
应用程序在 zipaligned 之前运行良好。签名后,该应用无法安装在我的手机或平板电脑上。我把它上传到 playstore 。它不显示错误,但支持的设备显示 0。有什么问题吗 ?这是 manife
我想构建一个 gradle Exec 任务,它将在我签名的 apk 文件上运行 android 的 zipalign,然后验证对齐。 最佳答案 变量: ANDROID_HOME - android S
在安卓中,ZipAlign用于在 4 字节边界上对齐资源以加速资源加载: The resource-handling code in Android can efficiently access re
我写了一个安卓应用。我在 Windows 7 的 cmd 上键入 zipalign myApp.apk,我得到: zipalign' is not recognized as an internal
我已经有一个未签名的发行版 apk,我正在尝试在我的 mac 上签名。在最后一步,它建议对已签名的 apk 进行 zipalign,但 mac 没有 zipalign。 我做了 'brew searc
我正在尝试压缩我的应用程序,但总是收到错误消息:“验证失败”。没有更多信息,只有一些带有 (BAD - 1) 的 *.png 文件,但我不知道这是什么意思。 谁能告诉我问题出在哪里?谢谢 最佳答案 我
我在将我的 .apk 上传到 Google Play 商店时遇到问题。直到上周,我之前能够上传多个不同的构建,但今天我收到错误消息,我应该先对我的文件进行 zipalign。 编辑:通常情况下,我能够
我是一名学生程序员,我正在继续一个由我之前的其他学生开始的 Android 项目。我的问题是当我尝试在 Android Studio 中执行 Android 应用程序时出现错误。您可以在下面看到错误消
Gradle zipAlign 任务似乎对我不起作用,不确定我做错了什么。我试过包括 zipAlign 任务,但不包括它,但它似乎没有什么不同。我的 gradle 脚本吐出一个“发布”版本,但当我尝试
尝试在 Eclipse 中导出已签名的 apk 时出现此错误 运行 zipalign 时出错:打不开 作为 zip 存档 我已经运行了 Help->Check for Updates 以确保安装了最新
在 Xamarin 中点击播放按钮时,我收到此错误: C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.tar
我目前正在从 V1 签名 ( jarsigner ) 升级到 V2 签名 ( apksigner )。 Jarsigner 一直为我工作没问题,但是我遇到了 zipalign 的问题在我的 build
zipalign -v 4 input.apk output.apk 多次更改应用程序,输入和输出的相应 md5 始终相同,因此它们是同一个文件。这个工具不是应该执行某些优化,从而修改文件吗? 最佳答
我正在尝试使用命令行在 Ubuntu 14.04 LTS 系统上压缩“input.apk”文件,因为我还没有访问源代码的权限。如果我没记错的话,我应该可以使用以下命令来完成此操作 zipalign [
我正在尝试将我的 sencha 应用程序打包到 android 并且我正在使用 senchaCommandv3 和 sencha-touch2.1rc2 库。 在调试配置的命令提示符中 Sencha
当我尝试在 apk 上运行 Zipalign 时,我收到错误 "Command not found" 我不太熟悉在 MAC 上使用终端命令,但我已经导航到 SDK/Tools 文件夹并运行以下命令:
zipalign 正在手动工作,但在 Jenkins 后期构建下失败。我在 Ubuntu Aws ec2 实例上运行它。请有人可以帮我解决这个问题。 Jenkins 输出: BUILD SUCCESS
我正在尝试发布我的 Ionic 应用程序。但是,当尝试使用以下命令对 apk 进行 zipalign 时 /Users/bertcarremans/Library/Android/sdk/build-
首先让我说这个问题已经被问过几次了,但是对他们有用的解决方案对我没有用,所以我的问题略有不同。 我正在使用 ionic 构建我的第一个应用程序,我正在关注 this教程。我已经完成了本教程,只是卡在了
我是一名优秀的程序员,十分优秀!