| 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> |
| |
| |
| |