TShopping

 找回密碼
 註冊
搜索
查看: 554|回復: 0

[教學] 如何將應用程序轉移到SD卡

[複製鏈接]
發表於 2013-8-23 17:40:18 | 顯示全部樓層 |閱讀模式
 
Push to Facebook Push to Plurk Push to Twitter 
將應用程序安裝在SD卡上是Android 2.2(code name Froyo)新增的功能。應用程序轉移到SD卡,可以很大程度地避免/data空間不足的狀況。因為用戶所安裝的應用程序都是安裝在/data分區下的(我的HTC Wildfire /data分區是175MB),隨著應用程序的數量逐漸增加,/data分區的空間勢必逐漸減小,那麼何不好好利用有著更大空間的SD卡呢,要知道,現在的SD卡4GB,8GB,甚至16GB都已經很普遍了。在Android 2.2上,這個功能被加入進來了。這個功能的實現很簡單,但同時也有些地方需要注意一下。      這裡先介紹如何將已安裝的應用程序轉移到SD卡:
1. 在home頁,按下menu鍵,然後選擇」設置」,並依次進入」應用程序 –> 管理應用程序」,這時你會看到以下畫面。其中第一欄的」已下載」裡包含著所有由用戶所安裝的應用程序。
   
2. 點擊」已下載」裡的應用程序,如果該應用程序允許被移動到SD卡,會有一個白色可點擊的」移至SD卡」按鈕,點擊這個按鈕,系統就會將該應用程序移動到SD卡了。
   
3. 返回到」管理應用程序」界面,點擊最右側的一欄」SD卡中」,可以看到所有被移動到SD卡的應用程序。
   

      以下是需要注意和瞭解的地方:
1. 應用程序的默認安裝位置是在開發過程中在manifest的」android:installLocation」裡聲明的,它的值可以是"preferExternal" 和"auto"。如果選擇"preferExternal",那麼應用程序默認會被安裝在SD卡(但如果SD卡空間不足,那麼應用程序仍將被安裝在ROM中),如果是」auto」,則會由系統自動判斷應用程序安裝的位置。
2. 根據Android開發文檔,應用程序被移動到SD卡後,應用程序的性能並不會有什麼影響。但是我的疑問是:系統下的分區文件系統(一般是yaffs,yaffs2)和SD上的分區文件系統(一般是FAT32)不同,這一點也不會影響性能嗎?
3. 並不是這個應用程序的所有文件都被轉移到SD卡了,而是只有.apk文件被轉移到SD卡,而其他的.dex,數據庫等一些文件仍然會留在/data分區。
4. 轉移到SD卡的應用程序只能在一個Android設備上使用,而不能拿到其他設備上使用。
5. 當用戶通過USB數據線將Android設備與電腦連接起來,並且USB連接方式是」磁盤驅動器」 時,運行在SD卡上的應用程序會被立馬結束。
6. 不是所有的應用程序都應當安裝在SD卡上,比如輸入法,動態桌面等等,詳細情況請參考引文。

這裡以estrong taskmanager為例來研究Android下App安裝的位置以及App移動到SD卡的情況。
研究方法:
1. 在App安裝前,安裝後,移動後,分別使用adb shell ls -R <path> > <file>將對應路徑下的所有文件保存下來,這裡的path是/data和/mnt;
2. 通過文件比對工具(Linux下用Meld,Windows下WinMerge)對這些文件進行比對,以查看前後的差異。
以下是實驗結果:
App安裝後的變化
/data目錄下多出文件如下:
/data/app/com.estrongs.android.taskmanager-1.apk
/data/data/com.estrongs.android.taskmanager/cache/
/data/data/com.estrongs.android.taskmanager/cache/webviewCache/
/data/data/com.estrongs.android.taskmanager/databases/
/data/data/com.estrongs.android.taskmanager/databases/webviewCache.db-journal
/data/data/com.estrongs.android.taskmanager/databases/etm_info.db
/data/data/com.estrongs.android.taskmanager/databases/webviewCache.db
/data/data/com.estrongs.android.taskmanager/databases/webview.db
/data/data/com.estrongs.android.taskmanager/shared_prefs/
/data/data/com.estrongs.android.taskmanager/shared_prefs/google_ads.xml.xml
/data/data/com.estrongs.android.taskmanager/shared_prefs/com.estrongs.android.taskmanager_preferences.xml
/data/data/com.estrongs.android.taskmanager/shared_prefs/ignore_list.xml
/data/data/com.estrongs.android.taskmanager/lib/
/data/dalvik-cache/data@app@com.estrongs.android.taskmanger-1.apk@classes.dex
另外,可能發生改變的文件有:
/data/data/com.htc.launcher/share_prefs/WidgetPackageManager.xml
App移動到SD card後的變化
/data目錄減少的文件如下:
/data/app/com.estrongs.android.taskmanager-1.apk
/data目錄發生變化的文件如下:
原/data/dalvik-cache/data@app@com.estrongs.android.taskmanger-1.apk@classes.dex
變成/data/dalvik-cache/mnt@asec@com.estrongs.android.taskmanger-1@pkg.apk@classes.dex
/data目錄可能發生變化的文件如下:
/data/system/appwidgets.xml
/mnt目錄多出的文件如下:
/mnt/asec/com.estrongs.android.taskmanager-1/
/mnt/asec/com.estrongs.android.taskmanager-1/pkg.apk
/mnt/secure/asec/com.estrongs.android.taskmanager-1.asec

相關鏈接如下:
1. Android 2.2新功能: http://www.ifanr.com/14463
2. Android APP install location(需要翻牆): http://developer.android.com/guide/appendix/install-location.html

http://anriqing.blogbus.com/logs/79373429.html

 

臉書網友討論
您需要登錄後才可以回帖 登錄 | 註冊 |

本版積分規則



Archiver|手機版|小黑屋|免責聲明|TShopping

GMT+8, 2016-12-10 19:13 , Processed in 0.062571 second(s), 22 queries .

本論壇言論純屬發表者個人意見,與 TShopping綜合論壇 立場無關 如有意見侵犯了您的權益 請寫信聯絡我們。

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表