Android 常見問題之Assets檔案大小限制
阿新 • • 發佈:2019-02-19
Android Asset Packaging Tool(aapt)使用這個工具可打包所有資料 Image XML檔案 任何資原始檔.在生成APK時aapt選擇性的壓縮各種資源來節省裝置空間,aapt使用字尾來決定哪個資源需要壓縮,aapt原始碼定義一些不需要壓縮的檔案字尾。附aapt原始碼Package.cpp
在Android 2.3以前的任何壓縮的資源的原始大小超過1M將不能從APK中讀出,如果你使用AssetManager 或 Resources classes方法來獲取InputStream,將丟擲java.io.IOException的異常如下 DEBUG/asset(1123): Data exceeds UNCOMPRESS_DATA_MAX (20078432 vs 1048576);/* 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" };
可以看到如果需要打包資料庫的童鞋檔案過大就需要注意了。
解決方法如下:
1.將你的資原始檔字尾改成上面列出的字尾。2.在命令列上使用-0引數來指定不需要壓縮的檔案字尾。當你使用Eclipse內的ADT目前還不知道有什麼方法可以傳遞-0引數給aapt。
3.將你的資原始檔分割成UNCOMPRESS_DATA_MAX(1M)以下的檔案.