CircleCI Android constraintLayout не работает

Теперь я использую CircleCI для моего проекта. Также я реализую новый constraintLayout в моем проекте. Теперь я застрял с зданием CircleCI. Это показывает мне это, когда запускаются зависимости gradle :

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 

Вот моя конфигурация в файле .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 

Я проверил в журнале сборки, когда

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

И вот результат:

 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. 

И мой classpath:

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

Я не уверен, что я сделал неправильно или есть что-то, что мне нужно добавить. Пожалуйста, предложите. Благодарю.

Solutions Collecting From Web of "CircleCI Android constraintLayout не работает"

TL; DR

Вам необходимо скопировать лицензии из $ANDROID_HOME/licenses в среду CircleCI.

Вы можете закрепить свои лицензии и сохранить их на Dropbox (или что-то подобное) и изменить свой файл circle.yml чтобы загрузить лицензии и извлечь их в $ANDROID_HOME .

Последний абзац ошибки в значительной степени объясняет это

Перед созданием проекта вам необходимо принять лицензионные соглашения и завершить установку отсутствующих компонентов с помощью Android Studio SDK Manager. Кроме того, чтобы узнать, как перенести лицензионные соглашения с одной рабочей станции на другую, перейдите по адресу http://d.android.com/r/studio-ui/export-licenses.html.

У меня такая же проблема с ConstraintLayout , это моя рабочая конфигурация circle.yml

Ответ Алекс Фу прекрасно объясняет, где проблема и как с ней бороться, но есть более простое решение. Так как файлы лицензий на самом деле просто простые файлы с шестью символами в них, вы можете создавать их просто без копирования. В качестве примера можно привести следующий код в разделе 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" 

Это сработало для меня, а также сначала проверяет кешированные версии:

 зависимости:
   до:
     # Android SDK Platform 24
     - если [ !  -d "/ usr / local / android-sdk-linux / platform / android-24"];  Затем echo y |  Android update sdk --no-ui - all --filter "android-24";  фи
     # Android SDK Build-tools, версия 24.0.1
     - если [ !  -d "/usr/local/android-sdk-linux/build-tools/24.0.1"];  Затем echo y |  Android update sdk --no-ui --all --filter "build-tools-24.0.1";  фи
     # Репозиторий поддержки Android, редакция 35 / Локальный репозиторий Maven для библиотек поддержки
     - если [ !  -d "/usr/local/android-sdk-linux/extras/android/m2repository/com/android/support/design/24.1.0"];  Затем echo y |  Android update sdk --no-ui --all --filter "extra-android-m2repository";  фи


   cache_directories:
     - / usr / local / android-sdk-linux / platform / android-24
     - /usr/local/android-sdk-linux/build-tools/24.0.1
     - / usr / local / android-sdk-linux / extras / android / m2repository

Взято с этого поста работником CircleCI drazisil