2025-03-26

前言


  本章內容為開發者指南(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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *