我正在编写一个自动模拟器脚本,它将创建并启动Android模拟器,这样我就可以从任何机器运行我的UI测试,并保证它将在设备上运行。
我当前的脚本创建了一个android-27;google_apis;x86
设备工作正常,但缺乏谷歌服务,所以我的应用程序中的地图不显示。
我尝试使用google_apis_playstore
创建模拟器,但是当设备启动时,它会提示ADB调试提示。通常点击这将是好的,但我希望能够在无头服务器上运行它并且不能总是能够。
反正是否有创建具有谷歌apis +地图的模拟器而不必接受ADB对话框?
这是我当前的shell脚本
#!/bin/sh
# Run this script in root project dir
# Kill existing emulator
$ANDROID_HOME/platform-tools/adb devices | grep emulator | cut -f1 | while read line; do $ANDROID_HOME/platform-tools/adb -s $line emu kill; done
# Install system image
$ANDROID_HOME/tools/bin/sdkmanager "system-images;android-27;google_apis;x86"
yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses
# Create emulator
echo "no" | $ANDROID_HOME/tools/bin/avdmanager create avd -f \
-n "tester" \
-k 'system-images;android-27;google_apis;x86' \
-b x86 \
-d "Nexus 5X"
# Start emulator
$ANDROID_HOME/emulator/emulator -avd tester &
# Wait for emulator to start
$ANDROID_HOME/platform-tools/adb wait-for-device shell input keyevent 82
while [ "`$ANDROID_HOME/platform-tools/adb shell getprop sys.boot_completed | tr -d '\r' `" != "1" ] ; do sleep 1; done
sleep 5;
我在使用google_apis_playstore
时遇到错误,因为它无法检查是否因为对话框而启动了模拟器。
error: device unauthorized.
This adb server's $ADB_VENDOR_KEYS is not set
Try 'adb kill-server' if that seems wrong.
Otherwise check for a confirmation dialog on your device.
看起来很傻,你需要接受模拟器的调试权限?
编辑:我已将此作为bug https://issuetracker.google.com/issues/128271326提交
与default
或google_apis
不同,google_apis_playstore
正在执行身份验证。这意味着主机上的adb server
和模拟器上的adb daemon
都应该共享相同的RSA adbkey
进行通信。文档在这里:https://developer.android.com/studio/command-line/adb
通常它会自动运行。 adb start-server
命令将创建adbkey
文件,然后emulator/emulator
将它们复制到图像文件系统中。但由于它在您的情况下不起作用,您必须仔细验证错误配置的位置:
adb keygen adbkey
会生成2个文件 - adbkey
和adbkey.pub
$HOME/.android
服务器的$ANDROID_VENDOR_KEYS
文件夹(或者adb
)$HOME/.android
的$ANDROID_SDK_HOME/.android
文件夹(或者emulator/emulator
)。通常HOST == GUEST但是如果你在桌面上运行adb
并且在docker容器内运行模拟器它们是不同的。adb start-server
命令之前显式调用adb
$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device