Zipalign is something a lot of people don’t know about, and even when they do, they don’t use it. The definition by Google on zipalign is:

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 build.properties file, so that the build tools can sign the package first.

For more information on zipalign you can visit zipalign | Android Developers
The usage of zipalign is:
Code:zipalign [-f] [-v] <alignment> infile.apk outfile.apk

Where alignment is always 4 or it will not do anything. In Android 2.1, you do not need to resign apps, you just need to zipalign them before pushing them using adb.