Android 1.6 SDK中包含了一个用于优化APK的新工具zipalign。 它提高了优化后的Applications与Android系统的交互效率(俗话:“要致富先修路”,Android小组重新为Applications 与Android系统之间搭建了一条高速公路),从而可以使整个系统的运行速度有了较大的提升。Android小组强烈建议开发者在发布新Apps之前使 用zipalign优化工具,而且对于已经发布但不受限于系统版本的Apps,建议用优化后的APK替换现有的版本。在下面的内容中将从三个方面介绍 zipalign:
zipalign如何优化
如何使用zipalign
使用zipalign的理由
根据官方文档的描述,Android系统中Application的数据都保存在它的APK文件中,同时可以被多个进程访问,安装的过程包括如下几个步骤:
Installer通过每个apk的manifest文件获取与当前应用程序相关联的permissions信息
Home application读取当前APK的Name和Icon等信息。
System server将读取一些与Application运行相关信息,例如:获取和处理Application的notifications请求等。
最后,APK所包含的内容不仅限于当前Application所使用,而且可以被其它的Application调用,提高系统资源的可复用性。
zipalign优化的最根本目的是帮助操作系统更高效率的根据请求索引资源,将resource-handling code统一将Data structure alignment(数 据结构对齐标准:DSA)限定为4-byte boundaries。如果第一次接触有关Data structure alignment的内容,强烈建议搜索更多与其相关的内容来充分理解这样做的最终目的,这也是理解zipalign工作原理的关键。如果不采取对齐的标 准,处理器无法准确和快速的在内存地址中定位相关资源。
目前的系统中使用fallback mechanism机制处理那些没有应用DSA标准的应用程序,这的确大大的方便了普通开发者无需关注繁琐的内存操作问题。但是相反,对于这样的应用程序 将给普通用户带来一定的麻烦,不但影响程序的运行的效率,而且使系统的整体执行效率下降和占用大量不必要的内存资源,甚至消耗一定的电池资源 (battery life)。
在Android 1.6 SDK中提供了三种应用Align操作的方法:
使用ADT:
从 ADT 0.9.3版本开始,可以通过export wizard自动对发布的application packages执行align操作。设置方法:鼠标右键点击Project,然后选择”Android Tools” > “Export Signed Application Package…”。或者可以直接在AndroidManifest.xml中设置。
使用 Ant:
对于API Level 大于等于4的Application Packages可以直接通过Ant build script来Align优化。但对于API Level小于4的情况,只能采取手动Align优化。
默认下应用Ant build script运行Debug packages(API Level >= 4)时,将自动执行Align优化。
针对Release packages。当使用Ant build script执行Align优化时,首先需要拥有足够的信息来Sign packages。当完成Signing之后, 才能执行Align优化。通过官方文档了解如何Sign Packages。
手动执行Align优化:
利用tools文件夹下的zipalign工具。首先调出cmd命令行,然后执行:zipalign -v 4 source.apk androidres.apk。这个方法不受API Level的限制,可以对任何版本的APK执行Align优化。
同时可以利用zipalign工具检查当前APK是否已经执行过Align优化。命令:zipalign -c -v 4 androidres.apk
再一次提醒开发者,立刻应用zipalign工具强制优化已经发布的application packages,并让你的用户使用最新的版本。
转自:http://android.group.iteye.com/group/blog/575819
分享到:
相关推荐
本文将详细介绍APK签名的过程以及ZipAlign工具的使用方法。 #### 一、APK签名的重要性及实现方式 **1. 为何需要APK签名** - **确保应用来源的一致性:**签名可以验证应用是否来自同一个开发者,这对于防止恶意篡改...
除了上述方法,还有一些第三方工具和自动化流程可以用于打包,比如使用Fastlane或CI/CD服务(如Jenkins、GitLab CI/CD)自动打包和发布。这些工具通常能简化打包流程,并且在团队协作和持续集成环境中非常有用。 ...
### Android应用APK打包签名方法详解 #### 一、引言 在Android开发过程中,APK的打包与签名是一项至关重要的环节。无论是开发者在本地测试应用,还是将应用提交到Google Play商店,都需要确保APK文件正确地进行了...
本篇文章将详细介绍Windows平台上的Android签名工具及其使用方法。 一、Android签名的重要性 1. 应用安全:签名过程会使用私钥对APK进行加密,防止恶意篡改,确保用户下载的是未经修改的原版应用。 2. 应用发布:...
5. 签名和优化:使用`jarsigner`和`zipalign`工具完成签名和优化过程。 **Apktool的局限性** 虽然Apktool功能强大,但需要注意的是,对于进行了混淆处理的APK,反编译后的Smali代码难以阅读和理解,因为变量和方法...
本文将深入探讨这些概念,并介绍相应的工具及其使用方法。 首先,ROM签名是指对Android ROM进行数字签名的过程,以确保其来源可信且未被篡改。在Android系统中,每个安装的应用和系统组件都需要对应的有效签名才能...
本文将详细介绍apk签名的原理、SignAllApk工具的使用方法以及其在Android开发中的重要性。 ### APK签名的原理 在Android系统中,每个APK文件都必须经过数字签名才能在设备上安装和运行。签名过程主要包含以下几个...
本篇将详细介绍两个常用的Android反编译工具,它们的功能、使用方法以及在Android应用开发中的应用场景。 1. **Apktool** Apktool是一款开源的Android反编译工具,由IzzySoft开发,主要用于解编译APK文件。它能将...
APK签名工具是Android开发过程中不可或缺的一环,它主要用于验证应用程序的来源以及确保其完整性。...通过本文的介绍,你应该对APK签名有了深入的理解,并能够使用`apksigner`来管理和签署你的Android应用。
本教程将详细介绍如何使用APKTool进行反编译和回编译。 1. APKTool概述 APKTool是一款免费且开源的Java工具,可解析APK文件中的二进制XML文件,将其转换为人类可读的格式,并能重新打包和签名APK。它支持Android...
使用dex2jar,我们可以看到.DEX文件中的类和方法。 - 使用步骤: ``` java -jar dex2jar-2.0.sh your.dex ``` - 这将生成一个jar文件,其中包含DEX文件的Java表示。 3. **JD-GUI**:这是一款图形界面的Java反...
本文将详细介绍Android应用程序签名的意义、签名过程以及如何使用不同的工具进行签名打包。 首先,理解签名的意义至关重要。Android App的签名主要目的是为了确保应用程序的开发者身份合法性,避免恶意开发者通过...
可以使用` jarsigner`工具进行签名,然后使用`zipalign`工具进行优化。 **注意**:尽管Apktool提供了一种便捷的方式来查看和修改APK,但这种能力也带来了安全风险。因此,开发者应该采取措施保护他们的应用,例如...
5. **Tracer for Dalvik/ART**:这个工具用于追踪Dalvik或ART虚拟机的运行情况,帮助开发者分析应用的CPU使用情况和方法调用,从而优化代码性能。 6. **dexdump**:此工具可以分析和打印.DEX文件(Android应用的...
本文将深入探讨其中的一款著名工具——apktool,并结合"bc_Android_apk_decompiler-lv_hicode"这个压缩包文件,详细介绍其功能、使用方法以及反编译过程。 **apktool介绍** apktool是由IzzySoft开发的一个开源工具...
在本文中,我们将详细介绍Apktool的安装过程以及其在Windows环境下的使用方法。 一、Apktool的获取与安装 要获取Apktool,你可以通过访问开发者提供的GitHub页面(https://ibotpeaches.github.io/Apktool/install/...
- 教育与研究:学习Android编程时,反编译现有的APK有助于理解代码逻辑和实现方法。 综上所述,APK反编译及编译工具是一个涵盖了解压、反编译、修改、再打包和签名等一系列步骤的技术流程,对于Android开发者来说...
下面将详细介绍apktool的功能、使用方法以及在macOS上的操作流程。 **一、apktool的功能** 1. **反编译APK**:apktool能够将APK中的Java字节码(Dalvik Executable, .dex)转换回源代码(.smali),这使得我们能够...