Переместите все на SD-карту на виртуальном устройстве Android (эмулятор)

Мне нужно выполнить странное задание. Я хочу переместить всю систему Android на внешнюю SD-карту на виртуальном устройстве Android. Мне нужно это сделать, потому что эмулятор Android эмулирует команды SD только для образа внешней карты. И я хочу получить трассировку команд SD во время использования виртуального устройства Android.

Если быть более точным: я хочу переместить как минимум папки /system и /data на внешнее хранилище. Таким образом, эта система все еще может нормально работать =)

Спасибо!

Ответы (1)

Чтобы переместить некоторые из системных папок (/system или /data) на внешнюю эмулируемую SD-карту, вам необходимо сделать следующее:

  1. Во-первых, содержимое /data (например) должно быть помещено на SD-карту. Изначально они загружаются эмулятором из файла userdata.img. Поэтому вам нужно скопировать ($EMUPATH/system-images/android-19/armeabi-v7a/userdata.img)содержимое userdata.img в sdcard.iso.$> dd if=userdata.img of=sdcard.iso
  2. Я предполагаю, что создано виртуальное устройство Android. Чтобы изменить конфигурацию загрузки, вам нужно будет изменить fstab.goldfishфайл в формате ramdisk.img. Если это Android 4.4 AVD, то его ramdisk.imgтакже можно найти по адресу$EMUPATH/system-images/android-19/armeabi-v7a/
  • Создайте временную папку, скажем, ramdisk-ext$ mkdir ramdisk-ext
  • Сменить каталог на ramdisk-ext$ cd ramdisk-ext
  • Извлеките ramdisk.cpio в папку ramdisk-ext.$ gunzip -dcv ../ramdisk.img | cpio -idm
  • Измените fstab.goldfish $ gedit fstab.goldfishследующим образом:
    • Строка №6 от "/dev/block/mtdblock1 /data ..."до"/dev/block/mmcblk0 /data ..."
  • Создать новый виртуальный диск$ find . | cpio -H newc -o | gzip -9 >../ramdisk_new.img
  1. Все готово, теперь вам нужно запустить эмулятор с вашим новым RAM-диском и пользовательской SD-картой:$ ./emulator -avd $AVDNAME -sdcard sdcard.iso -ramdisk $EMUPATH/system-images/android-19/armeabi-v7a/ramdisk_new.img

PS Обратите внимание, что в этом примере вы можете переместить только одну из таких папок (/system или /data). Возможно, это можно изменить, создав образ SD-карты с несколькими разделами.