How to automatically accept Android library licenses from the command line?

I am using gitlab-ci to create my Android project. After many searches, I found how to accept sdk licenses. But I get a license of an unaccepted error in the library ConstraintLayout. Here is mine .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/

I copied my license files in $ANDROID_HOME/licenseswith copy_licenses.sh:

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

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

after doing this, I get this error:

    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

How to accept a ConstraintLayout 1.0.0-beta4license from the command line?

+4
source share
2 answers

in my case it helped to add a before_script:part:

    - 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"
+2
source

while true; do echo "y"; sleep 1;done echo y

-1

Source: https://habr.com/ru/post/1662624/


All Articles