Zipalign:一个简单的优化
Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。因此,这种方式能够让应用程序和整个系统运行得更快。我们强烈推荐在新的和已经发布的程序上使用zipalign工具来得到优化后的版本——即使你的程序是在老版本的Android平台下开发的。这篇文章将描述zipalign如何有助于性能改善以及如何使用它来优化你的app。
在Android中,每个应用程序中储存的数据文件都会被多个进程访问:安装程序会读取应用程序的manifest文件来处理与之相关的权限问题;Home应用程序会读取资源文件来获取应用程序的名和图标;系统服务会因为很多种原因读取资源(例如,显示应用程序的Notification);此外,就是应用程序自身用到资源文件。
在Android中,当资源文件通过内存映射对齐到4字节边界时,访问资源文件的代码才是有效率的。但是,如果资源本身没有进行对齐处理(未使用zipalign工具),它就必须回到老路上,显式地读取它们——这个过程将会比较缓慢且会花费额外的内存。
对于应用程序开发者来说,这种显式读取方式是相当便利的。它允许使用一些不同的开发方法,包括正常流程中不包含对齐的资源,因此,这种读取方式具有很大的便利性(本段的原始意思请参考原文)。
遗憾的是,对于用户来说,这个情况恰恰是相反的——从未对齐的apk中读取资源比较慢且花费较多内存。最好的情况是,Home程序和未对齐的程序启动得比对齐后的慢(这也是唯一可见的效果)。最坏的情况是,安装一些未对齐资源的应用程序会增加内存压力,并因此造成系统反复地启动和杀死进程。最终,用户放弃使用如此慢又耗电的设备。
幸运的是,对应用程序中的资源作对齐操作很简单:
·使用ADT:
o 如果你使用导出向导的话,Eclipse中的ADT插件(从Ver. 0.9.3开始)就能自动对齐Release程序包。使用向导,右击工程属性,选择“Android Tools” > “Export Signed Application Package…”。当然,你还可以通过AndroidManifest.xml编辑器的第一页做到。
·使用Ant:
o Ant编译脚本(从Android 1.6开始)可以对齐程序包。老平台的版本不能通过Ant编译脚本进行对齐,必须手动对齐。
o 从Android 1.6开始,Debug模式下编译时,Ant自动对齐和签名程序包。
o Release模式下,如果有足够的信息签名程序包的话,Ant才会执行对齐操作,因为对齐处理发生在签名之后。为了能够签名程序包,进而执行对齐操作,Ant必须知道keystore的位置以及build.properties中key的名字。相应的属性名为key.store和key.alias。如果这些属性为空,签名工具会在编译过程中提示输入store/key的密码,然后脚本会执行签名及apk文件的对齐。如果这些属性都没有,Release程序包不会进行签名,自然也就不会进行对齐了。
·手动:
o 为了能够手动对齐程序包,Android 1.6及以后的SDK的tools/文件夹下都有zipalign工具。你可以使用它来对齐任何版本下的程序包。你必须在签名apk文件后进行,使用以下命令:zipalign -v 4 source.apk destination.apk
·验证对齐:
o 以下的命令用于检查程序包是否进行了对齐:zipalign -c -v 4 application.apk
我们极力推荐手动zipalign你的应用程序,并确保将最新对齐后的版本提供给用户。此外,别忘了还有你的新应用程序也需要这么做!
分享到:
相关推荐
除了布局优化之外,`zipalign`也是一个重要的工具,用于优化APK文件的内存使用。通过执行`zipalign`命令,可以确保应用在设备上运行时能够更高效地利用内存,从而提升用户体验。 **zipalign的作用**: 1. **内存...
本文主要介绍Android Zipalign工具优化Android APK应用,这里整理了相关资料及简单优化实例,有需要的小伙伴可以参考下
2. **apktool-2.5.0.jar**:Apktool是一个强大的反编译和重新打包工具,它能够解码APK中的资源文件(如XML布局、图片等),让开发者可以查看和修改这些内容。反编译后,apktool将Dalvik Executable (DEX) 文件转换为...
2. 对APK进行ZIPalign优化:这一步是为了提高APK的内存访问效率,通过调整文件在ZIP档案中的位置,确保所有数据都对齐到4字节边界。 3. 签名APK:使用私钥对优化后的APK进行签名。这个过程会产生一个包含签名信息的...
这些工具是Android SDK的一个子集,专注于编译、打包和优化应用的过程。理解其功能和使用方法对于开发者来说至关重要。 首先,我们要知道SDK Build-tools是一个动态更新的组件,每个版本都有可能引入新的特性、修复...
1. **创建密钥库**:使用Java的keytool工具生成一个包含私钥的密钥库(Keystore)文件。 2. **生成签名文件**:使用keytool或APK Signer等工具,使用密钥库中的私钥对APK进行签名。 3. **ZIPalign优化**:签名后的...
Android Build Tools不仅仅是一个单一的工具,而是一系列用于自动化和优化构建过程的工具集合,包括但不限于: 1. **aapt**:处理应用资源,如图片、布局文件等,生成R类文件。 2. **dx/d8/r8**:将Java字节码转换...
以下是一个简单的Shell脚本示例,演示如何自动化这个流程: ```bash #!/bin/bash # 定义变量 APK_FILE="原始apk路径" KEYSTORE_FILE="密钥库文件路径" ALIAS="密钥别名" PASSWORD="密钥库密码" # 生成新的密钥库...
"resign.rar 工具"很可能提供了一个简单易用的界面或命令行选项,使得开发者可以方便地替换APK的现有签名,而不需要从头开始整个签名流程。使用这样的工具,开发者通常需要提供原始APK文件、新的签名证书以及可能的...
例如,将APK文件拖入命令行,并运行`apktool d your_apk_file.apk`,这将会生成一个包含源代码和资源文件的目录。 4. **查看源代码与资源**:反编译完成后,可以在解压出的目录中找到`res`目录下的资源文件,如XML...
标题提到的"SignApk-master.zip"是一个包含所有必要配置文件的压缩包,它主要用于帮助开发者对反编译后的APK文件进行签名,以便这些修改过的APK可以在Android设备上顺利安装和运行。 首先,我们来了解一下Android...
标题"build-tools_r28.0.3-windows"指的是Android构建工具的一个特定版本,这是Android开发者在构建应用程序时会用到的重要组件。这个版本号(r28.0.3)意味着它是Android Build Tools的第28.0.3次修订版,针对...
在Unity 2018或2019版本中,为了成功打包Android APK,你需要一个稳定且兼容的SDK Tools版本,而Android SDK Tools 26.1.1正好满足这一需求。相较于后续的32.x版本,26.1.1版本在使用上更为简单,无需进行复杂的配置...
Keystore是一个包含一个或多个密钥对(公钥和私钥)的文件,用于数字签名。在Android中,它用于证明应用的开发者身份,并确保应用在安装和更新时的一致性。 1. **生成Keystore文件** 使用Java的关键工具`keytool`...
或者使用`zipalign`工具对APK进行优化: ```bash /path/to/sdk/build-tools/28.0.1/zipalign -v 4 <unaligned_apk> ``` 最后,值得注意的是,虽然Build-Tools提供了强大的功能,但它并不是独立存在的。在实际的...
在Android开发领域,APKTOOL是一个非常重要的工具,它主要负责APK文件的编译与反编译工作。APK是Android应用的打包格式,包含应用的所有代码、资源、库文件等。APKTOOL的使用对于开发者、黑客以及手机美化爱好者来说...
以下是一个简单的解包流程: 1. **下载与安装解包工具**:工欲善其事,必先利其器。常用的apk解包工具有JD-GUI(Java反编译器)和Apktool。你可以从官方网站或可靠的第三方网站获取这些工具。例如,Apktool用于解析...
批处理打包技术在IT行业中,尤其是在Android应用开发中,是一个重要的流程优化手段。它涉及到一系列自动化脚本的编写,以实现快速、高效地构建和打包应用程序。本文将深入讲解批处理打包的过程,以及如何利用批处理...
4. **优化和ZIPalign**:可选步骤,通过zipalign工具进行内存对齐,提高应用性能。 ### auto-sign工具的使用 `auto-sign`工具自动化了上述过程,它提供了命令行界面,只需要提供Keystore文件、相关密码以及APK文件...