1. 程式人生 > >Android 常見問題之Assets檔案大小限制

Android 常見問題之Assets檔案大小限制

       Android Asset Packaging Tool(aapt)使用這個工具可打包所有資料 Image XML檔案 任何資原始檔.在生成APK時aapt選擇性的壓縮各種資源來節省裝置空間,aapt使用字尾來決定哪個資源需要壓縮,aapt原始碼定義一些不需要壓縮的檔案字尾。附aapt原始碼Package.cpp

/* 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"

};
       在Android 2.3以前的任何壓縮的資源的原始大小超過1M將不能從APK中讀出,如果你使用AssetManager 或 Resources classes方法來獲取InputStream,將丟擲java.io.IOException的異常如下     DEBUG/asset(1123): Data exceeds UNCOMPRESS_DATA_MAX (20078432 vs 1048576);

      可以看到如果需要打包資料庫的童鞋檔案過大就需要注意了。

解決方法如下:

1.將你的資原始檔字尾改成上面列出的字尾。
2.在命令列上使用-0引數來指定不需要壓縮的檔案字尾。當你使用Eclipse內的ADT目前還不知道有什麼方法可以傳遞-0引數給aapt。
3.將你的資原始檔分割成UNCOMPRESS_DATA_MAX(1M)以下的檔案.