将现有的Android模拟器(AVD)移至Docker容器



我需要在docker image中包含现有的android模拟器,其中包含的更改(qcow2 files)。

测序:

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)在Docker文件中:

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/....),但没有运气。

有关系统和Docker的一些信息:

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 Emulator命令:

usr/local/android-sdk/emulator/emulator -avd xposed -noaudio -no-window -gpu off -verbose -qemu -usbdevice tablet -vnc :0

我真的不知道该怎么办。这是真实的,有一次有运气,我明白了,它运行良好,但是我失去了这种状态,现在什么也没有发生:(

顺便说一句,在正常行为中,我会遇到一个错误,例如:

avdsystem.img.qcow2,read-only: Could not open backing file: Could not open .....

但是现在没有错误,它只是覆盖我的文件:(

我在将仿真器从主机复制到docker容器时也遇到了相同的问题:docker内部的仿真器总是会(在最好的情况下)清洁我的变化。这就是我解决问题的方式:

  • 我在Docker容器内启动了仿真器,然后在模拟器运行时安装了所需的所有内容(Xposed,Custom Apks等)。
  • 按照我想要的方式设置模拟器后,我关闭了如果关闭并将/root/.android/avd/<emulator name>目录从Docker容器复制到主机计算机(使用docker cp命令)。这样,我获得了模拟器的备份副本,并使用Docker使用的所有自定义设置。
  • 我构建了一个新的Docker映像,其中包含运行模拟器所需的所有SDK内容和工具,然后将先前保存的/root/.android/avd/<emulator name>目录添加到图像中。现在,当我从新图像启动Docker容器时,我有一个工作模拟器,其中所有需要的设置。

奖励提示:如果要使用模拟器的快照功能,则必须将容器中的更改提交为新映像(请参阅docker commit命令),然后使用该新图像,只需复制avd目录即可在这种情况下工作,您的快照将永远被忽略。

相关内容

  • 没有找到相关文章

最新更新