`
jiagou
  • 浏览: 2538634 次
文章分类
社区版块
存档分类
最新评论

简单优化: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:

oAnt编译脚本(从Android 1.6开始)可以对齐程序包。老平台的版本不能通过Ant编译脚本进行对齐,必须手动对齐。

o从Android 1.6开始,Debug模式下编译时,Ant自动对齐和签名程序包。

oRelease模式下,如果有足够的信息签名程序包的话,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你的应用程序,并确保将最新对齐后的版本提供给用户。此外,别忘了还有你的新应用程序也需要这么做!

转自:http://www.cnblogs.com/xirihanlin/archive/2010/04/12/1710164.html

分享到:
评论

相关推荐

    Android Zipalign工具优化Android APK应用

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

    Android APK+Dex文件反编译及回编译工具v2.0.2

    更新,Zipalign优化工具 (23.0.3版) *.更新,合并Odex文件 *.更新,XML编辑器(提升速度,修复bug) *.更新,显示APK自身图标(Apkshellext v2.0.1.5780.2290) *.更新,刷机精灵APK安装器 *.新增,自定义默认签名,可用...

    【中兴V880 ROM】超强大黄蜂增强版再次全新体验~

    【介绍一下swap虚拟内存的原理,可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被...

    《Android应用开发揭秘》源码

     8.3.2 Socket应用(简易聊天室)  8.4 网络通信的中文乱码问题  8.5 WebKit应用  8.5.1 WebKjt概述  8.5.2 WebView浏览网页  8.5.3 WebView与Javascript  8.6 WtFi介绍  8.7 蓝牙  8.8 小结  第9章 Android...

    Android APK+Dex文件反编译及回编译工具 v.1.7.2 正式版

    《APK+Dex文件反编译及回编译...更新,APK优化工具Zipalign (2012.6.25版) 4.优化,Odex合并到APK或JAR功能(可选择系统版本) 5.增强,支持(JB)Android v4.1.1 编译 6.增强,与手机助手的兼容性 7.其他,一些调整

    《Android应用开发揭秘》附带光盘代码.

     8.3.2 Socket应用(简易聊天室)  8.4 网络通信的中文乱码问题  8.5 WebKit应用  8.5.1 WebKjt概述  8.5.2 WebView浏览网页  8.5.3 WebView与Javascript  8.6 WtFi介绍  8.7 蓝牙  8.8 小结  第9章 Android...

    RAR_for_Android_Premium_v5.80.apk

    Android版RAR RARLAB的RAR是一款多功能,原始,免费,简单,轻松,快速的压缩程序,存档器,助手,提取器,管理器,甚至是基本的文件浏览器。 RAR可以创建RAR和ZIP,并解...优化的图形/ zipalign; 禁用分析。

    APK+Dex文件反编译及回编译工具(APKDB)v1.8.1正式版 支持繁体

    更新,APK优化工具Zipalign (22.3版)  *.更新,adb工具支持Android4.4  *.修复,修复批量编译  *.修复,回编译保留旧文件失败问题(与系统时间格式相关)  *.修复,Odex合并问题  *.修复,Apk优化失败问题  *....

    Android应用开发揭秘pdf高清版

    8.3.2 Socket应用(简易聊天室) 8.4 网络通信的中文乱码问题 8.5 WebKit应用 8.5.1 WebKjt概述 8.5.2 WebView浏览网页 8.5.3 WebView与Java 8.6 WtFi介绍 8.7 蓝牙 8.8 小结 第9章 Android特色开发 9.1 传感器 9.2 ...

Global site tag (gtag.js) - Google Analytics