標籤:android blog http io ar for 檔案 資料 on
http://www.claudxiao.net/2013/10/persistent-change-emulator-system-partition/
對Android的模擬器,如果要修改其system分區裡的檔案,除了remount之外,還需要對資料進行持久化——因為預設情況下emulator會以唯讀形式載入system.img,即便remount之後對其進行的修改也不會實際被儲存下來。
網路上提到多種解決這一持久化問題的方案。例如[1],將/system拷貝至清空後的/data分區,然後將相應的userdata-qemu.img改名為system.img;以及[2],對live的/system,通過yaffs工具將其dump為一個鏡像檔案。這些方法都比較複雜,下面介紹一種簡單的方法,來自[3]。
1. 建立一個AVD,在這個例子裡,我們用Android 4.2.2,命名為root。
2. 將SDK下這個系統的system.img檔案拷貝至AVD的目錄下一份,例如,在這裡:
$ cp adt-bundle-mac/sdk/system-images/android-17/armeabi-v7a/system.img ~/.android/avd/root.avd/
3. 手工指定掛載參數地啟動它:
$ emulator -avd root -qemu -nand system,size=0x1f400000,file=~/.android/avd/root.avd/system.img
其中,0x1f400000是指給/system分區500MB的空間。
4. 系統啟動後,adb remount一下,然後通過adb mount可以看到system分區已經變為rw了。
5. 現在可以對/system分區做希望的修改了。
6. 修改完成後,關掉模擬器。之後正常啟動即可:
$ emulator -avd root
之後如果再要對system做修改,重複第3-6步即可。
嗯,從AVD的名字大家已經可以看出來了,我是想在裡面加個root。方法是:
1. 下載Chainfire的SuperSU的UPDATE zip包[4],並解壓縮。
2. 在上述第5步,執行以下命令:
$ adb push arm/su /system/xbin/
$ adb chmod 06755 /system
$ adb chmod 06755 /system/xbin/su
$ adb install common/Superuser.apk
3. 在模擬器裡,進入SuperSu,會提示更新二進位檔案,選擇常規方法即可。
參考連結
[1] http://allencch.wordpress.com/2012/02/29/learn-to-root-android-using-emulator/
[2] http://blog.thecobraden.com/2012/06/making-persistent-changes-to-android.html
[3] http://stackoverflow.com/questions/15417105/forcing-the-android-emulator-to-store-changes-to-system
[4] http://download.chainfire.eu/supersu
修改Android模擬器的system分區,以及加入SuperSU