如何从命令行自动接受android库许可证?

时间:2016-12-02 11:16:04

标签: android gradle cmd licensing android-library

我正在使用gitlab-ci来构建我的android项目。经过大量搜索后,我发现了如何接受sdk许可证。但我在ConstraintLayout库上收到许可不被接受的错误。这是我的.gitlab-ci.yml

    image: openjdk:8-jdk

    variables:
    ANDROID_TARGET_SDK: "25"
    ANDROID_BUILD_TOOLS: "25.0.0"
    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=android-sdk.tgz https://dl.google.com/android/android-sdk_r${ANDROID_SDK_TOOLS}-linux.tgz
    - tar --extract --gzip --file=android-sdk.tgz
    - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter android-${ANDROID_TARGET_SDK}
    - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter platform-tools
    - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter build-tools-${ANDROID_BUILD_TOOLS}
    - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-android-m2repository
    - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-google_play_services
    - echo y | android-sdk-linux/tools/android --silent update sdk --no-ui --all --filter extra-google-m2repository
    - export ANDROID_HOME=$PWD/android-sdk-linux
    - chmod +x ./gradlew
    - chmod +x ./copy_licenses.sh
  build:
    script:
      - ./copy_licenses.sh
      - ./gradlew assembleDebug
    artifacts:
      paths:
      - app/build/outputs/

我使用$ANDROID_HOME/licenses将我的许可文件复制到copy_licenses.sh

    #!/bin/bash
    # fail if any commands fails
    set -e
    # debug log
    set -x

    cp -a "./android-licenses" "$ANDROID_HOME/licenses"

执行此操作后,我收到此错误:

    FAILURE: Build failed with an exception.

    * What went wrong:
    A problem occurred configuring project ':app'.
    > You have not accepted the license agreements of the following SDK components:
      [Solver for ConstraintLayout 1.0.0-beta4, ConstraintLayout for Android 1.0.0-beta4].
      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.
      Alternatively, to learn how to transfer the license agreements from one workstation to another, go to http://d.android.com/r/studio-ui/export-licenses.html

    * Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

    BUILD FAILED

如何从命令行接受ConstraintLayout 1.0.0-beta4许可证?

2 个答案:

答案 0 :(得分:2)

在我的案例中,

帮助添加了before_script:部分:

    - mkdir -p "${ANDROID_HOME}/licenses"
    - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "${ANDROID_HOME}/licenses/android-sdk-license"
    - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "${ANDROID_HOME}/licenses/android-sdk-preview-license"
    - echo -e "\nd975f751698a77b662f1254ddbeed3901e976f5a" > "${ANDROID_HOME}/licenses/intel-android-extra-license"

答案 1 :(得分:-1)

尝试使用while true; do echo "y"; sleep 1;done代替echo y

相关问题