Scr*_*Fox 5 shell android adb android-emulator android-studio
我正在编写一个自动模拟器脚本,该脚本将创建并启动 Android 模拟器,以便我可以从任何计算机运行 UI 测试并保证它将在设备上运行。
我当前的脚本创建了一个android-27;google_apis;x86工作正常的设备,但缺少谷歌服务,因此我的应用程序中的地图不显示。
我尝试使用创建模拟器google_apis_playstore,但是当设备启动时,它会提示 ADB 调试提示。通常点击这个就可以了,但我希望能够在无头服务器上运行它,但并不总是能够。
无论如何,有没有办法创建具有 google api + 地图的模拟器,而不必接受 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;
Run Code Online (Sandbox Code Playgroud)
我在使用时遇到错误google_apis_playstore,因为它无法通过 adb 检查模拟器是否已启动,因为出现对话框。
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.
Run Code Online (Sandbox Code Playgroud)
您需要接受模拟器的调试权限,这似乎很愚蠢?
编辑:我已将此作为错误提交https://issuetracker.google.com/issues/128271326
default与or不同的是google_apis,google_apis_playstore强制执行身份验证。这意味着adb server主机和adb daemon模拟器上都应该共享相同的 RSAadbkey进行通信。文档位于: 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,但如果您在 docker 容器内的桌面和模拟器上运行,adb它们是不同的。adb start-server在发出任何adb命令之前显式调用Run Code Online (Sandbox Code Playgroud)$ adb kill-server $ emulator -avd Nexus_6_API_25 -port 5557 $ adb start-server $ adb devices List of devices attached emulator-5557 device
| 归档时间: |
|
| 查看次数: |
3173 次 |
| 最近记录: |