国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

虛擬SD卡在Android系統(tǒng)中的實現(xiàn)

2014-08-15 00:44:35廣東石油化工學院馬遠佳
電子世界 2014年7期
關鍵詞:刷機外置U盤

廣東石油化工學院 馬遠佳

1.引言

我們知道,Android的設計中,SD卡是非常重要的。有些APK在運行中需要SD卡來存儲數(shù)據(jù),而有些大型游戲需要大量的SD卡空間這樣如果系統(tǒng)沒有接入SD卡,某些APK就會碰到安裝或運行的問題。但是目前的趨勢是,手機內(nèi)部存儲空間越來越大,對于很多人來說,如果不需要安裝大型軟件或游戲數(shù)據(jù)包,僅僅是安裝普通軟件,這些空間已經(jīng)綽綽有余,但是很多程序如拍照、下載等又必須放到外置SD卡上,而不能放到內(nèi)部存儲中,為了使用這些功能,就必須裝一個沒有太多用處的SD卡,實在是有點浪費。所以要想辦法把內(nèi)置空間用起來,現(xiàn)在主流的做法是怎樣的呢?

三星、聯(lián)想的方案是這樣的:把內(nèi)部flash裝載為SDcard,然后把外部SD卡裝載到/mnt/SDcard/下面的某個子目錄。這種做法的優(yōu)點是可以有一個一直存在的SD卡,缺點是內(nèi)置flash要足夠大,mediascanner中要增加/mnt/SDcard/externalSDcard的掃描、裝載卸載處理,而APK是沒有機會安裝到實際的外置SD卡上的。

另一種方案是在沒有SD卡插入時把內(nèi)部flash卡除了安裝系統(tǒng)、app和數(shù)據(jù)之外的剩余空間獨立做成一個分區(qū),然后用這個分區(qū)來模擬SD卡,這就是網(wǎng)上常見的所謂內(nèi)置SD卡和外置SD卡。而在SD卡插入時把實際SD卡重新裝載到mnt/SDcard。此時,實際上對于系統(tǒng)應用和app來說,只有內(nèi)置SD卡即虛擬SD卡才是真正的SD卡。這種做法的優(yōu)點是SD卡插入時APK會安裝到實際SD卡上,可以把flash上的某個目錄作為虛擬SD卡,比較靈活。缺點是因為內(nèi)置SD卡所對應的路徑是默認的SD卡路徑,對于應用程序來說是可見的,而外置SD卡只能當作額外存儲來用,應用程序基本用不上,而且安裝到虛擬SD卡上的APK在第二個SD卡插入時消失所以才出現(xiàn)了為了擴大內(nèi)置SD卡空間而把內(nèi)置、外置SD卡進行交換的各種破解方案。

2.思路

以上兩種方案都有各自的缺陷,如果能像PC機上的虛擬光驅(qū)那樣,使得只用內(nèi)部存儲空間就可以模擬出一個SD卡,在無需插入外置SD卡的情況下,就能讓所有app都認為已經(jīng)有SD卡而能正常運行,而且這個方法還應當盡量簡單,最好不需要刷機,因為root對于多數(shù)人來說還不算太難,也就是下載一個應用運行一下的問題,但刷機畢竟風險較大,對于多數(shù)人來說還是有點顧慮的。

下面的方案,可以解決虛擬SD卡的絕大部分問題,且無需刷機,無需修改內(nèi)核映像文件和啟動ramdisk,只需修改一些文件、增加幾個腳本即可,可以實現(xiàn)開機自啟動,而且虛擬SD卡中的空閑部分也不占用data分區(qū)的實際空間。虛擬SD卡還有另一個額外好處,就是省電,畢竟讀寫外置SD卡還是要費一點電的。能夠支持U盤模式。而且還更進了一步,能夠支持雙重加載,手機和pc能同時訪問虛擬SD卡,對于用戶和應用程序來說,虛擬SD卡與外置SD卡完全沒有區(qū)別了。額外的,本方案可以支持三重掛載,在使用手機助手等調(diào)試工具的同時,還可以實現(xiàn)U盤模式。

