Avant d'écrire cette question, je cherchais déjà la même question à ce sujet, ils ont exporté la licence car ils utilisent toujours la version alpha de contraindre la mise en page. Mais maintenant, Android publie déjà une version stable de la mise en page contraint. J'ai essayé beaucoup de configuration mais j'ai quand même échoué.
mon dernier .travis.yml
language: Android
jdk: oraclejdk8
Android:
components:
- platform-tools
- tools # to get the new `repository-11.xml`
- tools # see https://github.com/travis-ci/travis-ci/issues/6040#issuecomment-219367943)
- build-tools-25.0.0
- Android-25
# Additional components
- extra-google-google_play_services
- extra-google-m2repository
- extra-Android-m2repository
licenses:
- 'Android-sdk-preview-license-52d11cd2'
- 'Android-sdk-license-.+'
- 'google-gdk-license-.+'
script:
- ./gradlew clean build
et c'est mon build.gradle
apply plugin: 'com.Android.application'
Android {
compileSdkVersion 25
buildToolsVersion '25.0.0'
defaultConfig {
applicationId "com.package.my"
minSdkVersion 16
targetSdkVersion 25
versionCode 6
versionName "1.3.1"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.Android.support', module: 'support-annotations'
})
compile 'com.Android.support:appcompat-v7:25.1.1'
testCompile 'junit:junit:4.12'
compile 'com.google.firebase:firebase-database:10.2.0'
compile 'com.google.firebase:firebase-messaging:10.2.0'
compile 'com.firebaseui:firebase-ui-database:1.2.0'
compile 'com.Android.support.constraint:constraint-layout:1.0.1'
compile 'com.Android.support:design:25.0.0'
compile 'org.sufficientlysecure:html-textview:3.2'
compile 'com.Android.support:recyclerview-v7:25.2.0'
}
apply plugin: 'com.google.gms.google-services'
avec cette configuration j'ai eu cette erreur
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:
[ConstraintLayout for Android 1.0.1, Solver for ConstraintLayout 1.0.1].
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
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 1 mins 55.975 secs
The command "./gradlew clean build" exited with 1.
Done. Your build exited with 1.
existe-t-il une solution sans solution de contournement utilisant une licence d'exportation?
existe-t-il une solution sans solution de contournement utilisant une licence d'exportation?
Oui, vous pouvez utiliser la nouvelle sdkmanager
pour installer la bibliothèque de contraintes et accepter la licence :
- 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"
Sinon, le composant manquant sera détecté par gradle
et téléchargé sans l'accepter:
# Show version and download Gradle Wrapper if it's not already cached
- cd ${TRAVIS_BUILD_DIR}/${DIR} && ./gradlew --version
# Clean project and download missing dependencies and components
- cd ${TRAVIS_BUILD_DIR}/${DIR} && ./gradlew clean build
Dans ce cas, comme expliqué ci-dessous, vous devez accepter la licence pour la première fois via la solution de contournement.
language: Android
jdk: oraclejdk8
Sudo: required # false for Container-Based Infrastructure, required for Sudo-enabled Infrastructure
before_cache:
- rm -f ${TRAVIS_BUILD_DIR}/gradle/caches/modules-2/modules-2.lock # Avoid to repack it due locks
- rm -f ${TRAVIS_BUILD_DIR}/gradle/caches/3.3/classAnalysis/classAnalysis.lock
- rm -f ${TRAVIS_BUILD_DIR}/gradle/caches/3.3/jarSnapshots/jarSnapshots.lock
cache:
directories:
- ${TRAVIS_BUILD_DIR}/gradle/caches/
- ${TRAVIS_BUILD_DIR}/gradle/wrapper/dists/
notifications:
email: false
Android:
components: # Cookbooks version: https://github.com/travis-ci/travis-cookbooks/tree/9c6cd11
- tools # Update preinstalled tools from revision 24.0.2 to 24.4.1
- build-tools-25.0.2 # Match build-tools version used in build.gradle
- platform-tools # Update platform-tools to revision 25.0.3+
- tools # Update tools from revision 24.4.1 to 25.2.5
env:
global:
- DIR=constraint-layout-start # Project directory
- API=25 # Android API level 25 by default
- TAG=google_apis # Google APIs by default, alternatively use default
- ABI=armeabi-v7a # ARM ABI v7a by default
- QEMU_AUDIO_DRV=none # Disable emulator audio to avoid warning
- GRADLE_USER_HOME="${TRAVIS_BUILD_DIR}/gradle" # Change location for Gradle Wrapper and cache
- Android_HOME=/usr/local/Android-sdk-24.0.2 # Depends on the cookbooks version used in the VM
- TOOLS=${Android_HOME}/tools # PATH order matters, exists more than one emulator script
- PATH=${Android_HOME}:${Android_HOME}/emulator:${TOOLS}:${TOOLS}/bin:${Android_HOME}/platform-tools:${PATH}
- ADB_INSTALL_TIMEOUT=20 # minutes (2 minutes by default)
matrix:
include: # More Emulator API levels to build in parallel
- env: API=24
- env: API=23
- env: API=22
allow_failures:
- env: API=23
- env: API=22
fast_finish: false
before_install:
- export EMULATOR="system-images;Android-${API};${TAG};${ABI}" # Used to install/create emulator
- echo 'count=0' > /home/travis/.Android/repositories.cfg # Avoid warning
install:
# List and delete unnecessary components to free space
- sdkmanager --list || true
- sdkmanager --uninstall "system-images;Android-15;default;armeabi-v7a"
- sdkmanager --uninstall "system-images;Android-16;default;armeabi-v7a"
- sdkmanager --uninstall "system-images;Android-17;default;armeabi-v7a"
- sdkmanager --uninstall "system-images;Android-18;default;armeabi-v7a"
- sdkmanager --uninstall "system-images;Android-19;default;armeabi-v7a"
- sdkmanager --uninstall "system-images;Android-21;default;armeabi-v7a"
- sdkmanager --uninstall "extras;google;google_play_services"
- sdkmanager --uninstall "extras;Android;support"
- sdkmanager --uninstall "platforms;Android-10"
- sdkmanager --uninstall "platforms;Android-15"
- sdkmanager --uninstall "platforms;Android-16"
- sdkmanager --uninstall "platforms;Android-17"
- sdkmanager --uninstall "platforms;Android-18"
- sdkmanager --uninstall "platforms;Android-19"
- sdkmanager --uninstall "platforms;Android-20"
- sdkmanager --uninstall "platforms;Android-21"
- sdkmanager --uninstall "build-tools;21.1.2"
# Update sdk tools to latest version and install/update components
- echo yes | sdkmanager "tools"
- echo yes | sdkmanager "platforms;Android-25" # Latest platform required by SDK tools
- echo yes | sdkmanager "platforms;Android-${API}" # Android platform required by emulator
- echo yes | sdkmanager "extras;Android;m2repository"
- echo yes | sdkmanager "extras;google;m2repository"
- 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"
- echo yes | sdkmanager "$EMULATOR" # Install emulator system image
# Create and start emulator
- echo no | avdmanager create avd -n acib -k "$EMULATOR" -f --abi "$ABI" --tag "$TAG"
- emulator -avd acib -engine classic -no-window -camera-back none -camera-front none -verbose -qemu -m 512 &
# Start adbd, wait for device connected and show Android serial
- adb wait-for-device get-serialno
# Show version and download Gradle Wrapper if it's not already cached
- cd ${TRAVIS_BUILD_DIR}/${DIR} && ./gradlew --version
# Clean project and download missing dependencies and components
- cd ${TRAVIS_BUILD_DIR}/${DIR} && ./gradlew clean build
# Check components status
- sdkmanager --list || true
before_script:
# Wait for emulator fully-booted and disable animations
- Android-wait-for-emulator
- adb Shell settings put global window_animation_scale 0 &
- adb Shell settings put global transition_animation_scale 0 &
- adb Shell settings put global animator_duration_scale 0 &
- sleep 30
- adb Shell input keyevent 82 &
script:
# Run all device checks
- cd ${TRAVIS_BUILD_DIR}/${DIR} && ./gradlew connectedCheck
after_script:
# Show tests and lint results
- cat ${TRAVIS_BUILD_DIR}/${DIR}/*/build/outputs/androidTest-results/connected/*
- cat ${TRAVIS_BUILD_DIR}/${DIR}/*/build/reports/lint-results.xml
Deux autres échantillons utilisant les solutions sdkmanager
et avdmanager
sans ${DIR}
:
Références
Documentation officielle relative à téléchargement automatique des packages manquants avec Gradle
Les options nouvel émulateur sont expliquées dans Démarrer l'émulateur à partir de la ligne de commande
avdmanager
expliqué ici remplace Android avd
depuis version du logiciel SDK 25.3.0
sdkmanager
expliqué ici également amélioré pour afficher et accepter toutes les licences à partir de la ligne de commande
Je suis un peu désuet à propos de Travis-ci et il semble que du travail supplémentaire soit nécessaire, il est donc préférable de vérifier:
Comme tir38, remarqué , Android
outil _ n'est plus pris en charge. Utilisez plutôt sdkmanager
...
Ouvrez numéro et solutions de contournement pour ce sujet:
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:Android: components: # ... licenses: - Android-sdk-license-.+ - '.+'
Si vous obtenez le message "Installez les composants manquants à l'aide du gestionnaire de SDK Dans Android Studio." erreur, vous pouvez simplement installer le composant manquant avec l'outil de ligne de commande sdkmanager:
echo y | sdkmanager "extras;m2repository;com;Android;support;constraint;constraint-layout;1.0.0-beta4" echo y | sdkmanager "extras;m2repository;com;Android;support;constraint;constraint-layout-solver;1.0.0-beta"
Cet article expliquant le problème de contre-mise en page pour Circle-ci et Travis-ci
Documentation à propos de sdkmanager fourni dans le package Android SDK Tools (25.2.3+)
Je n'utilise pas le script Travis-ci par défaut pour installer des composants Android et accepter des licences, à partir d'ici :
# Install and update SDK
function install-and-update-sdk {
# Keep SDK packages up-to-date (only missing suggested updates are installed).
( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | Android update sdk -u -t \
${UPDATE_PKGS:-'platform-tools,tools,extra-Android-m2repository,extra-google-m2repository'}
# Install or reinstall SDK packages (if empty, all packages are installed).
( sleep 5 && while [ 1 ]; do sleep 1; echo y; done ) | Android update sdk -a -u -t \
${INSTALL_PKGS:-'build-tools-23.0.3,Android-23'},${TARGET_PKGS:-}
}
Vous pouvez accepter toutes les licences en même temps si vous le faites comme this :
# THE SETUP STAGE
# ---------------
# If you comment out this section, Travis CI will install for you the components you define here.
# Check your project requirements and the components included by default on Travis-ci VM images.
# Check required: https://github.com/google/iosched/blob/master/doc/BUILDING.md
# Check defaults: http://docs.travis-ci.com/user/languages/Android/#Pre-installed-components
Android:
components:
# Check Android SDK tools: http://developer.Android.com/tools/sdk/tools-notes.html
# Check Android SDK Platform-tools: http://developer.Android.com/tools/revisions/platforms.html
# Comment the lines below if the latest revisions of Android SDK Tools are included by default.
# - tools
# - platform-tools
# ...
licenses:
# Check licenses: http://docs.travis-ci.com/user/languages/Android/#Dealing-with-Licenses
# By default Travis will accept all the licenses, but it's also possible to define a white list:
# White list current Android-sdk-license revision.
# - 'Android-sdk-license-5be876d5'
# White list all Android-sdk-license revisions.
# - 'Android-sdk-license-.+'
# White list all the licenses.
- '.+'
La solution la plus simple qui a fonctionné pour moi a consisté à copier les licences SDK de SDK dans mon projet, puis à Travis de les copier sur lui-même lors de la construction.
La page Github de Travis contient déjà un numéro fermé à ce sujet 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
J'ai eu le même problème et le problème était que j'utilisais une ancienne version des outils de compilation Android et la version de Gradle, mais les mettre à jour avec la dernière version disponible a fait l'affaire. Par exemple, aujourd'hui, la dernière version de gradle est la 3.3, et la dernière version de build tools est la 2.3.3. Mon fichier build.gradle ressemble à ça
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.Android.tools.build:gradle:2.3.3'
}
}
Ce problème a été soulevé il y a quelque temps. Https://issuetracker.google.com/issues/37102998 Et si vous passez aux dernières réponses, vous constaterez que le problème a été résolu par mise à niveau de la version gradle et de la version des outils de construction.