我需要在docker镜像中包含现有的android模拟器及其中包含的更改(qcow2文件)。
测序:
1)通过Android Studio创建模拟器
2)使用-writable-system
选项
emulator -avd xposed -writable-system
3)进行必要的更改(Xposed安装,一些xposed模块,SD卡上的数据记录等)。写入qcow2文件的所有这些更改(system.img.qcow2,sdcard.img.qcow2等)
4)停止模拟器
5)存档
cd /home/user/.android/avd && tar -cvzf xposed.tar.gz .
6)在泊坞窗文件中:
ADD xposed.tar.gz /root/.android/avd
7)在xposed.ini
中更改模拟器实例的绝对路径
path=/root/.android/avd/xposed.avd
当尝试在docker中运行模拟器时 - 将重新创建包含更改的qcow2文件,而不是使用现有文件。 :(
我得到了相同的android-sdk工具和模拟器版本,相同的JDK等等。
还尝试将harware-qemu.ini中的路径更改为新路径(/root/.android/avd/xposed/....
),但没有运气。
有关系统和泊坞窗的一些信息:
1)Android版本23(6.0)x86 google_apis image
2)运行docker命令:
sudo docker run -d -p 5900:5900 -p 5555:5555 --privileged -v /dev/kvm:/dev/kvm --name xposed xposed
3)运行android模拟器命令:
usr/local/android-sdk/emulator/emulator -avd xposed -noaudio -no-window -gpu off -verbose -qemu -usbdevice tablet -vnc :0
我真的不知道该怎么做。这是真的,有一次有运气,我得到它并且工作得很好,但我失去了这种状态,现在没有任何反应:(
顺便说一下,在正常行为中,我会收到错误,例如:
avd\system.img.qcow2,read-only: Could not open backing file: Could not open .....
但现在没有错误,它只是覆盖我的文件:(
答案 0 :(得分:1)
将仿真器从主机复制到docker容器时遇到了同样的问题:docker中的仿真器总是在工厂重置后启动(在最好的情况下)清理,忽略所有更改。这就是我解决问题的方法:
/root/.android/avd/<emulator name>
目录从docker容器复制到主机(使用docker cp
命令)。这样,我获得了模拟器的备份副本,其中包含可与docker一起使用的所有自定义设置。/root/.android/avd/<emulator name>
目录添加到了图像中。现在,当我从新图像启动一个docker容器时,我有一个工作模拟器,其中包含我需要的所有设置。额外提示:如果要使用模拟器的快照功能,则必须将容器中的更改提交到新映像(请参阅docker commit
命令),然后使用该新映像,只需复制<{1}}目录在这种情况下不起作用,您的快照将始终被忽略。