前言
本章內容為開發者指南(Dev Guide)/Developing/Appendix/App Install Location,版本為Android3.0 r1,翻譯來自”madgoat”,歡迎訪問它的博客:”http://madgoat.cn“,再次感謝”madgoat” !期待你一起參與翻譯Android的相關資料,聯系我over140@gmail.com。
原文
http://developer.android.com/guide/appendix/install-location.html
正文
自API Level 8開始,你可以允許你的應用安裝至擴展存儲(例如,SD卡)。這是一個可選功能,你可以在你應用的manifest屬性android:installLocation
裡設定。如果你沒設定這個屬性,那麼你的應用將被安裝到內置存儲,而且將不允許移動到擴展存儲上。
為瞭允許系統可以在擴展存儲上安裝你的應用,修改你的manifest文件,在 <manifest> 元素中包含android:installLocation 屬性,設置其值為”preferExternal”或”auto”。例如:
<manifest xmlns:android=http://schemas.android.com/apk/res/android
android:installLocation=”preferExternal”
… >
如果你定義瞭 “preferExternal”,意味著你要求你的應用安裝至擴展存儲,但是系統不能保證應用肯定會安裝至擴展存儲。如果擴展存儲沒有空間瞭,系統將把應用安裝到內置存儲。用戶可以在兩個位置之間移動你的應用。
如果你定義瞭 “auto”,表示你的應用可能會安裝在擴展存儲,但是對安裝位置沒有特別的偏好。系統將基於很多因素決定你的應用安裝到哪裡。用戶同樣可以將應用在兩個位置之間移動。
當你的應用安裝在擴展存儲上:
* 隻要擴展存儲已經掛載在設備上,對應用的性能都沒有影響。
* .
apk 文件保存在擴展存儲上,但是所有的用戶私有數據,數據庫,優化過的 .dex 文件和釋放的原生代碼都保存在內置存儲空間上。
* 存儲你應用的唯一容器是被一個隨機生成的KEY加密存放的,僅僅能被最初安裝的設備進行解密操作。因此,安裝在SD卡上的應用僅僅針對一個設備可以工作。
* 用戶可以通過系統設置移動你的應用到內置存儲。
警告:當用戶啟用USB大容量存儲以共享文件給計算機或者通過系統設置卸載SD卡,外置存儲從設備卸載並且所有運行在外置存儲的應用立刻都被結束。
向後兼容Backward Compatibility
將你的應用安裝至擴展存儲的功能是運行API Level 8(Android 2.2)及以上版本的設備才有效的。使用API Level 8 之前的版本編譯的已存在的應用,將一直安裝在內置存儲,並且無法移動至擴展存儲(即使設備上運行的是API Level 8版本的系統)。然而,如果你的應用計劃支持低於8的API Level,你可以選擇針對API Level 8及更高版本支持此特性,並且繼續保持與低於API level 8的設備兼容。
為瞭允許安裝在擴展存儲並且保持與API Level 8或更低版本兼容:
* 在 <manifest>
元素中,包含值為”auto”或 “preferExternal” <SPAN st