CircleCI Android constraintLayout no funciona

Ahora estoy usando el CircleCI para mi proyecto. También estoy implementando la nueva constraintLayout en mi proyecto. Ahora estoy atascado con el edificio CircleCI. Me muestra esto cuando gradle -dependencies run:

File /home/ubuntu/.android/repositories.cfg could not be loaded. 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: [com.android.support.constraint:constraint-layout:1.0.0-alpha3, com.android.support.constraint:constraint-layout-solver:1.0.0-alpha3]. 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 

Esta es mi configuración en el archivo .yml:

 #Install android build tools, platforms #Supported versions here https://circleci.com/docs/android machine: java: version: openjdk8 environment: ANDROID_HOME: /usr/local/android-sdk-linux dependencies: pre: - echo y | android list sdk - echo y | android update sdk --no-ui --all --filter "tools" - echo y | android update sdk --no-ui --all --filter "platform-tools" - echo y | android update sdk --no-ui --all --filter "build-tools-24.0.0" - echo y | android update sdk --no-ui --all --filter "android-24" - echo y | android update sdk --no-ui --all --filter "extra-google-m2repository" - echo y | android update sdk --no-ui --all --filter "extra-google-google_play_services" - echo y | android update sdk --no-ui --all --filter "extra-android-support" - echo y | android update sdk --no-ui --all --filter "extra-android-m2repository" - (./gradlew -version): timeout: 360 override: #- ANDROID_HOME=/usr/local/android-sdk-linux ./gradlew dependencies - export TERM="dumb"; if [ -e ./gradlew ]; then ./gradlew clean dependencies -stacktrace;else gradle clean dependencies -stacktrace;fi #Pull any submodules checkout: post: - git submodule init - git submodule update #-PdisablePreDex is a must else gradle just dies due to memory limit #Replace test: override: - (./gradlew assemble -PdisablePreDex): timeout: 360 - cp -r ${HOME}/${CIRCLE_PROJECT_REPONAME}/app/build/outputs/apk/ $CIRCLE_ARTIFACTS - emulator -avd circleci-android22 -no-audio -no-window: background: true parallel: true # wait for it to have booted - circle-android wait-for-boot # run tests against the emulator. - ./gradlew connectedAndroidTest #Deploy when tests pass deployment: #production: # branch: master # commands: # - (./gradlew clean assembleRelease crashlyticsUploadDistributionRelease -PdisablePreFex): # timeout: 720 staging: branch: staging commands: - (./gradlew clean assembleStaging crashlyticsUploadDistributionStaging -PdisablePreFex): timeout: 720 

Comprobé el registro de la compilación cuando

 echo y | android update sdk --no-ui --all --filter "extra-android-m2repository" 

Comando ejecutar y aquí es el resultado:

 November 20, 2015 Do you accept the license 'android-sdk-license-c81a61d9' [y/n]: Installing Archives: Preparing to install archives Downloading Android Support Repository, revision 33 Installing Android Support Repository, revision 33 Installed Android Support Repository, revision 33 Done. 1 package installed. 

Y mi classpath es:

 classpath 'com.android.tools.build:gradle:2.2.0-alpha4' 

No estoy seguro de lo que he hecho incorrectamente o hay algo que necesito para agregar más. Por favor recomiende. Gracias.

TL, DR

Necesita copiar las licencias de $ANDROID_HOME/licenses en su entorno CircleCI.

Puedes cerrar tus licencias y guardarlas en Dropbox (o algo similar) y modificar tu archivo circle.yml para descargar las licencias y extraerlas a $ANDROID_HOME .

El último párrafo del error casi lo explica

Antes de crear su proyecto, debe aceptar los acuerdos de licencia y completar la instalación de los componentes que faltan mediante el Administrador de SDK de Android Studio. Como alternativa, para aprender a transferir los acuerdos de licencia de una estación de trabajo a otra, vaya a http://d.android.com/r/studio-ui/export-licenses.html

Tengo el mismo problema con ConstraintLayout , éste es mi círculo de trabajo config.yml

La respuesta de Alex Fu explica muy bien dónde está el problema y cómo tratarlo, pero hay una solución más sencilla. Dado que los archivos de licencia son realmente sólo archivos simples con un montón de caracteres hexadecimales en ellos se pueden crear simplemente sin copiar. Un ejemplo sería poner el siguiente código en la sección pre: :

 - ANDROID_HOME=/usr/local/android-sdk-linux - mkdir "$ANDROID_HOME/licenses" || true - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license" - echo "84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license" - echo "d975f751698a77b662f1254ddbeed3901e976f5a" > "$ANDROID_HOME/licenses/intel-android-extra-license" 

Esto funcionó para mí, y también comprueba primero las versiones en caché:

 Dependencias:
   pre:
     # Android SDK Platform 24
     - Si [ !  -d "/ usr / local / android-sdk-linux / plataformas / android-24"];  Entonces echo y |  Android actualización sdk --no-ui --all --filter "android-24";  Fi
     # Android SDK Build-tools, revisión 24.0.1
     - Si [ !  -d "/usr/local/android-sdk-linux/build-tools/24.0.1"];  Entonces echo y |  Android actualización sdk --no-ui --all --filter "build-tools-24.0.1";  Fi
     # Repositorio de soporte de Android, revisión 35 / Depósito local de Maven para bibliotecas de soporte
     - Si [ !  -d "/usr/local/android-sdk-linux/extras/android/m2repository/com/android/support/design/24.1.0"];  Entonces echo y |  Android actualización sdk --no-ui --all --filter "extra-android-m2repository";  Fi


   Cache_directories:
     - / usr / local / android-sdk-linux / plataformas / android-24
     - /usr/local/android-sdk-linux/build-tools/24.0.1
     - / usr / local / android-sdk-linux / extras / android / m2repository

Tomado de este poste por el empleado de CircleCI drazisil

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.