J'essaie de faire que Travis construise mon projet Android. Il échoue lorsqu'il essaie de télécharger la bibliothèque pour ConstraintLayout
. Savez-vous ce que je dois faire pour que cela fonctionne?
Mon .travis.yml
est ceci:
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
Mon build.gradle
est:
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'
}
Et l'erreur que j'ai sur Travis est la suivante:
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
Une idée comment résoudre ce problème? Est-il même possible de construire ConstraintLayout
avec Travis?
Votre build.gradle
tente d’obtenir com.Android.support.constraint:constraint-layout:1.0.0-alpha2
. Mon SDK Manager ne m'offre que 1.0.0-alpha1
(Rev 32 du référentiel de support Android). Peut-être que Travis CI n’a également que 1.0.0-alpha1
.
Puisque je présume que 1.0.0-alpha2
est en train de travailler sur votre machine de développement, je ne suis pas tout à fait sûr de ce qui se passe ici. Il pourrait y avoir un problème dans l'emballage de la distribution du référentiel de support Android ou quelque chose du genre.
Après la nouvelle version de la bibliothèque de support 25.0.0 , la bibliothèque de Constraint Layout Alpha1 ne fonctionne apparemment plus avec TravisCI. Utiliser cette version était la seule solution de contournement pour le moment.
Maintenant, j'ai trouvé une nouvelle solution pour utiliser la nouvelle version Alpha9 . Dans votre fichier .travis.yml
, ajoutez:
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"
N'oubliez pas d'accepter toutes les licences sur l'objet Android
principal:
licenses:
- Android-sdk-license-.+
- '.+'
Il existe un problème en suspens https://code.google.com/p/Android/issues/detail?id=212128
En bref, com.Android.support.constraint:constraint-layout:1.0.0-alpha1
est intégré à Google Repository, mais 1.0.0-alpha2
et ses versions ultérieures sont uniquement disponibles à partir du plug-in gradle qui attend qu'un texte de licence soit placé dans $HOME/.Android/license/
(s'il est introuvable, essayez $Android_HOME/licenses
).
Vous pouvez copier le fichier texte de licence de votre ordinateur local (après avoir accepté la licence fournie par SDK Manager fournie par Android Studio 2.2) sur le serveur CI, comme indiqué dans le problème. Ou rétrograder à 1.0.0-alpha1
pour résoudre le problème.
J'ai le même problème avec com.Android.support.constraint:constraint-layout:1.0.0-alpha9
. Dans mon cas, j'ai directement essayé de créer le fichier de licence dans Travis de la manière suivante:
before_install:
- mkdir "$Android_SDK/licenses" || true
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$Android_SDK/licenses/Android-sdk-license"
Mais comme je n'ai pas l'autorisation d'écrire sur $Android_SDK
et que Sudo
n'est pas pris en charge, je ne sais pas du tout comment procéder.
La seule option que je vois est d'attendre que Google l'inclue dans la licence ou rétrograde à alpha1
...
La solution de contournement pour accepter la licence n’est plus nécessaire, comme expliqué précédemment ici si vous l’acceptez directement:
- 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"
Malheureusement, l'ajout de licences de hachage ne fonctionne plus.
La solution la plus simple qui a fonctionné pour moi (en 2018 ????) a été de copier les licences SDK de SDK vers mon projet, puis d'indiquer à Travis de les copier pendant la construction.
Il y a déjà un numéro fermé pour cela sur la page Github de Travis et l'une des solutions mentionnées actuellement est définitivement opérationnelle.
Solution
licenses
qui se trouve dans le répertoire racine du SDK Android..travis.yml
..travis.yml
de votre before_install
:.travis.yml:
before_install:
- mkdir "$Android_HOME/licenses" || true
- cp ./licenses/* "$Android_HOME/licenses/"
Lien exact vers la solution: https://github.com/travis-ci/travis-ci/issues/6617#issuecomment-369580270
Lien vers ma réponse initiale à une autre question SO: https://stackoverflow.com/a/49050480/1402616