我试图修改Android模拟器系统.img文件。我想从修改后的system. img启动android模拟器。
我尝试了https://github.com/anestisb/android-simg2img方法,错误是“Invalid sparse file format at header magi”。
确切的文件是“Android/Sdk/system-images/android-26/google_apis/x86/system.img”,它是从sdkmanager下载的官方google img。
$ file /home/user/Android/Sdk/system-images/android-26/google_apis/x86/system.img
./system.img: DOS/MBR boot sector; partition 1 : ID=0xee, start-CHS (0x0,0,2), end-CHS (0x146,155,21), startsector 1, 5246975 sectors, extended partition table (last)
$ fdisk -lu /home/user/Android/Sdk/system-images/android-26/google_apis/x86/system.img
Disk /home/user/Android/Sdk/system-images/android-26/google_apis/x86/system.img: 2.5 GiB, 2686451712 bytes, 5246976 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9C0C82F8-6E6F-46F9-AFC8-A09D908DAB24
Device Start End Sectors Size Type
/home/huya/tmp/system.img1 2048 5244927 5242880 2.5G Linux filesystem
如何添加一些文件到这个.img文件并从它启动模拟器?基本上我想运行一个自定义的模拟器与一些文件修改,任何其他方法都欢迎。
1条答案
按热度按时间fiei3ece1#
从命令输出中可以看出,Android Emulator映像不再是稀疏映像,而是包含单个分区的完整磁盘映像。
您可以修改单个分区的内容,只需通过环回设备直接挂载它:
分区的偏移量可以使用parted找到:
1048576字节似乎是所有官方图像的偏移量。
然后,您可以在
/mnt
下编辑文件系统的内容,完成后只编辑umount /mnt
。请记住事先备份您正在编辑的图像。更安全的方法
或者,可以说更安全和整洁,您可以在使用
-writable-system
选项启动Android Emulator后通过ADB(Android Debug Bridge)修改系统和供应商映像的内容:然后运行:
它将以root权限运行ADB并以读写方式重新装载所有分区。然后,您可以下拉到
adb shell
进行随意编辑,或者使用adb push
将文件复制到设备上。您的修改将保存在您的AVD目录下的QEMU QCOW映像(
system.img.qcow2
,vendor.img.qcow2
)中(例如:~/.android/avd/myavd.avd
)。