我尝试在 Jenkins CI 上启动 Android 模拟器,但启动从未完成。在 CI 上,命令在基于以下内容的 Docker 映像中运行ubuntu:18.04
。我使用以下命令来启动模拟器:
/opt/android-sdk-linux/emulator/emulator -no-audio -no-window -delay-adb \
@Pixel_C_API_25 &
然后我等待模拟器完成:
adb wait-for-device
在我的开发者计算机 (macOS 10.14.6) 上,模拟器完成启动并adb wait-for-device
返回,但在 CI 上模拟器永远不会完成启动。日志输出的相关部分在这里:
Starting emulator
Waiting for emulator
* daemon not running; starting now at tcp:5037
statvfs('/home/ec2-user/.android/avd/Pixel_C_API_25.avd/snapshots/default_boot/ram.img') failed: No such file or directory
### WARNING: could not find /usr/share/zoneinfo/ directory. unable to determine host timezone
emulator: WARNING: encryption is off
Your emulator is out of date, please update by launching Android Studio:
- Start Android Studio
- Select menu "Tools > Android > SDK Manager"
- Click "SDK Tools" tab
- Check "Android Emulator" checkbox
- Click "OK"
* daemon started successfully
### WARNING: could not find /usr/share/zoneinfo/ directory. unable to determine host timezone
Sending interrupt signal to process
Terminated
script returned exit code 143
我认为“模拟器已过时”警告是一个转移注意力的问题,因为它不会在本地给我带来问题。我认为更有可能的问题是:
statvfs('/home/ec2-user/.android/avd/Pixel_C_API_25.avd/snapshots/default_boot/ram.img') failed: No such file or directory
但我无法找到有关导致此问题或解决此问题的原因的信息。当地的ram.img
文件存在。
我尝试过基于以下系统映像的 AVD。以前似乎存在 x86 相关图像不支持 x86 的错误,但我不再收到该错误。相反,他们都给出了上述内容ram.img
error:
system-images;android-25;google_apis;arm64-v8a
system-images;android-25;google_apis;armeabi-v7a
system-images;android-28;google_apis;x86_64
system-images;android-28;google_apis;x86
system-images;android-28;default;x86_64
在每种情况下,我都会使用类似于以下内容的命令创建 AVD:
sdkmanager --install "system-images;android-25;google_apis;armeabi-v7a"
avdmanager create avd --force --name Pixel_C_API_25 --abi google_apis/armeabi-v7a --package "system-images;android-25;google_apis;armeabi-v7a" --device "pixel_c"
有没有人成功获得 Android 模拟器来在 Ubuntu 18 上启动,如果是的话,您使用的是哪个系统映像?