一個程式開發成這樣感覺起來也很偉大吧,所謂的APP2SD
一點都不難
這是 Android 2.2 的特色,只要在開發程式時給一個設定值
Android 2.2的系統會自動跳出這個視窗,詢問使用者是否將程式裝在記憶卡上
節省手機上有限的空間
至於如何做搬移,這就是Android系統自己會去調配的事情
它不會全部將程式裝在記憶卡上,而會搬移大部分的資料到記憶卡上
只會留下必要的程式在手機的儲存空間
也就是大家所謂的APP2SD
大部分的討論串大多是在如何強制讓系統直接搬移程式
在這裡教你如何在程式開發的角度上,把這項功能也考量進去
對於遊戲....等大容量的程式,Android官方是比較推薦上述類型的程式裝在記憶卡上
---------------------------------------------------------------
開發需求
只要一個最低需求
Android 2.2 (API Level:8)
做為最低開發的目標程式標準
(當然手機也要隨著配合啦....)
---------------------------------------------------------------
AndroidManifest.xml 中,在<manifest> </manifest>的標籤上
加入一個android:installLocation的參數,本例為"auto"
如以下所示:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.J_Test.TestProject"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="auto">
<uses-sdk android:minSdkVersion="8" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".main"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
---------------------------------------------------------------
關於installLocation
關鍵的參數android:installLocation
有三種參數能使用
internalOnly 就是只能限制於在主記憶體中運作
auto 就是自動判斷
preferExternal 是希望能裝在記憶卡中(例如:遊戲....)
不是所有程式都使用auto讓程式判斷就好
Android官方也提到
有些類型的程式不應該使用APP2SD的
因為把資料裝在記憶卡需考量到
記憶卡如果無緣無故被退出,程式很有可能會當掉(crash)
當然,沒有該有安裝程式的那張記憶卡,程式不會在Android系統中出現icon
Services 程式有寫到服務,需要在系統中常駐運行的
Alarm Services 有使用定時提醒的服務,記憶卡退出代表無法正常提醒使用者
Input Method Engines 你開發的程式是做為輸入法的程式
Live Wallpapers 你開發的程式是做為定時換桌布的類型的
Live Folders 放在Android桌面上的動態文件夾,記憶卡被卸載時,該資料夾會暫時消失
App Widgets 你開發的程式是有提供桌面的插件的
Account Managers 程式有使用到Account Manager這個class元件的
Sync Adapters 程式有使用到AbstractThreadedSyncAdapter這個class元件的
Device Administrators 程式有使用到DeviceAdminReceiver這個元件的,做為系統管理類型的
Broadcast Receivers listening for "boot completed" 你的程式會隨著系統開機而會自動執行的,系統剛開機時
在是否搬移頁面的提示框按下是,出現該程式的詳細資訊
按下移至USB儲存裝置
就把資料移到記憶卡裡了,就成功了
官方網站說明
http://developer.android.com/guide/topics/manifest/manifest-element.html#install
http://developer.android.com/guide/appendix/install-location.html
參考資料
http://www.pin5i.com/showtopic-android-2.2-apk-installlocation.html
留言列表