2016-12-02 3 views
4

J'utilise gitlab-ci pour construire mon projet Android. Après beaucoup de recherches, j'ai trouvé comment accepter les licences sdk. Mais je reçois une erreur de licence non acceptée sur ConstraintLayout bibliothèque. Voici mon .gitlab-ci.yml:Comment accepter automatiquement les licences de bibliothèque Android à partir de la ligne de commande?

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/ 

Je copyed mes fichiers de licence à l'$ANDROID_HOME/licenses avec copy_licenses.sh:

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

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

après l'exécution, je reçois cette erreur:

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 

Comment accepter ConstraintLayout 1.0.0-beta4 licence à partir de la ligne de commande?

+0

une solution? J'ai le même problème – Jagu

Répondre

-1

Essayez while true; do echo "y"; sleep 1;done au lieu de echo y

+0

Ce n'est pas un problème avec l'acceptation de la licence sdk android. J'ai essayé le même '.gitlab-ci.yml' sur un autre projet qui n'utilise pas' ConstraintLayout' et la construction est réussie. – Prime

+0

Il est possible que vous deviez accepter plusieurs licences et je suppose que 'echo y' fait juste le premier. – Rince

2

dans mon cas en ajoutant before_script: partie a aidé à:

- 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"