3.方法

現(xiàn)在說一下詳細步驟,其實非常簡單,只需要執(zhí)行一下一個安裝腳本即可,然后就萬事大吉了。下載地址http∶//url.cn/NXPVqz。本人的手機是長虹zme,所以腳本也是基于zme寫的,后面會講怎么樣移植到其他手機。

先說一下前提要求,手機必須是已經(jīng)root了的,假定玩家已經(jīng)掌握了root、授權等基本概念和操作,busybox已經(jīng)安裝好,也已經(jīng)安裝并懂得使用RE管理器,如果能懂得一些linux和adb命令那就更好,可以自己去琢磨、試驗。另外,玩家應事先備份system/bin/vold和/system/etc/vold.fstab這兩個文件,因為如果多次執(zhí)行安裝腳本可能造成原始文件被覆蓋。

具體安裝方法是,創(chuàng)建目錄/data/fake-SD,設置權限為全選即所有人可讀寫,把附件中的幾個文件拷貝到/data/fake-SD下面(注意需要修改所有腳本文件的權限為全部可執(zhí)行,否則不成功,另外安裝腳本中用的都是絕對路徑,如果想換個路徑,修改一下腳本即可),拷貝過程可能需要外置SD卡作為中介,或者用騰訊手機助手直接上傳到手機內(nèi)存,然后用RE管理器進入該目錄,執(zhí)行其中的install-fake-SD.sh腳本即可(注意修改權限)。執(zhí)行完后立即生效,無需重啟動。

以后的使用過程中,執(zhí)行switch-tofake-SD.sh就會切換到虛擬的內(nèi)置SD卡,如果想使用外置SD卡,就執(zhí)行switch-toreal-SD.sh,執(zhí)行完后都是立即生效,無需重啟動。

目前方案的效果很不錯,可以支持三重掛載,即在打開usb調(diào)試的情況下還能做到同時支持U盤模式和手機訪問SD卡,這個對于虛擬內(nèi)置SD卡和外置SD卡都支持。另外插入數(shù)據(jù)線時不會再出現(xiàn)提示畫面,自動進入U盤模式。如果使用中出現(xiàn)usb線插拔之后虛擬SD卡掛載不上等等問題,再用RE管理器執(zhí)行一遍自啟動腳本system/etc/intallrecovery.sh往往就能解決。如果還是不行,那就重啟動機器。

而auto-start-fake-SD.sh和autostart-real-SD.sh是安裝和切換時要被拷貝到/system/etc下面的自啟動腳本,分別對應使用虛擬內(nèi)置SD卡和外置SD卡的情況,這個自啟動腳本將會被改名為system/etc/intall-recovery.sh(之所以用這個文件名,是因為這個文件并不存在,但系統(tǒng)啟動時將會自動查找并執(zhí)行有該名字的腳本,而其它.rc自啟動文件都在根目錄,如果要修改的話就需要修改boot映像文件,需要刷機太麻煩,而system/etc是可寫的,所以只是利用這個系統(tǒng)啟動自動執(zhí)行功能而已,并非真要安裝什么recovery。其實這也算是個小竅門,可以利用它來執(zhí)行一些其它需要在系統(tǒng)啟動時自啟動的功能)。

在正常使用虛擬SD卡之后,最好不要再去執(zhí)行安裝腳本install-fake-SD.sh了,因為安裝過程中它會刪除原來的虛擬映像文件,造成數(shù)據(jù)丟失。/data/fake-SD/SD.bin映像文件和data/fake-SD目錄要小心,千萬不要誤刪了。

4.移植

最后談一下移植到其他機器的方法。如果想要在其它機型上使用,必須修改以下幾項內(nèi)容:vold.fstab.real-SD文件中的設備路徑、每個腳本文件開頭的關于設備名稱和路徑的定義、system分區(qū)的設備名和文件系統(tǒng)類型、映像文件的路徑、名稱和大小。下面以中興v880為例。雖然V880內(nèi)置空間很小,但筆者的V880是給家里老人用,只需要電話短信和照相功能就足夠,因此額外配一張SD卡還是顯得有些浪費,因此想虛擬一個80M的SD卡,也能夠存幾百張照片了。

