现在,借助咱们事后构建好的 Android 模拟器容器,在继续集成和交付零碎 (CI/CD) 上设置以及运行 Android 模拟器比以往任何时候都容易。这些容器能够让您轻松找到并运行正确版本的模拟器,而不用再因为依赖治理而头疼。其同时也让继续集成和交付零碎减少自动化测试变得更为简略,而且不必放心保护大量实体设施所产生的花销。
去年的早些时候,咱们公布了 Android 模拟器下载以及 Docker 镜像生成的脚本 来帮忙开发者部署和调试近程模拟器。这些脚本简化了寻找正确版本的零碎镜像、管理系统依赖以及运行 Android 模拟器的流程。
现在,咱们决定更进一步,来实验性地为每一个重大模拟器更新公布提供事后构建好的 Android 模拟器容器。这些容器不再须要您手动地运行生成器,既节省时间,也升高了复杂度。不必放心,这些事后构建好的容器仍然反对用 Docker 脚本构建的容器的所有性能,比方 adb 和 web 可拜访性。
想要运行这些容器,Linux KVM 是必须的,能够通过在裸机或者反对嵌套虚拟化的虚拟机上运行来启动 Linux KVM。抉择哪种形式取决于您的云计算提供商,请参阅咱们的 文档 获取倡议。
以下脚本阐明了如何将 Android 模拟器容器集成到您的零碎中,并且应用其运行测试。
#!/bin/bash # 这个是咱们将要运行的近程镜像 # 如果须要,Docker 会帮咱们获取该镜像 DOCKER_IMAGE=us-docker.pkg.dev/android-emulator-268719/images/r-google-x64:30.0.23 # 这个是转发端口。最好选用高位端口,这样就不会烦扰到 adb 扫描模拟器。 PORT=15555 # 这里会在后盾启动容器 container_id=$(docker run -d \ -e "ADBKEY=$(cat ~/.android/adbkey)" --device /dev/kvm --publish \ 8554:8554/tcp --publish $PORT:5555/tcp \ $DOCKER_IMAGE) echo "The container is running with id: $container_id" # 留神,您可能会碰到如下信息: # failed to connect to localhost: 15555 # 这只不过表明容器还没有筹备好 echo "Connecting to forwarded adb port." adb connect localhost:$PORT # 咱们不得不等到 `docker ps` 显示为失常。 # 这一过程可能须要一段时间因为模拟器须要齐全启动! echo "Waiting until the device is ready" adb wait-for-device # 当初这个设施正在启动,或者靠近启动实现。 # 咱们只等 sys.boot_completed 的值被设置为1。 while [ "`adb shell getprop sys.boot_completed | tr -d '\r' `" != "1" ] ; do echo "Still waiting for boot.." sleep 1; done # 当初你能够失常地应用模拟器了,举个例子: # ./gradlew installDebug # ./gradlew connectedAndroidTest # 等等 echo "The device is ready" echo "Run the following command to stop the container:" echo "docker stop ${container_id}"
Android 模拟器容器的镜像拉取、运行以及端口转发的示例脚本
想要理解更多对于 Android 模拟器容器的信息,请查阅 README。这是咱们首次提供事后构建好的模拟器容器,所以如果您在应用的过程中发现任何问题或性能申请,请通过 issue tracker 告知咱们。