|  | page.title=zipalign | 
|  | parent.title=Tools | 
|  | parent.link=index.html | 
|  | @jd:body | 
|  |  | 
|  | <p>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 {@code 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.</p> | 
|  |  | 
|  | <p>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 {@code ant.properties} file, so that the build tools | 
|  | can sign the package first.</p> | 
|  |  | 
|  | <p class="caution"><strong>Caution:</strong> zipalign must only be performed | 
|  | <strong>after</strong> 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.</p> | 
|  |  | 
|  | <p>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.</p> | 
|  |  | 
|  | <p>For more information about how to use zipalign when building your | 
|  | application, please read <a href="{@docRoot}tools/publishing/app-signing.html">Signing | 
|  | Your Application</a>.</p> | 
|  |  | 
|  |  | 
|  | <h3>Usage</h3> | 
|  |  | 
|  | <p>To align {@code infile.apk} and save it as {@code outfile.apk}:</p> | 
|  |  | 
|  | <pre>zipalign [-f] [-v] <alignment> infile.apk outfile.apk</pre> | 
|  |  | 
|  | <p>To confirm the alignment of {@code existing.apk}:</p> | 
|  |  | 
|  | <pre>zipalign -c -v <alignment> existing.apk</pre> | 
|  |  | 
|  | <p>The {@code <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.</p> | 
|  |  | 
|  | <p>Flags:</p> | 
|  |  | 
|  | <ul> | 
|  | <li>{@code -f} : overwrite existing outfile.zip</li> | 
|  | <li>{@code -v} : verbose output</li> | 
|  | <li>{@code -c} : confirm the alignment of the given file</li> | 
|  | </ul> | 
|  |  | 
|  |  | 
|  |  |