CircleCI Android constraintLayout不起作用

Jut*_*orn 9 android circleci android-gradle-plugin

我现在正在将CircleCI用于我的项目.我也在我的项目中实现新的constraintLayout.现在我被CircleCI大楼困住了.它在gradle -dependencies运行时向我显示:

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
Run Code Online (Sandbox Code Playgroud)

这是我在.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
Run Code Online (Sandbox Code Playgroud)

我在什么时候检查了构建日志

echo y | android update sdk --no-ui --all --filter "extra-android-m2repository"
Run Code Online (Sandbox Code Playgroud)

命令运行,结果如下:

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.
Run Code Online (Sandbox Code Playgroud)

我的类路径是:

classpath 'com.android.tools.build:gradle:2.2.0-alpha4'
Run Code Online (Sandbox Code Playgroud)

我不确定我做错了什么,或者我需要添加更多内容.请建议.谢谢.

Ale*_* Fu 2

长话短说

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

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

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

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

  • 谢谢,我终于找到了将许可证导出到 CI 的方法,方法是将这些添加到依赖项 pre: - cp -r ${HOME}/${CIRCLE_PROJECT_REPONAME}/android-sdk-license $ANDROID_HOME - cp -r ${HOME}/ ${CIRCLE_PROJECT_REPONAME}/android-sdk-preview-license $ANDROID_HOME 另外,我将 android-sdk-license 和 android-sdk-preview-license 放在我的存储库中 (3认同)