Подтвердить что ты не робот

Travis CI build не работает с Android Constraint Layout

Я пытаюсь заставить Travis построить мой Android-проект. Он не работает, когда пытается загрузить библиотеку для ConstraintLayout. Знаете ли вы, что я должен сделать, чтобы он работал?

My .travis.yml:

language: android
jdk:
  - oraclejdk8
android:
  components:
    - platform-tools
    - tools
    - build-tools-23.0.2
    - android-23
    - extra-android-support
    - extra-android-m2repository
    - extra-google-m2repository

Мой build.gradle:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"
    defaultConfig {
        applicationId "my.example.bdd"
        minSdkVersion 9
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.4.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha2'
    testCompile 'junit:junit:4.12'
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
    androidTestCompile 'com.android.support.test:runner:0.5'
    androidTestCompile 'com.android.support:support-annotations:23.4.0'
}

И ошибка, которую я получаю на Travis:

FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':app'.
> Could not resolve all dependencies for configuration ':app:_debugApk'.
   > Could not find com.android.support.constraint:constraint-layout:1.0.0-alpha2.
     Searched in the following locations:
         https://jcenter.bintray.com/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.pom
         https://jcenter.bintray.com/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.jar
         file:/usr/local/android-sdk/extras/android/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.pom
         file:/usr/local/android-sdk/extras/android/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.jar
         file:/usr/local/android-sdk/extras/google/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.pom
         file:/usr/local/android-sdk/extras/google/m2repository/com/android/support/constraint/constraint-layout/1.0.0-alpha2/constraint-layout-1.0.0-alpha2.jar

Любая идея, как это исправить? Можно ли даже построить ConstraintLayout с помощью Travis?

4b9b3361

Ответ 1

Ваш build.gradle пытается втянуть com.android.support.constraint:constraint-layout:1.0.0-alpha2. Мой менеджер SDK предлагает мне 1.0.0-alpha1 (Rev 32 из Репозитория поддержки Android). Возможно, у Трэвиса CI также есть 1.0.0-alpha1.

Поскольку я полагаю, что у вас есть 1.0.0-alpha2, работающий на вашей машине разработки, я не совсем уверен, что здесь происходит. Может возникнуть сбой в дистрибутиве в хранилище поддержки Android или что-то в этом роде.

Ответ 2

После новой версии версии Support Library 25.0.0 библиотека Travine Layout Alpha1, по-видимому, больше не работает в TravisCI. Использование этой версии было единственным обходным решением на данный момент.

Теперь я нашел новое обходное решение для использования новой версии Alpha9. В файле .travis.yml добавьте:

before_install:
  - mkdir "$ANDROID_HOME/licenses" || true
  - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_HOME/licenses/android-sdk-license"
  - echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_HOME/licenses/android-sdk-preview-license"

Не забывайте принимать все лицензии на основном объекте android:

licenses:
  - android-sdk-license-.+
  - '.+'

Ответ 3

Существует открытая проблема https://code.google.com/p/android/issues/detail?id=212128

Короче говоря, com.android.support.constraint:constraint-layout:1.0.0-alpha1 вставляется в репозиторий Google, но 1.0.0-alpha2 и более поздняя версия доступны только из плагина gradle, который ожидает, что текст лицензии будет помещен в $HOME/.android/license/ (если не найден, попробуйте $ANDROID_HOME/licenses),

Вы можете скопировать текстовый файл лицензии с вашего локального компьютера (после согласования с SDK Manager, предоставленного Android Studio 2.2), на сервер CI, как указано в выпуске. Или перейдите на 1.0.0-alpha1, чтобы устранить проблему.

Ответ 4

У меня такая же проблема с com.android.support.constraint:constraint-layout:1.0.0-alpha9. В моем случае я прямо пытался создать файл лицензии в Travis таким образом:

before_install:
  - mkdir "$ANDROID_SDK/licenses" || true
  - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

Но поскольку у меня нет прав на запись на $ANDROID_SDK, и нет поддержки для sudo, я понятия не имею, что делать дальше.

Единственный вариант, который я вижу, - дождаться, пока Google включит его в лицензии или понизит до alpha1...

Ответ 5

Обходной путь для принятия лицензии больше не требуется, как описано здесь, если вы его прямо принимаете:

  - echo yes | sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2"
  - echo yes | sdkmanager "extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2"

Полный рабочий пример с использованием репозитория codelab с ограничением-компоновкой для уровня API от 22 до 25.