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?
Ответы
Ответ 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.