【问题标题】:Android emulator with Google API not starting with Jenkins on Ubuntu Server 16.04具有 Google API 的 Android 模拟器未从 Ubuntu Server 16.04 上的 Jenkins 开始
【发布时间】:2018-01-11 11:53:29
【问题描述】:

在带有 Android Emulator Plugin 的 Ubunut Server 16.04 上使用 Jenkins,当我将操作系统版本设置为“android-19”时,我设法让它工作。下面是设置的简短屏幕截图:

虽然这适用于插件和模拟器,但我的应用程序需要 Google Play 服务才能正常运行。使用 Google API 搜索 android 的图像(这听起来像我需要的)我最终进入了插件的帮助页面,因为它说:

如上所述,“Android 操作系统版本”字段将自动完成 到现有的 SDK 版本,例如“1.5”或“2.2”。然而,它是 可以在此字段中输入不同的值,例如,如果您 想要使用您已安装的 Android SDK 插件,例如这 Google API 插件或 Samsung GALAXY Tab 插件。在这些情况下, 只需输入“android list target”给出的适当值 命令。

例如:基于 Android 1.6 的 Google API 插件 模拟器:Google Inc.:Google API:4

所以我尝试使用:Google Inc.:Google APIs:19 填充 Android OS 版本,结果发现我的 Target ABI 存在一些问题。进一步搜索发现,在使用 OS 的这种命名时,我必须在 Target ABI 之前添加一个标签。应该是:“google_apis/armeabi-v7a”

然后设置看起来像:

但是当我构建时,我会收到一条等待模拟器启动的长控制台终端消息,这似乎永远不会发生:

$ /var/lib/jenkins/tools/android-sdk/tools/android list target
[android] Using Android SDK: /var/lib/jenkins/tools/android-sdk
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb start-server
* daemon not running. starting it now at tcp:5825 *
* daemon started successfully *
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb start-server
[android] Starting Android emulator
$ /var/lib/jenkins/tools/android-sdk/tools/emulator -engine classic -ports 5782,5783 -report-console tcp:5836,max=60 -prop persist.sys.language=pt -prop persist.sys.country=BR -avd hudson_pt-BR_160_WQVGA_Google_Inc._Google_APIs_19_google_apis-armeabi-v7a_testing2 -no-snapshot-load -no-snapshot-save -no-window
WARNING: Force to use classic engine to support snapshot.
ERROR: resizing partition e2fsck failed with exit code 8
emulator: WARNING: Classic qemu does not support SMP. The hw.cpu.ncore option from your config file is ignored.
emulator: warning: opening audio output failed

emulator: WARNING: Requested adb port (5783) is outside the recommended range [5555,5586]. ADB may not function properly for the emulator. See -help-port for details.
emulator: Listening for console connections on port: 5782
emulator: Serial number of this emulator (for ADB): emulator-5782
[android] Emulator reported that the console is available on port 5,782
[android] Waiting for emulator to finish booting...
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
$ /var/lib/jenkins/tools/android-sdk/platform-tools/adb -s emulator-5782 wait-for-device shell getprop init.svc.bootanim
[android] Emulator reported that the startup process is ''
[android] Timed-out after waiting 360 seconds for emulator
[android] Stopping Android emulator

[android] Emulator reported that the startup process is '',带有 Android 操作系统版本 android-19,显示为 [android] Emulator reported that the startup process is 'running',但使用 Google API 时似乎无法启动。

我设置错了什么?

【问题讨论】:

    标签: android jenkins android-emulator ubuntu-server


    【解决方案1】:

    我正在研究类似的问题。您的第一个问题是模拟器正在尝试连接到不存在的 adb 端口。

    $ /var/lib/jenkins/tools/android-sdk/platform-tools/adb start-server 守护进程没有运行。现在从 tcp:5825

    开始

    /var/lib/jenkins/tools/android-sdk/tools/emulator -engine classic -ports 5782,5783 -report-console tcp:5836,max=60 -prop persist.sys .language=pt -prop persist.sys.country=BR -avd hudson_pt-BR_160_WQVGA_Google_Inc._Google_APIs_19_google_apis-armeabi-v7a_testing2 -no-snapshot-load -no-snapshot-save -no-window 警告:强制使用经典引擎支持快照。

    如果您可以让这些端口匹配,它应该可以工作。我的猜测是插件有问题。可能存在一些文件权限问题或插件中的任何内容旨在使端口在执行之间匹配。有一个环境变量,您可以在其中指定 adb 服务器端口。我是 jenkins 的新手,还没有开始工作。

    【讨论】:

    • 开始挖掘jenkins android插件源码。简要看一下,其中一个端口是自动生成的。可能那里有些断开连接。我们的解决方法是使用 -P 标志设置环境变量 ANDROID_ADB_SERVER_PORT 来启动 adb 服务器。运行 gradle connectedAndroidTest 时,此环境变量适用于模拟器和 adb
    猜你喜欢
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2016-12-06
    • 2014-12-31
    • 2018-01-05
    • 2017-04-14
    • 2015-06-01
    • 1970-01-01
    相关资源
    最近更新 更多