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.

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. When using Eclipse with the ADT plugin, the Export Wizard will automatically zipalign your .apk after it signs it with your private key. The build scripts used when compiling your application with Ant will also zipalign your .apk, as long as you have provided the path to your keystore and the key alias in your project ant.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.

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.

For more information about how to use zipalign when building your application, please read Signing Your Applications.

Usage

To align infile.apk and save it as outfile.apk:

zipalign [-f] [-v] <alignment> infile.apk outfile.apk

To confirm the alignment of existing.apk:

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.

Flags:

  • -f : overwrite existing outfile.zip
  • -v : verbose output
  • -c : confirm the alignment of the given file

以上对 zipalign 的介绍和使用来自 Google Developer,下面开始实例演示:

  1. 将 Android-SDK\tools 目录下的 zipalign.exe 文件拷贝到放置签名APK文件所在的目录(fileDir)
  2. 调用 cmd 窗口,在窗口中执行 cd /d fileDir,进入签名APK文件所在的目录
  3. 继续在 cmd 窗口中执行 zipalign -v 4 inFile.apk outFile.apk,看到窗口输出 Verification succesful 即完成了 APK 的优化(inFile.apk 为已经签名打包好的原始文件,outFile.apk 为优化完毕后的输出文件)

更多相关文章

  1. Android Manifest文件中meta-data的配置读取
  2. [转]Android文件管理器介绍
  3. android使用pull解析器来解析和生成xml文件
  4. android从服务器下载文件(php+apache+win7+MySql)
  5. android引入so文件常见问题
  6. 自定义控件attrs文件里的属性
  7. Android 读取资源文件实例详解
  8. Android通过ContentProvider传输文件
  9. android启动后根文件系统分析

随机推荐

  1. android 高德地图API 之 java.lang.Unsat
  2. Android下Affinities和Task
  3. Android socket 开发中遇到的问题.
  4. Android(安卓)初级面试者拾遗(前台界面篇)
  5. Android的MediaRecorder框架介绍
  6. Android中正确自适应屏幕翻转
  7. Android(安卓)View的事件体系
  8. android设备adb usb驱动安装方法
  9. Gallery放大缩小
  10. Android(安卓)开发技术周报 Issue#294