如题的问题:
- Google官网介绍:
我们强烈推荐在新的和已经发布的程序上使用zipalign工具来得到优化后的版本——即使你的程序是在老版本的Android平台下开发的。在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率。因此,这种方式能够让应用程序和整个系统运行得更快。Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化。
在Android中,每个应用程序中储存的数据文件都会被多个进程访问:比如在,安装程序会读取应用程序的manifest文件来处理与之相关的权限问题;Home应用程序会读取资源文件来获取应用程序的名和图标;系统服务会因为很多种原因读取资源(例如,显示应用程序的Notification);应用程序自身用到资源文件。 - 在Android中,当资源文件通过内存映射对齐到4字节边界时,访问资源文件的代码才是有效率的。如果资源本身没有进行对齐处理(未使用zipalign工具),它就必须回到老路上,显式地读取它们——这个过程将会比较缓慢且会花费额外的内存。
下面介绍对其的步骤:
-
自动对齐:
使用ADT:
如果你使用导出向导的话,Eclipse中的ADT插件(从Ver. 0.9.3开始)就能自动对齐Release程序包。使用向导,右击工程属性,选择“Android Tools” > “Export Signed Application Package…”。当然,你还可以通过AndroidManifest.xml编辑器的第一页做到。
使用Ant:
Ant编译脚本(从Android 1.6开始)可以对齐程序包。老平台的版本不能通过Ant编译脚本进行对齐,必须手动对齐。从Android 1.6开始,Debug模式下编译时,Ant自动对齐和签名程序包。
Release模式下,如果有足够的信息签名程序包的话,Ant才会执行对齐操作,因为对齐处理发生在签名之后。为了能够签名程序包,进而执行对齐操作,Ant必须知道keystore的位置以及build.properties中key的名字。相应的属性名为key.store和key.alias。如果这些属性为空,签名工具会在编译过程中提示输入store/key的密码,然后脚本会执行签名及apk文件的对齐。如果这些属性都没有,Release程序包不会进行签名,自然也就不会进行对齐了。
-
手动:
为了能够手动对齐程序包,Android 1.6及以后的SDK的 build-tools\26.0.2 都有zipalign工具。你可以使用它来对齐任何版本下的程序包。
对齐命令如下:zipalign -v 4 原包.apk 对齐之后app名.apk
验证对齐命令: zipalign -c -v 4 (对齐之后app).apk
记录完毕。
注意:
如果在签名之后再进行手动对其,会安装失败,so请在对齐之后再进行签名操作。至于签名步骤嘛,请转至 对Android apk 签名 --apksigner