Rover12421's Blog

The End.

关于apk压缩包问题

       修改apktool添加外部资源的时候,使用了Zip流来添加资源,但是总是遇到问题,修改了3次,总算是找到了问题的核心.第一次所以文件都使用压缩,二次所以文件都没有压缩.今天找到一篇文章,总算是找到关键.原文章:

http://ponystyle.com/blog/2010/03/26/dealing-with-asset-compression-in-android-apps/.原来aapt打包apk文件并非所以的资源都需要压缩.下面引用aapt源码中的一段:

/* these formats are already compressed, or don't compress well */
static const char* kNoCompressExt[] = {
    ".jpg", ".jpeg", ".png", ".gif",
    ".wav", ".mp2", ".mp3", ".ogg", ".aac",
    ".mpg", ".mpeg", ".mid", ".midi", ".smf", ".jet",
    ".rtttl", ".imy", ".xmf", ".mp4", ".m4a",
    ".m4v", ".3gp", ".3gpp", ".3g2", ".3gpp2",
    ".amr", ".awb", ".wma", ".wmv"
};

       然后在aapt里就相应的判断下是否需要压缩,来修改ZipEntery的类型就可以了.压缩的使用ZipEntry.DEFLATED,不压缩的使用ZipEntry.STORE.经过测试,重新打包的apk一切正常!

Comments