Friday, May 21, 2010

如何讓應用程式直接安裝到SD卡執行(2.2)

Android 2.2 中新增了應用程式直接安裝到SD卡執行 (不少人稱這個功能作 App2SD),
要使用這個功能只要在目前程式中做幾個設定:

1. 專案的 Project Build Target 版本設定為 2.2 (API 8)
2. 修改 AndroidManifest 清單

設定 Project Build Target 版本

在 Eclipse 專案列表中按右鍵,選取 properties 選項,會彈出設定視窗。
在上面選擇左側的 Android 標籤,在右側 Build 欄位勾選「Android 2.2」選項(沒有這選項的請參考 管理SDK 來升級SDK),如此一來編譯時才能認得我們接下來在 AndroidManifest 清單中所做的設定。

修改 AndroidManifest 清單

在 manifest 標籤中加入一個「android:installLocation」屬性,實際程式碼如下

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
package="com.demo.org"
android:versionName="1.0" android:versionCode="1"
android:installLocation="preferExternal"
>
....

說明

android:installLocation="preferExternal"

清單中加入以上宣告後,編譯好的程式仍然可以適用於較低版本的機器,只有在程式安裝到 Android 2.2 版之後的系統上,系統才會自動將這個程式安裝到 SD 卡中。

安裝到SD卡中時程式會預作一次加密,讓只有安裝本程式的機器能存取這個程式,避免了程式可能會輕易被盜拷的疑慮。

沒有用到 Service、桌面小工具(Widget)、或動態桌布(Live Wallpaper)功能的程式比較適合儲存到SD卡,例如遊戲或 BMI 等小程式。

因為當機器使用 USB 和電腦連線,將SD卡掛載成磁碟機時,這些儲存在SD卡中執行的程式將會被中斷。

其他提示請參考 Android 官方文件

Android 2.2,完全版的Android就應該長這樣



現在在Google I/O 2010 會場看現場發表會。Froyo 真的是非常高完成度的版本,除了機器OS本身之外,還支援了許多對開發者、對使用者都有利的特性:

開發者:

  • 新版開發工具支援 Library Project,意思是同時開發試用版/正式版時,終於可以共用多數程式碼和資源檔,而不用完全開兩個專案出來
  • 支援 Data Backup API,表示任何應用程式都可以使用 Android Cloud 將程式中的資料記錄到雲端上,換到任何其他台手機上都可以備份回來。
  • 允許遠端控制機器
  • 多種模式的 Mobile AdSense
  • 應用程式可以直接安裝到SD卡,得以在Android上實現大型遊戲等應用
  • Google TV 上也能裝 Android 應用程式。這表示什麼?表示開發Android平台遊戲就能打進電視遊戲市場!
使用者
  • 應用程式/網頁都有2~3倍以上的執行速度
  • 應用程式能從SD卡中執行
  • 在網頁版Market上點選安裝,在機器上即能自動下載
  • 語音辨識功能、桌面搜尋功能更強大
  • 有新版本應用程式可以自動從 Market 更新
  • 搭載Froyo的設備能直接變成行動 AP (tethering)
開發者們又很有事情可以做了 :)