`
Beyon_javaeye
  • 浏览: 67594 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Zipalign:一个简单的优化

阅读更多
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你的应用程序,并确保将最新对齐后的版本提供给用户。此外,别忘了还有你的新应用程序也需要这么做!
分享到:
评论

相关推荐

    Android布局优化和zipalign

    除了布局优化之外,`zipalign`也是一个重要的工具,用于优化APK文件的内存使用。通过执行`zipalign`命令,可以确保应用在设备上运行时能够更高效地利用内存,从而提升用户体验。 **zipalign的作用**: 1. **内存...

    Android Zipalign工具优化Android APK应用

    本文主要介绍Android Zipalign工具优化Android APK应用,这里整理了相关资料及简单优化实例,有需要的小伙伴可以参考下

    apksigner.jar apktool-2.5.0.jar baksmali-2.2.2.jar zipalign

    2. **apktool-2.5.0.jar**:Apktool是一个强大的反编译和重新打包工具,它能够解码APK中的资源文件(如XML布局、图片等),让开发者可以查看和修改这些内容。反编译后,apktool将Dalvik Executable (DEX) 文件转换为...

    apk签名工具.tool

    2. 对APK进行ZIPalign优化:这一步是为了提高APK的内存访问效率,通过调整文件在ZIP档案中的位置,确保所有数据都对齐到4字节边界。 3. 签名APK:使用私钥对优化后的APK进行签名。这个过程会产生一个包含签名信息的...

    Android Studio SDK Build-tools, revision 19.0.0

    这些工具是Android SDK的一个子集,专注于编译、打包和优化应用的过程。理解其功能和使用方法对于开发者来说至关重要。 首先,我们要知道SDK Build-tools是一个动态更新的组件,每个版本都有可能引入新的特性、修复...

    app签名工具

    1. **创建密钥库**:使用Java的keytool工具生成一个包含私钥的密钥库(Keystore)文件。 2. **生成签名文件**:使用keytool或APK Signer等工具,使用密钥库中的私钥对APK进行签名。 3. **ZIPalign优化**:签名后的...

    build tools 25.0.3 免费下载

    Android Build Tools不仅仅是一个单一的工具,而是一系列用于自动化和优化构建过程的工具集合,包括但不限于: 1. **aapt**:处理应用资源,如图片、布局文件等,生成R类文件。 2. **dx/d8/r8**:将Java字节码转换...

    android apk重签名,shell脚本自动化

    以下是一个简单的Shell脚本示例,演示如何自动化这个流程: ```bash #!/bin/bash # 定义变量 APK_FILE="原始apk路径" KEYSTORE_FILE="密钥库文件路径" ALIAS="密钥别名" PASSWORD="密钥库密码" # 生成新的密钥库...

    resign.rar 工具

    "resign.rar 工具"很可能提供了一个简单易用的界面或命令行选项,使得开发者可以方便地替换APK的现有签名,而不需要从头开始整个签名流程。使用这样的工具,开发者通常需要提供原始APK文件、新的签名证书以及可能的...

    超简单实用的apk反编译+回编译工具-安卓开发必备

    例如,将APK文件拖入命令行,并运行`apktool d your_apk_file.apk`,这将会生成一个包含源代码和资源文件的目录。 4. **查看源代码与资源**:反编译完成后,可以在解压出的目录中找到`res`目录下的资源文件,如XML...

    SignApk-master.zip

    标题提到的"SignApk-master.zip"是一个包含所有必要配置文件的压缩包,它主要用于帮助开发者对反编译后的APK文件进行签名,以便这些修改过的APK可以在Android设备上顺利安装和运行。 首先,我们来了解一下Android...

    build-tools_r28.0.3-windows

    标题"build-tools_r28.0.3-windows"指的是Android构建工具的一个特定版本,这是Android开发者在构建应用程序时会用到的重要组件。这个版本号(r28.0.3)意味着它是Android Build Tools的第28.0.3次修订版,针对...

    AndroidSDKTools26.1.1.rar

    在Unity 2018或2019版本中,为了成功打包Android APK,你需要一个稳定且兼容的SDK Tools版本,而Android SDK Tools 26.1.1正好满足这一需求。相较于后续的32.x版本,26.1.1版本在使用上更为简单,无需进行复杂的配置...

    Android 打包签名 从生成keystore到完成签名.zip

    Keystore是一个包含一个或多个密钥对(公钥和私钥)的文件,用于数字签名。在Android中,它用于证明应用的开发者身份,并确保应用在安装和更新时的一致性。 1. **生成Keystore文件** 使用Java的关键工具`keytool`...

    build-tools_r28.0.1-linux.zip

    或者使用`zipalign`工具对APK进行优化: ```bash /path/to/sdk/build-tools/28.0.1/zipalign -v 4 <unaligned_apk> ``` 最后,值得注意的是,虽然Build-Tools提供了强大的功能,但它并不是独立存在的。在实际的...

    APKTOOL.zip 编译与反编译

    在Android开发领域,APKTOOL是一个非常重要的工具,它主要负责APK文件的编译与反编译工作。APK是Android应用的打包格式,包含应用的所有代码、资源、库文件等。APKTOOL的使用对于开发者、黑客以及手机美化爱好者来说...

    apk解包打包工具

    以下是一个简单的解包流程: 1. **下载与安装解包工具**:工欲善其事,必先利其器。常用的apk解包工具有JD-GUI(Java反编译器)和Apktool。你可以从官方网站或可靠的第三方网站获取这些工具。例如,Apktool用于解析...

    批处理打包

    批处理打包技术在IT行业中,尤其是在Android应用开发中,是一个重要的流程优化手段。它涉及到一系列自动化脚本的编写,以实现快速、高效地构建和打包应用程序。本文将深入讲解批处理打包的过程,以及如何利用批处理...

    auto-sign(android签名工具)

    4. **优化和ZIPalign**:可选步骤,通过zipalign工具进行内存对齐,提高应用性能。 ### auto-sign工具的使用 `auto-sign`工具自动化了上述过程,它提供了命令行界面,只需要提供Keystore文件、相关密码以及APK文件...

Global site tag (gtag.js) - Google Analytics