下面來說明怎樣針對自己的機型修改腳本文件。這里最好需要用到UltraEdit,方便編輯腳本文件。首先將vold.fstab.real-SD文件中的dev_mount sdcard/mnt/sdcard auto/devices/platform/msm_sdcc.4/mmc_host替換,具體的設備名稱路徑在sys/devices/platform里面找到,v880對應的設備路徑改為dev_mount sdcard/mnt/sdcard auto/devices/platform/msm_sdcc.1/mmc_host/mmc0

然后將每個腳本文件中的設備名和路徑都修改一遍,這里主要修改:

(1)大容量存儲設備文件字段ums_dev,具體在/sys/devices/platform/找到lun0/file,然后填寫相應的路徑到ums_dev的等號后。

(2)真實SD卡設備字段real_sd_dev,具體在/dev/block/里面找到mmcblk0p1文件的相應路徑填入。SD/MMC的驅(qū)動通用,進一步的,Linux的設備節(jié)點就延續(xù)了MMC的這個名字,后面的blk是塊設備這個英文的簡寫,mmcblk也就是“mmc/sd塊設備”,0就是這個mmc/sd設備的順序編號,p1就是第一個分區(qū)。如果有多個mmcblk就只能根據(jù)名稱一個個試了。

(3)如果想修改虛擬SD卡的大小,只需要修改install-fake-SD.sh中的fake_SD_img_sparse_seek參數(shù)即可,這個參數(shù)是以塊大小為單位的,而塊大小我用的是2K,因此fake_SD_img_sparse_seek=1048576就相當于2G,如果想更改內(nèi)置虛擬SD卡大小就修改這個參數(shù)即可,修改塊大小也可以。經(jīng)試驗,2k的塊大小的速度是比較快的,因此不建議修改塊大小,只修改seek數(shù)就行。80M對應的seek=40960(80M×1024K÷2K)。

(4)虛擬SD卡的路徑如果放在/data下就不用改,如果放到自定義的目錄下就修改為相應的路徑。

需要注意的是,如果選擇預占用空間完整文件的方法,執(zhí)行安裝腳本的時候就會當場生成一個2G的大文件,這個過程很漫長,估計會接近10分鐘,因此建議開始做試驗的時候還是用缺省的稀疏文件方法,初始大小基本為0,生成速度快,便于反復試驗。

再次提醒每次改動文件后都要記得修改權限之后才能執(zhí)行成功。至此,已經(jīng)完成了的虛擬SD卡腳本的移植,怎么樣?快來試試充分利用上你的手機空間吧!

猜你喜歡
刷機外置U盤
瀏覽器的神奇玩法
PLC可編程控制器相關外置的選擇計算研究
電子制作(2019年13期)2020-01-14 03:15:34
采用U盤文件冗余方案實現(xiàn)TSP系統(tǒng)的可靠裝載
車載GSM-R外置抗干擾設備
電能表用外置斷路器常見失效模式分析
U盤“鬧肚子”
少年科學(2014年10期)2014-11-14 07:43:02
Pleora推出iPORT CL—U3外置抓幀器
摸個底!哪些人愛刷機?
使用刷機精靈一鍵刷機
電腦迷(2012年13期)2012-04-29 19:26:28
一招鑒定擴容u盤
乌兰浩特市| 文安县| 清苑县| 晋中市| 广灵县| 九台市| 崇仁县| 苏尼特左旗| 扎鲁特旗| 新野县| 年辖:市辖区| 丹江口市| 仁怀市| 曲麻莱县| 开化县| 高唐县| 横山县| 南皮县| 台州市| 弋阳县| 长乐市| 勃利县| 吴江市| 上杭县| 林西县| 阜平县| 昭通市| 三穗县| 鹤庆县| 安陆市| 肇州县| 东阳市| 永仁县| 如皋市| 衡南县| 阿克苏市| 东兴市| 当雄县| 黄龙县| 广安市| 冕宁县|