Android 性能优化(27)*zipalign让apk数据对齐,运行更快。
1.zipalign 简介
zipalign is an archive alignment tool that provides important optimization to Android application (.apk) files. The purpose is to ensure that all uncompressed data starts with a particular alignment relative to the start of the file. Specifically, it causes all uncompressed data within the .apk, such as images or raw files, to be aligned on 4-byte boundaries. This allows all portions to be accessed directly with mmap() even if they contain binary data with alignment restrictions. The benefit is a reduction in the amount of RAM consumed when running the application.
google play不支持没用它的apk上线
当系统启动一个应用时,如果它的apk是内存4字节对齐的,它可以直接通过mmap()函数访问资源和数据,比不对齐的快。zipalign 就是优化apk,让其按4字节对齐的工具。
This tool should always be used to align your .apk file before distributing it to end-users. The Android build tools can handle this for you. Android Studio automatically aligns your .apk after it signs it with your private key. The build scripts used when compiling your application with Gradle also align your .apk, as long as you have provided the path to your keystore and the key alias in your project gradle.properties file, so that the build tools can sign the package first.
Caution: zipalign must only be performed after the .apk file has been signed with your private key. If you perform zipalign before signing, then the signing procedure will undo the alignment. Also, do not make alterations to the aligned package. Alterations to the archive, such as renaming or deleting entries, will potentially disrupt the alignment of the modified entry and all later entries. And any files added to an "aligned" archive will not be aligned.
本工具应该用在用私钥签名之后使用,否则无效。一但用zipalign优化后,就不要改变,否则会导致对齐失效。
The adjustment is made by altering the size of the "extra" field in the zip Local File Header sections. Existing data in the "extra" fields may be altered by this process.
工具是通过修改zip文件的header section 中的extra属性来实现对齐的。
For more information about how to use zipalign when building your application, please read Signing Your Application.
2.zipalign工具位置
android-sdks/build-tools/xx xx为版本号,每个目录下都有。
3.Usage 示例
To align infile.apk and save it as outfile.apk: 对已存在的apk进行对齐优化。
$zipalign [-f] [-v] <alignment> infile.apk outfile.apk
To confirm the alignment of existing.apk: 对已经存在的apk进程对齐优化检测,验证。注意-c参数。
$zipalign -c -v <alignment> existing.apk
The <alignment> is an integer that defines the byte-alignment boundaries. This must always be 4 (which provides 32-bit alignment) or else it effectively does nothing.
<alignment>通常值为4.
Flags:
zipalign 各参数的含义:
-f: overwrite existing outfile.zip-v: verbose output-c: confirm the alignment of the given file
如:
$~/Android/android-sdks/build-tools/23.0.2/zipalign -f -v 4 app-debug.apk app-zipaligned.apk
$~/Android/android-sdks/build-tools/23.0.2/zipalign -c -v 4 app-zipaligned.apk
在终端下输出如下:
Verifying alignment of app-zipaligned.apk (4)...
53 AndroidManifest.xml (OK - compressed)
1388 res/drawable-hdpi-v11/__leak_canary_notification.png (OK)
2416 res/drawable-hdpi-v4/__leak_canary_icon.png (OK)
4744 res/drawable-hdpi-v4/__leak_canary_notification.png (OK)
5824 res/drawable-hdpi-v4/ab_overflow_btn.png (OK)
6136 res/drawable-hdpi-v4/corner_notice_new.png (OK)
7516 res/drawable-hdpi-v4/fast_scroll_preview_right.png (OK)
9488 res/drawable-hdpi-v4/fast_scroll_thumb_aje.png (OK)
9936 res/drawable-hdpi-v4/ic_launcher.png (OK)
13200 res/drawable-hdpi-v4/pgrsb.png (OK)
15132 res/drawable-hdpi-v4/refreshview_icon.png (OK)
15656 res/drawable-hdpi-v4/session_list_item_classes.png (OK)
25380 res/drawable-hdpi-v4/session_list_item_content_icon.png (OK)
26708 res/drawable-hdpi-v4/session_list_item_file_helper.png (OK)
27540 res/drawable-hdpi-v4/session_list_item_icon.png (OK)
28764 res/drawable-hdpi-v4/session_list_item_qq_news.png (OK)
31560 res/drawable-hdpi-v4/session_list_item_subscribe.png (OK)
32156 res/drawable-hdpi-v4/session_list_item_voice_notepad.png (OK)
33136 res/drawable-hdpi-v4/splash_bg.jpg (OK)
143168 res/drawable-hdpi-v4/tab_contaces_new_friend.png (OK)
144252 res/drawable-hdpi-v4/tab_contact_icon.png (OK)
145484 res/drawable-hdpi-v4/tab_contacts_cluster_chat.png (OK)
146800 res/drawable-hdpi-v4/tab_contacts_l.png (OK)
148096 res/drawable-hdpi-v4/tab_contacts_n.png (OK)
149944 res/drawable-hdpi-v4/tab_contacts_public_id.png (OK)
151240 res/drawable-hdpi-v4/tab_contacts_tags.png (OK)
152380 res/drawable-hdpi-v4/tab_discovery_fjr.png (OK)
153028 res/drawable-hdpi-v4/tab_discovery_gw.png (OK)
153680 res/drawable-hdpi-v4/tab_discovery_l.png (OK)
155392 res/drawable-hdpi-v4/tab_discovery_n.png (OK)
157728 res/drawable-hdpi-v4/tab_discovery_plp.png (OK)
158392 res/drawable-hdpi-v4/tab_discovery_pyq.png (OK)
159392 res/drawable-hdpi-v4/tab_discovery_sys.png (OK)
159932 res/drawable-hdpi-v4/tab_discovery_yx.png (OK)
160704 res/drawable-hdpi-v4/tab_discovery_yyy.png (OK)
161840 res/drawable-hdpi-v4/tab_personal_2wm.png (OK)
162100 res/drawable-hdpi-v4/tab_personal_bq.png (OK)
162868 res/drawable-hdpi-v4/tab_personal_l.png (OK)
163960 res/drawable-hdpi-v4/tab_personal_n.png (OK)
165668 res/drawable-hdpi-v4/tab_personal_qb.png (OK)
166124 res/drawable-hdpi-v4/tab_personal_sc.png (OK)
166896 res/drawable-hdpi-v4/tab_personal_sz.png (OK)
167724 res/drawable-hdpi-v4/tab_personal_xc.png (OK)
168164 res/drawable-hdpi-v4/tab_session_l.png (OK)
169524 res/drawable-hdpi-v4/tab_session_n.png (OK)
171604 res/drawable-hdpi-v4/tab_session_network_warning.png (OK)
172424 res/drawable-hdpi-v4/tab_session_qq_friend.png (OK)
174968 res/drawable-mdpi-v11/__leak_canary_notification.png (OK)
175728 res/drawable-mdpi-v4/__leak_canary_icon.png (OK)
177232 res/drawable-mdpi-v4/__leak_canary_notification.png (OK)
177716 res/drawable-mdpi-v4/ic_launcher.png (OK)
179700 res/drawable-xhdpi-v11/__leak_canary_notification.png (OK)
180952 res/drawable-xhdpi-v4/__leak_canary_icon.png (OK)
184060 res/drawable-xhdpi-v4/__leak_canary_notification.png (OK)
185460 res/drawable-xxhdpi-v11/__leak_canary_notification.png (OK)
187152 res/drawable-xxhdpi-v4/__leak_canary_icon.png (OK)
191840 res/drawable-xxhdpi-v4/__leak_canary_notification.png (OK)
193116 res/drawable-xxhdpi-v4/ic_launcher.png (OK)
198832 res/drawable-xxxhdpi-v11/__leak_canary_notification.png (OK)
200908 res/drawable-xxxhdpi-v4/__leak_canary_icon.png (OK)
207196 res/drawable-xxxhdpi-v4/__leak_canary_notification.png (OK)
208837 res/drawable/__leak_canary_toast_background.xml (OK - compressed)
209153 res/drawable/selector_dialog_bg.xml (OK - compressed)
209616 res/drawable/tab_contacts_state.xml (OK - compressed)
209947 res/drawable/tab_discovery_state.xml (OK - compressed)
210282 res/drawable/tab_personal_state_list.xml (OK - compressed)
210621 res/drawable/tab_session_list_item_layer.xml (OK - compressed)
210949 res/drawable/tab_session_state.xml (OK - compressed)
211283 res/layout/__leak_canary_display_leak.xml (OK - compressed)
211814 res/layout/__leak_canary_heap_dump_toast.xml (OK - compressed)
212314 res/layout/__leak_canary_leak_row.xml (OK - compressed)
212807 res/layout/__leak_canary_ref_row.xml (OK - compressed)
213383 res/layout/__leak_canary_ref_top_row.xml (OK - compressed)
213760 res/layout/aty_main.xml (OK - compressed)
214060 res/layout/aty_main_large.xml (OK - compressed)
214425 res/layout/aty_main_large_land.xml (OK - compressed)
214787 res/layout/aty_main_sw600dp.xml (OK - compressed)
215185 res/layout/aty_main_sw600dp_land.xml (OK - compressed)
215577 res/layout/aty_main_xlarge.xml (OK - compressed)
215965 res/layout/frgmt_main.xml (OK - compressed)
216517 res/layout/frgmt_splash.xml (OK - compressed)
216849 res/layout/tab_session_list_item.xml (OK - compressed)
217552 res/layout/tab_widget_layout.xml (OK - compressed)
217953 res/menu/main_menu.xml (OK - compressed)
218380 resources.arsc (OK)
238913 classes.dex (OK - compressed)
852364 pinyindb/pinyin_gwoyeu_mapping.xml (OK - compressed)
859683 pinyindb/pinyin_mapping.xml (OK - compressed)
865435 pinyindb/unicode_to_hanyu_pinyin.txt (OK - compressed)
959902 META-INF/MANIFEST.MF (OK - compressed)
962847 META-INF/CERT.SF (OK - compressed)
965810 META-INF/CERT.RSA (OK - compressed)
Verification succesful
Android 性能优化(27)*zipalign让apk数据对齐,运行更快。的更多相关文章
- Android性能优化系列之apk瘦身
Android性能优化系列之布局优化 Android性能优化系列之内存优化 为什么APK要瘦身.APK越大,在下载安装过程中.他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率 ...
- 【腾讯Bugly干货分享】Android性能优化典范——第6季
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/580d91208d80e49771f0a07c 导语 这里是Android性能优 ...
- android 性能优化
本章介绍android高级开发中,对于性能方面的处理.主要包括电量,视图,内存三个性能方面的知识点. 1.视图性能 (1)Overdraw简介 Overdraw就是过度绘制,是指在一帧的时间内(16. ...
- 【转】Android性能优化之布局优化篇
转自:http://blog.csdn.net/feiduclear_up/article/details/46670433 Android性能优化之布局优化篇 分类: andorid 开发2015 ...
- Android群英传笔记——第十章:Android性能优化
Android群英传笔记--第十章:Android性能优化 随着Android应用增多,功能越来越复杂,布局也越来越丰富了,而这些也成为了阻碍一个应用流畅运行,因此,对复杂的功能进行性能优化是创造高质 ...
- Android 性能优化之工具和优化点总结
Android性能优化学习 最近公司主抓性能优化工作,借此春风也学习到了许多Android性能优化方面的知识.由于组内队友的给力,优化的成果也是比较喜人.同时也学习和实践了不少知识,特此记录. 1.性 ...
- Android 性能优化之内存泄漏检测以及内存优化(中)
https://blog.csdn.net/self_study/article/details/66969064 上篇博客我们写到了 Java/Android 内存的分配以及相关 GC 的详细分析, ...
- Android性能优化系列之App启动优化
Android性能优化系列之布局优化 Android性能优化系列之内存优化 Android性能优化系列之apk瘦身 应用的启动速度缓慢是我们在开发过程中常常会遇到的问题,比方启动缓慢导致的黑屏.白屏问 ...
- Android性能优化:手把手带你全面了解 内存泄露 & 解决方案
. 简介 即 ML (Memory Leak)指 程序在申请内存后,当该内存不需再使用 但 却无法被释放 & 归还给 程序的现象2. 对应用程序的影响 容易使得应用程序发生内存溢出,即 OOM ...
随机推荐
- Codeforces913F. Strongly Connected Tournament
n<=2000个人参加比赛,这样比:(这里的序号没按题目的)1.两两比一场,比完连个图,边i->j表示i赢了j.2.连完那个图强联通分量缩起来,强连通分量内继续比,即强连通分量递归进行1. ...
- 在 Windows 10 64 下安装 Memcached,安装 PHP 7.0.22 的 Memcache 扩展
1.之前写过一篇在 PHP 5.6.27 下的博客:http://www.shuijingwanwq.com/2017/09/11/1892/ ,此次是 PHP 7.0.22 下的,如图1 图1 2. ...
- Codeforces 628D Magic Numbers
题意: 求在[a,b](a,b不含前导0)中的d−magic数中有多少个是m的倍数. 分析: 计数dp Let's call a number d-magic if digit d appears i ...
- mysql 排序order by可以根据权重,进行表达式计算。再排序
1.select * from tbl_actor order by (follower_count+Recommend_weight)*weight_ratio desc limit 3; 2.or ...
- 我的arcgis培训照片4 来自http://www.cioiot.com/successview-549-1.html
- 剑指Offer - 两个链表第一个公共节点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?tpId=13&tqId=11189&tPage= ...
- POJ 3370 Halloween treats(抽屉原理)
Halloween treats Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 6631 Accepted: 2448 ...
- HDU 5265 pog loves szh II (二分查找)
[题目链接]click here~~ [题目大意]在给定 的数组里选两个数取模p的情况下和最大 [解题思路]: 思路见官方题解吧~~ 弱弱献上代码: Problem : 5265 ( pog love ...
- HDU 3280 Equal Sum Partitions(二分查找)
Equal Sum Partitions Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- (源代码分析)Android-Universal-Image-Loader (图片异步载入缓存库)的使用配置
转载请注明出处:http://blog.csdn.net/u011733020 前言: 在Android开发中,对于图片的载入能够说是个老生常谈的问题了,图片载入是一个比較坑的地方.处理不好,会有各种 ...