F.X*_*.X. 22 android emulation
我知道在使用Android模拟器时这是一个经常出现的问题,但有没有办法强制模拟器接受持久性更改/system?
仿真器基于QEMU,因此理论上应该可以强制system图像以相同的方式运行userdata(例如),但我不熟悉QEMU如何处理事情.有什么指针吗?
F.X*_*.X. 15
更新:该-nand选项显然已从最新版本的QEMU中删除,因此以下内容可能不再适用.
更新:查看当前做事方式的已接受答案.
Yury的答案是常见的,但是如果你想能够编写脚本(这最终是我想要的),你需要能够在/tmp目录中找到模拟器图像.
我发现你可以覆盖QEMU的行为.这有点hackish,但它确实有效,所以我最终做到了这一点:
system.img从平台目录复制到AVD目录.0x1f400000.以读写模式运行模拟器:
emulator -avd Galaxy_Nexus -qemu -nand system,size=0x1f400000,file=/home/fx/.android/avd/Galaxy_Nexus/system.img
Run Code Online (Sandbox Code Playgroud)
(如果您将模拟器置于详细模式,您会注意到默认情况下它将使用initfile=而不是仅使用file=)
进行更改后,它们会立即保存到本地 system.img
emulator -avd Galaxy_Nexus,它将使用您的更改更新:如果是脚本,QEMU不会立即将更改同步到映像,因此如果您在更改内容后立即重新启动,则可能会丢失数据.我正在寻找解决这个问题的方法......
下次更新:使用adb -e emu kill停止模拟器.reboot会做坏事.
Irv*_* H. 11
目前(使用Build Tools v26,如果Google不像他们那样经常更改内容)如果-writable-system在从命令行启动模拟器时使用该指令,它将允许/system通过重新启动对分区的持久性.也就是说,您将能够写入/system分区,如果重新启动,仍将保留更改.
emulator -avd <AVD_NAME> -writable-system
这也会将您的更改qcow2通常保留在图像文件中.android/avd/<AVD_NAME>.avd/system.img.qcow2
您甚至可以复制此system.img.qcow2文件,使用该-wipe-data指令擦除AVD上的数据,将此文件放回目录中,重新启动,您最初进行的系统更改仍将保留.(警告:至少现在,因为谷歌不断变化的事情)
这实际上是一个非常好的问题.我遇到了同样的麻烦.以下是我的发现.实际上,我使用Ubuntu,我将描述Ubuntu的步骤.如果您使用Windows,则只需更改路径即可.
example.avdandroid-sdk-linux/platforms/android-10/images
到~/.android/avd/example.avdemulator -avd examplemount -o rw,remount -t
yaffs2 /dev/block/mtd0 /system(以发现分区使用命令cat /proc/mtd)/tmp/android-<your_computer_name>使用奇怪的名称
查找tmp模拟器
emulator-PQ7LgE,并将其复制到~/.android/avd/example.avdsystem.img并重命名复制的tmp模拟器到system.imgcache.img,userdata.img并userdata-qemu.img从
~/.android/avd/example.avd祝好运!
| 归档时间: |
|
| 查看次数: |
20528 次 |
| 最近记录: |