2012年6月30日 星期六

將大部份android應用程式儲存到SD卡

Android 從 2.2 版Froyo系統之後,允許將應用程式搬移至外部儲存體的SD 卡,換言之,現今版本的 Android 已經可以讓我們將應用程式選擇儲存在手機上的內部儲存體(Internal Storage)或是外部儲存媒體(External Storage)-SD卡

,而當您安裝應用程式於內部儲存體時,它通常是儲存在 /data/data/package_name/ 目錄下,每個應用程式會有一個獨立的目錄來儲存檔案,其他應用程式將無法存取,由於手機的內部儲存體的空間通常有較小的限制,所以實際使用時應該將大部份應用程式安裝在空間較大較且易於擴充的SD Card上。
不過若希望把應用程式儲存在SD卡上,需要撰寫程式者在撰寫程式碼時允許這麼做才行,換言之,就開發人員而言,設計一個允許儲存在SD卡上的應用程式,通常在撰寫程式時利用AndroidManifest.xml 檔案內的<manifest>標籤,新增android:installLocation="auto" 資訊,所以有時候我們想要透過『設定—>應用程式—>管理應用程式』途徑來將某特定應用程式移至SD卡時,可能會發現『移至SD卡』這個選項呈現灰色而無法選按,如此情況可能會讓您以為應用程式本身撰寫之故而無法將其移至SD卡,但事實上這並非不能改變的,您可以透過android SDK內的adb工具來讓應用程式可以被安裝至SD卡,而且您並不需要具有root權限。

MSD

壹. 安裝 android SDK

首先,您必需要先安裝java,然後再到右側網址處下載 android SDK--  http://developer.android.com/sdk/index.html ('installer_r16-windows.exe' ),最後執行 'SDK Manager' ,在出現的對話方塊中需勾選 'Android SDK Platform-tools' 選項然後按 'Install Packages',等待一段時間完成安裝即可。
androidtools1

貳. 啟用手機的USB偵錯功能

您的手機需要開啟 USB偵錯功能,只要經由『設定—>應用程式—>開發』途徑,勾選『USB 偵錯』即可。
接下來,您可以利用USB線將Android手機連接上電腦,Windows將找到android手機並自動安裝驅動程式(請勿開啟USB儲存模式)。
usbdebug1

參. 使用adb命令

Android Debug Bridge (adb)為android SDK內附的一個工具,您可以從Android 官方站下載並安裝 android  SDK,並在安裝的 platform-tools 目錄中(通常是在 C:\Program Files (x86)\Android\android-sdk\platform-tools目錄)找到此一工具。這個工具可以直接操作管理android模擬器或者真正的andriod設備,當機器上有開啟 USB 偵錯模式時,使用者即可通過adb 來進行各種偵錯( debug) 、底層(linux user space)的 Android 功能。

請在命令提示字元內進入\android-sdk\platform-tools這個目錄,然後依序執行下面三個指令:

  1. adb devices
    確認手機已經正確連接上電腦,adb也已經偵測到此設備名稱
  2. adb shell pm getInstallLocation
    以數字顯示目前預設的安裝位置 (0 為內部儲存體、2為外部儲存體)
  3. adb shell pm setInstallLocation 2
    設定預設的安裝位置為外部儲存體--SD卡 (2)

adb

假若日後需要將應用程式改回內部儲存區,則只要再執行一次 "adb shell pm setInstallLocation 0" 指令即可。 

肆. 將大部份應用程式搬至SD卡

一旦完成上述指令,您就可以將原本可能無法移至SD卡的應用程式,透過『設定—>應用程式—>管理應用程式』途徑選取應用程式後按『移至SD卡』按鈕以便搬至SD卡來節省內部儲存空間。另一方面,若您使用android 2.3版以上,您可以在管理應用程式中頁面按一下上頭的『在SD卡』,就可以看到目前所有被允許移到SD卡的應用程式,其中已經打勾者代表目前已存放在SD卡,尚未打勾者則是目前在手機上但可移至SD卡。

movesd usbcard2

無法或不適合搬移至SD卡的應用程式

利用上述方法以adb工具設定預設安裝位置為SD卡後,雖然可以順利的將大部份的應用程式安裝或移至SD卡,但仍然有幾種android應用程式不適合或無法安裝或搬移至SD卡:

  • 桌面小工具 (Widgets):若將桌面小工具移至SD卡,程式恐怕會無法運作
  • 系統工具:如地圖,youtube這些預先安裝的系統工具也不能移至SD卡
  • 開機自動啟動程式:設定開機時自動啟動的應用程式需要開機時啟動執行,若存放在需花一段時間才會掛載的SD卡上恐無法在開機時順利啟動
  • 其它:當android的SD卡被掛載在電腦時,您仍然希望可以繼續使用的應用程式,自然也應該安裝存放在手機上。

後記

利用adb工具可以在沒有root權限下將原本設計安裝在內部儲存體的應用程式改為可以安裝在SD卡,但使用者需要安裝android SDK,這對一般使用者來講實屬不易也不方便,所以如果您的機器已經是root機,則有一些工具提供了相同的功能,例如: DroidSail Super App2SD (ROOT)、Force2SD…等,您可以直接由google play來下載、安裝並執行相同的功能。