每次看到Android 2.2以上的機型有App2SD的功能就羨慕到不行,自己這臺HTC Hero更新到最後也只有到Android 2.1版本,要再上去就得冒著風險刷ROM,實在是很難下手。不過多虧Bulent Akpinar設計出的Link2SD,現在我也可以將HTC Hero裝在ROM裡面的大量程式移到SD記憶卡中,讓手機可以安裝更多大容量的程式囉。
以下我想簡單地聊聊為什麼要將應用程式搬移到SD記憶卡,然後介紹Link2SD之前的記憶卡準備動作、Link2SD所需要的root動作以及Link2SD的操作。必須注意的是,這篇並不是確實地記錄我使用Link2SD的每一個步驟,因為實際上我是四處碰壁之後最後才成功。我將我認為可能是最簡單、最正確的作法記錄如下,供大家參考。如果你照這篇來Link2SD卻發生了錯誤,也歡迎一起來討論一下該怎麼解決會比較好喔。
為什麼要將應用程式移至SD記憶卡?
Android手機通常內建的記憶體並不多,HTC Hero僅有256MB,而且這之中還要佔去Android作業系統與必要的程式,實際上可以用的記憶體更少。
我在尚未使用Link2SD之前,必要軟體安裝到最後,通常只剩下10MB左右的空間。這個空間裝些小應用程式是沒什麼問題,但是要裝些遊戲,例如知名的Angry Birds火爆鳥,可就是一件非常難以取捨的事情。
對我來說,手機要能夠處理日常業務是首要的工作,遊戲只是其次。但是當安裝應付日常業務的應用程式就快要將手機的記憶體用完的時候,又會覺得不能安裝遊戲是一件很可惜的事情。這時候就會覺得iPhone一次就給8G其實是個不錯的作法。
Android 2.2之後支援App2SD功能,使用者可以將安裝在手機記憶體的應用程式移至SD記憶卡中。儘管運作速度上不會比在手機中還要快,而且甚至有些系統核心的應用程式放在SD卡中運作時會不穩定,但是卻換來可以安裝更多應用程式的彈性。
Android應用程式中,對系統依賴較少,但是卻非常佔空間的程式,就屬於遊戲類莫屬。以Angry Birds來說,安裝大小需要16MB,努力擠一下還可以安裝。可是當你要玩許多款遊戲時,就會覺得App2SD是很重要的功能啦。
Android 2.1以下的App2SD替代方案:Link2SD
儘管App2SD是Android 2.2以上才有的功能,但是Android 2.1以下的手機,例如HTC Hero,卻可以使用Link2SD這個替代方案來解決。Link2SD的作法也跟App2SD差不多,他也是將存在手機記憶體的應用程式「搬移」並「連接」到SD記憶卡中。
要使用Link2SD的話,需要有不少的準備,以下一一敘述。
1. 硬體工具:一張2GB以上的MicroSD、讀卡機以及電腦
Android手機使用的記憶卡都是MicroSD,購買手機時通常都會隨機附贈。而這也是預備要儲存應用程式的地方。大部分的人都會建議MicroSD速度越快、容量越大越好。沒有多方測試之下,我也沒個準則。我自己是使用創見的MicroSDHC 8GB Class4,很普通的一張卡。
然後你還需要一臺電腦,以及能夠連接電腦的MicroSD讀卡機,並確定它能讀到你這張記憶卡。不可以用手機喔。
2. 備份記憶卡內容
在處理這張記憶卡時,通常會有資料毀損的風險。在此建議先將記憶卡的資料複製到電腦中備份,將SD記憶卡處理完之後,再從電腦複製到記憶卡還原。
3. MicroSD切割第二磁區
Android中,不知為何不能只用單一磁區來儲存應用程式,必須要使用MicroSD上第二個磁區才行。你可以想像是我們會把硬碟分割成C磁碟跟D磁碟一樣,只是現在切割的對象並不是硬碟,而是MicroSD記憶卡,所以你需要一臺電腦以及讀卡機來完成這個作業。
一般來說,網路上大家都是用MiniTool Partition Wizard這套Windows軟體來處理分割,Home Edition個人及非商業使用是免費的。
MiniTool Partition Wizard Home Edition (以下簡稱PWHE)是英文版,可能有些人不會操作。以下我以一張MicroSD 2G的記憶卡作示範。
在開啟PWHE之前,請先將讀卡機與記憶卡插上,確定電腦可以讀取得到。然後安裝完並開啟PWHE主程式之後的介面如上圖,應該會發現到有一個FAT格式的外接式磁碟,那就是你的記憶卡。
如果你的電腦出現了很多很多磁碟,而你也不知道哪個才是記憶卡的話,建議可以先將其他外接磁碟都移除,只留下記憶卡,這樣處理的時候就不容易出錯了。
接著請在選擇記憶卡的情況下按下上方工具列的「Move/Resize」(如上圖(1)所示),他會跳出一個「Move/Resize Partition」對話視窗,然後請按照上圖(2)所示的位置拖曳,縮小記憶卡磁區的空間,讓後面留下大約500MB到1000MB左右的空間即可。後面空間大小如上圖(3)的Unallocate Space After所示。
後面要保留的空間,是之後要給Android連接應用程式的位置。網路上大部分建議是放到500MB至1000MB之間即可。太少沒有意義,太多則是浪費。
確定之後,請按下「OK」。
縮小了原本的磁區之後,你會看到記憶卡中多了一些未分配(Unallocated)的磁區,接著我們要在記憶卡上建立第二個磁區,請按下工具列的「Create」。
PWHE跳出了一個警告視窗,意思是Windows將會讀不到第二個磁區,你確定還要繼續嗎?在此我們按下「Yes」繼續。
接著會看到Create New Partition對話視窗,這邊是建立第二顆磁區的設定。請修改「Create As:」成為「Primary」,而「File System:」成為「Ext2」。其他資料不必修改。
值得一提的是File System檔案系統的設定。「Ext2」是Linux最為泛用的檔案系統,大部分在做App2SD的SD記憶卡格式化時,都是選擇「Ext2」作為檔案系統,而實際上在HTC Hero中的運作也不會覺得特別差。有人建議「Ext3」或「Ext4」的速度更快、用於存取Android應用程式時效率更佳,但是手機卻不一定支援Ext3或Ext4的格式。根據Link2SD作者Bakpinar的建議,格式化成FAT32是好的方法,因為所有手機都支援FAT32。
在此我選擇保守,以Ext2來格式化。確定之後按下「OK」即可。
你可以看到剛剛灰色的Unallocated未分配磁區,現在變成了黃色的Ext2磁區了。
確定當一切設定都沒問題之後,請再按下左上角的「Apply」來將這些設定套用到記憶卡上。
PWHE跳出了一個警告視窗,告訴你在處理的過程中請不要關掉電腦。按下「Yes」繼續。
你需要等上一段時間,直到PWHE全部處理完成的提示出現為止。
4. 建立第二磁區的掛載目錄
接著請在記憶卡的第一個磁區中建立「/data/sdext2」這兩個目錄。通常Android裡面已經會建好「data」目錄,你只需要在「data」目錄中建立「sdext2」目錄即可。實際上我並不是用電腦的檔案總管來建立,而是用Android裡面的應用程式Linda File Manager來操作。不過我想應該是沒有多大差別。
這一步似乎很少教學會提到,我是四處碰壁之後才發現有這招。如果沒有建立此目錄的話,我在Link2SD掛載時會一直出現「mount: invalid argument」或是「mount: no space on device」等錯誤。建立此目錄之後就能夠解決此問題了。
上述步驟做完之後,接下來就可以將此記憶卡安裝到手機中,接著就要來做Link2SD的準備了。
5. 還原記憶卡的檔案
第2步驟中備份在電腦中的資料,這時候可以複製回記憶卡當中了。
root的意思是取得手機控制的管理員權限。預設手機上的使用者是沒有管理員權限,這會讓很多程式無法順利運作。
現在在Android上取得root權限的方式很簡單,使用Universal Androot即可。
原本這是一個在Android Market上架、可供人安裝下載的應用程式,但不知何時他已經被下架了。不過我想這個免費軟體應該還是可以自由散佈的吧?
總之不論如何,請在你的Android手機上安裝Universal Androot、開啟,點下上圖中左方的「Root :-)」,稍待片刻就會出現root成功的訊息了。
在root之後同時也會安裝Superuser Permission這個軟體。稍後在開啟Link2SD的時候,Link2SD會透過Superuser Permission跟手機要求root的權限。
沒啥需要特別說明的,就在Android Market上裝了他,然後開啟吧。
8. 開啟Link2SD的掛載設定
第一次開啟Link2SD時,它會要求你選擇第二個磁碟分割的檔案系統。照我上述的作法來看,請選擇Ext2即可。
如果發生沒有root權限的錯誤,請檢查你是否有確實root。通常手機重開機之後並不會馬上讓所有需要root的軟體可以立刻運作,請稍等一段時間,讓Link2SD確實取得root權限之後,再來按下設定吧。
如果發生「mount: Device or resource busy」的錯誤訊息的話,請將你的手機拔掉USB連接線,讓他獨立運作。
如果你像我一樣發生了「mount: invalid argument」或是「mount: no space on device」等錯誤,而且Link2SD中「Storage Info」顯示「SD Card 2nd Part.」為「N/A」,這表示手機並沒有順利掛載第二顆磁碟分割。請確認記憶卡中是否有建立「/data/sdext2」的目錄,然後將手機重新開機之後再試試看。
如果沒有任何錯誤訊息,那就是成功了。接著請先將手機重新開機,再來做其他動作。
9. 使用Link2SD來搬移應用程式到SD記憶卡中
Link2SD會列出所有應用程式,你可以搬移的只有自己下載並安裝的程式,系統內建的應用程式並不能去動它。
你可以利用Link2SD的「Filter」功能的「Not Linked (User)」,方便你挑選要移到SD記憶卡的應用程式。
點入你自己下載、安裝的應用程式之後,就可以看到上面的畫面。點選右下角的「Create Link」,然後確認幾個步驟,就能夠完成搬移、連結的動作。
搬移之後有幾點需要注意的:
- 手機要重新開機才能生效,你可以使用Link2SD的Quick Reboot功能來重開機。未重開機之前,該應用程式無法使用。
- 已經搬移的程式,桌面上的小工具、程式、捷徑等設定都會消失,需要重新設定。
以下我補充整理我認為不要搬移比較好的應用程式:
結語
仔細回頭一看,發現要使用Link2SD居然是如此大工程的事情。事實上,昨天光是弄這個功能,算入四處碰壁、搜尋問題解決方式的時間,大概就耗費掉我八個小時有吧。這對一般使用者來說,還真的是有不小的門檻。
雖然說Android 2.2以上有支援App2SD,但是上述將SD記憶卡切割出第二個磁碟分割的動作,也是一個必須要經過的作業。而這依然不是能夠簡單完成的工作。
我想,只能期待未來Flash ROM越來越便宜,手機可以用更合理的價格來內建更大的記憶容量,應該是一個理想的解決之道吧。在這之前,Android的手機,2.2以上就先靠App2SD,而2.1以下就先用Link2SD來應付容量上的需求吧。
(more...)
Comments