sd無法掛載及無法安裝apk的問題(2)
問題原因及原理講解:
由於android系統(這樣叫可能不對應該叫android應用系統吧)在安裝APK時,預設會使用在/sdcard或者/mnt/sdcard目錄下裝置,由於沒有掛載那就不能對sd卡進行操作了。
下面我們來看一個特別的例子來更好地理解問題,假如你的板子是通過sd啟動的(sd必須分成boot和android_fs兩個分割槽),那麼當你的os執行起來時,android應用系統會先掛載boot分割槽讀取裡面的MLO、u-boot.bin、uimage檔案,然後再讀取android_fs分割槽裡面的檔案系統,等os跑起來了以後,os會自動解除安裝boot分割槽。
我們先來看看android裡面的dev/block下有哪些與sd卡相關的,ls你會發現有3個檔案
但是為什麼系統還是會提示sd damage或者sd umount呢?原因是android只會去/sdcard目錄下尋找sd裝置,你沒有掛載sd的某一個分割槽在/sdcard目錄,當然就會報前面的錯,既然沒有空間來容納APK那麼也就不能安裝APK了,
解決方法:
通過是用android除錯工具adb shell使pc連上板子,手動掛載mmcblk0p1到/sdcard下(這時只能掛載1分割槽,因為這時1分割槽是解除安裝狀態可以掛載,2分割槽是檔案系統正在被os呼叫,當你掛載2分割槽時會報出the devices busy的問題),這樣操作的話,mmcblk0p1就掛載成功了,sdcard目錄下就會自動多出Android目錄,裡面包含了一些檔案如APP之類的等,檢視許可權如果許可權不夠時就使用chmod修改它,這時就退出adb
shell使用adb install安裝apk ,adb pull從pc傳入檔案到板子,具體adb使用和adb安裝及其相關操作請檢視此我的目錄(Android移植及除錯)系列的adb命令詳解等幾篇文章,你可以在這些文章中學會adb的使用,接下來apk就可以成功在板子安裝成功了,也可以通過板子從晚上下載apk進行安裝了,這樣就解決了sd無法掛載及無法安裝apk的問題
本文只是我自己在玩omap4430 pandaboard板子遇到問題的一些解決方法,本人很菜,希望大拿們不小心看到此文章後就當路過,要是能指點一下那就更好了!