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文件中的configuration:

 #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 

我在检查构build日志时

 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. 

而我的类path是:

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

我不确定我做了什么不正确的事情,或者有什么需要补充的。 请build议。 谢谢。

Solutions Collecting From Web of "CircleCI Android的constraintLayout不起作用"

TL; DR

您需要将许可证从$ANDROID_HOME/licenses复制到您的CircleCI环境中。

您可以压缩您的许可证并将其存储在Dropbox(或类似的)上并修改您的circle.yml文件以下载许可证并将其提取到$ANDROID_HOME

错误的最后一段几乎可以解释它

在构build项目之前,您需要接受许可证协议,并使用Android Studio SDK Manager完成缺失组件的安装。 或者,要了解如何将许可协议从一个工作站传输到另一个工作站,请访问http://d.android.com/r/studio-ui/export-licenses.html

我有与ConstraintLayout相同的问题,这是我的工作configurationcircle.yml

Alex Fu的回答很好地解释了问题出在哪里以及如何处理,但有一个更简单的解决scheme。 由于许可证文件实际上只是简单的文件,其中包含一串hex字符,因此您可以简单地创build它们而不进行任何复制。 一个例子是把下面的代码放到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" 

这对我有用,并且首先检查caching版本:

依赖关系:
  前:
     #Android SDK平台24
     - 如果[!  -d“/ usr / local / android-sdk-linux / platforms / android-24”]; 然后echo y |  android update sdk --no-ui --all --filter“android-24”; 科幻
     #Android SDK构build工具,修订版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 / platforms / android-24
     -  /usr/local/android-sdk-linux/build-tools/24.0.1
     -  / usr / local / android-sdk-linux / extras / android / m2repository

由CircleCI员工drazisil从这篇文章 采取