【问题标题】:Gitlab CI Android accepting license returns errorGitlab CI Android 接受许可返回错误
【发布时间】:2018-07-18 21:08:10
【问题描述】:

我正在尝试在 docker 的 gitlab runner 上运行功能测试,如 here 所述。但是命令android 已被弃用,现在我们必须改用sdkmanager。这是我的.yml

image: openjdk:8-jdk

variables:
  ANDROID_COMPILE_SDK: "26"
  ANDROID_BUILD_TOOLS: "26.0.2"
  ANDROID_SDK_TOOLS: "24.4.1"

before_script:
  - apt-get --quiet update --yes
  - apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
  - wget --quiet --output-document=sdk-tools-linux-3859397.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
  - unzip sdk-tools-linux-3859397.zip

  - yes | tools/bin/sdkmanager --verbose "build-tools;${ANDROID_BUILD_TOOLS}"
  - yes | tools/bin/sdkmanager "emulator"
  - yes | tools/bin/sdkmanager "extras;google;m2repository"
  - yes | tools/bin/sdkmanager "extras;google;google_play_services"
  - yes | tools/bin/sdkmanager "platform-tools"
  - yes | tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}"
  - yes | tools/bin/sdkmanager "sources;android-${ANDROID_COMPILE_SDK}"

  - yes | tools/bin/sdkmanager --licenses

  - export ANDROID_HOME=$PWD/tools
  - export ANDROID_SDK_ROOT=$PWD/tools
  - export PATH=$PATH:$PWD/tools/platform-tools/
  - export GRADLE_USER_HOME=$/.gradle
  - chmod +x ./gradlew

如果我运行它,我会在日志中看到:

$ yes | tools/bin/sdkmanager --verbose "build-tools;${ANDROID_BUILD_TOOLS}"
Info: Parsing legacy package: /builds/git/proj/android-app/tools
Info: Parsing /builds/git/proj/android-app/tools/package.xml
Warning: File /root/.android/repositories.cfg could not be loaded.
License android-sdk-license:
---------------------------------------
Terms and Conditions
...//Whole license
Accept? (y/N): Info: Preparing "Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)".
Info: "Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)" ready.
Info: Finishing "Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)"
Info: Installing Android SDK Build-Tools 26.0.2 in /builds/git/proj/android-app/build-tools/26.0.2
Info: "Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)" complete.
Info: "Install Android SDK Build-Tools 26.0.2 (revision: 26.0.2)" finished.
done
ERROR: Job failed: exit code 1

没有解释的错误。如果我尝试使用echo y | ... 而不是yes | ... 设置安装命令,它们安装都很好,但后来我收到错误,即不接受许可证。然后我插入命令:

- yes | tools/bin/sdkmanager --licenses

它给了我同样的错误,没有解释:

Accept? (y/N): All SDK package licenses accepted
done
ERROR: Job failed: exit code 1

我不知道为什么它以错误结尾,也没有给我解释发生了什么。

编辑:经过多次尝试,我得出结论,每个包含 - yes | ... 的命令都会返回无法解释的错误。如果我设置- echo y | ... 而不是- yes | ... 我会在构建应用程序时得到稍后:

A problem occurred configuring project ':app'.
> You have not accepted the license agreements of the following SDK components:
  [Android SDK Platform 26, Android SDK Build-Tools 26.0.2].
  Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager.
BUILD FAILED in 45s
ERROR: Job failed: exit code 1

【问题讨论】:

  • 你能排除以下任何抛出错误的命令吗?
  • @StefanvanGastel 我编辑了我的问题

标签: android docker gitlab-ci gitlab-ci-runner


【解决方案1】:

这看起来像是 docker 镜像问题。

简单的解决方法:

- yes | tools/bin/sdkmanager --licenses || true

【讨论】:

  • 我收到“接受所有 SDK 包许可证”和“错误:作业失败:退出代码 1”(在 Docker 中)。这对我有用,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 2015-10-06
  • 2021-12-09
  • 2021-04-04
  • 2020-04-02
相关资源
最近更新 更多