Resources and Assets

在幫助文檔中有關於資源文件的描述和解釋,可以自己去查看。

 

1. 如何處理資源文件和*.db的數據庫文件

  1. 在應用程序初始化時將raw中的db文件拷貝到/data/data/package_name/database/下,然後通過正常方式進行訪問;但是隻有用戶擁有root權限,纔有資格訪問/data/data/package_name/目錄。也就是說,我們開發的程序只能在有root權限的手機上纔可以使用。
  2. 讀取raw的文件:activity.getResources().openRawResource(id) //獲得一個InputStream;
  3. 將資源文件放入SD卡,通過File、InputStream和OutputStream讀取。

2. 資源文件大小限制:Asset限制文件大小UNCOMPRESS爲1MB

      無論是使用Res\raw還是使用Asset存儲資源文件,對文件大小有一個限制。在Emulator中不存在問題,但放到真機G1上時會出現問題,經過查看UNCOMPRESS_DATA_MAX的取值爲1048576字節,除以1024不難發現是1MB 。也就是說GPhone在處理資源文件時不能大於1MB的體積(使用raw或asset存放的文件大小不能超過1048576字節),否則會在logcat下看到如下報錯信息

      解決方法:將文件放入到sdcard(缺點:IO效率不好、耗電大、sd卡可移除);或者SQLite。下面是android開發社區的一個問題QA截取,從中可以看到如果想改變UNCOMPRESS_DATA_MAX ,只能重新編譯android源代碼。但是自己編譯出來的android SDK並不會被GPhone手機廠商所採用,所以這個方法通過自己刷機,自己娛樂娛樂還是可以的。

  • Q: I am trying to load a file using resource. my file size is more than 1mb.
    res/raw: contains a file named abc_fb2. But i am getting UNCOMPRESS_DATA_MAX error in catlog.
    as per my google, i found that there might be asset.h file, which we need to change. with some more value like 3*1024*1024
    so kindly if any body suggest me that how to download the source code of android1.5 sdk. In i will be able to change.
  • A: This is baked into the Android framework. It's not something you canchange unless you're building your own platform.
    If the data is uncompressed and aligned (with zipalign) it can be memory-mapped directly, which is easier on the system than dedicating a large piece of physical memory to hold the entire uncompressed file. 

源代碼編譯修改UNCOMPRESS_DATA_MAX

修改/frameworks/base/include/utils/Asset.h,"UNCOMPRESS_DATA_MAX = 1 * 1024 * 1024" 改爲 "UNCOMPRESS_DATA_MAX = 2 * 1024 * 1024"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章