2016-07-05 16 views
9

Używam teraz CircleCI dla mojego projektu. Również wdrażam nowy constraintLayout w moim projekcie. Teraz utknąłem w budynku CircleCI. To pokazuje mi to, kiedy Gradle -dependencies Run:CircleCI Android constraintLayout nie działa

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 

Oto moja konfiguracja w .yml pliku:

#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 

sprawdziłem w dzienniku budowy poleceń podczas

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

uruchom i tutaj jest wynik:

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. 

A moja ścieżka klasy jest:

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

Nie jestem pewien, co robiłem nieprawidłowo lub jest coś muszę dodać więcej. Proszę zasugeruj. Dzięki.

Odpowiedz

2

TL; DR

Trzeba skopiować licencji od $ANDROID_HOME/licenses w środowisku CircleCI.

Możesz skompresować swoje licencje i zapisać je na Dropbox (lub coś podobnego) i zmodyfikować plik circle.yml, aby pobrać licencje i wyodrębnić je do $ANDROID_HOME.

Ostatni akapit błędu całkiem dużo wyjaśnia

Przed budować swój projekt, trzeba zaakceptować warunki umów licencyjnych i zakończyć instalację brakujących komponentów za pomocą menedżera Android Studio SDK. Alternatywnie, aby dowiedzieć się, jak przenieść umów licencyjnych z jednego stanowiska do drugiego, przejdź do http://d.android.com/r/studio-ui/export-licenses.html

+3

Dzięki, ale w końcu znalazł drogę do eksportu licencji do CI dodając je do zależnoś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 Dodałem też do Androida-sdk-license i android-sdk- podgląd-licencja w moim repozynie – Jutikorn

+1

To jest świetna wskazówka! Ale proponuję umieszczenie zawartości "android-sdk-license" i "android-sdk-preview-license" jako dwóch oddzielnych zmiennych środowiska IK, ponieważ chronione są env vars, co niekoniecznie jest prawdziwe dla twojego Repo VCS. – dbm

+0

@Jutikorn gdzie mogę to również pobrać? Znalazłem tylko "android-sdk-license" – Spurdow

1

ten pracował dla mnie, a także sprawdza wersje buforowane pierwszy:

 
dependencies: 
    pre: 
    # Android SDK Platform 24 
    - if [ ! -d "/usr/local/android-sdk-linux/platforms/android-24" ]; then echo y | android update sdk --no-ui --all --filter "android-24"; fi 
    # Android SDK Build-tools, revision 24.0.1 
    - if [ ! -d "/usr/local/android-sdk-linux/build-tools/24.0.1" ]; then echo y | android update sdk --no-ui --all --filter "build-tools-24.0.1"; fi 
    # Android Support Repository, revision 35/Local Maven repository for Support Libraries 
    - if [ ! -d "/usr/local/android-sdk-linux/extras/android/m2repository/com/android/support/design/24.1.0" ]; then echo y | android update sdk --no-ui --all --filter "extra-android-m2repository"; fi 


    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 

Zrobione z this post przez CircleCI pracownik drazisil

2

mam ten sam problem z ConstraintLayout, to jest mój config roboczego circle.yml

+0

Używam twojego pliku .yml, ale wciąż mam ten sam problem. – codevscolor

+0

W końcu zadziałało. Skopiowałem folder licencji i zadziałało :) – codevscolor

2

Odpowiedź Alex Fu wyjaśnia ładnie, gdzie leży problem i jak sobie z nim poradzić, ale jest prostsze rozwiązanie. Ponieważ pliki licencyjne są po prostu zwykłymi plikami zawierającymi kilka znaków szesnastkowych, można je utworzyć po prostu bez kopiowania.Przykładem może być wprowadzenie następujący kod do sekcji 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"