特拉维斯CI因失败而无法接受许可限制布局 [英] Travis CI failed because cannot accept license Constrain Layout

查看:321
本文介绍了特拉维斯CI因失败而无法接受许可限制布局的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我写这个问题之前,我已经搜索过关于这个问题的相同问题,他们确实导出了许可证,因为仍然使用约束布局的alpha版本。但是现在android已经发布了稳定版本的约束布局。我尝试了很多设置,但仍然失败。



我的最新 .travis.yml

 语言:android 

jdk:oraclejdk8

android:
组件:
- platform-tools
- tools#获取新的`repository-11.xml`
- tools#参见https://github.com/travis-ci/travis-ci/issues / 6040#issuecomment-219367943)
- build-tools-25.0.0
- android-25

#其他组件
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository

许可证:
- 'android-sdk-preview-license-52d11cd2'
- ' '
- 'google-gdk-license - 。+'

脚本:
- ./gradlew clean build

,这是我的 build.gradle

  apply plugin:'com.android.application'

android {
compileSdkVersion 25
buildToolsVersion '25 .0.0'
defaultConfig {
applicationIdcom.package.my
minSdkVersion 16
targetSdkVersion 25
versionCode 6
versionName 1.3.1
testInstrumentationRunnerandroid.support.test.runner.AndroidJUnitRunner
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile ('proguard-android.txt'),'proguard-rules.pro'
}
}
dataBinding {
enabled = true
}
}

依赖关系{
编译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'c​​om.android.support: appcompat-v7:25.1.1'
testCompile'junit:junit:4 .12'
compile'c​​om.google.firebase:firebase-database:10.2.0'
compile'c​​om.google.firebase:firebase-messaging:10.2.0'
compile'c​​om .firebaseui:firebase-ui-database:1.2.0'
compile'c​​om.android.support.constraint:constraint-layout:1.0.1'
compile'c​​om.android.support:design:25.0 .0'
compile'org.sufficientlycure:html-textview:3.2'
compile'c​​om.android.support:recyclerview-v7:25.2.0'

}

套用插件:'com.google.gms.google-services'

与这个设置我得到了这个错误

 失败:生成失败,出现异常。 
*出错:
配置项目':app'时发生问题。
>您尚未接受以下SDK组件的许可协议:
[适用于Android 1.0.1的ConstraintLayout,适用于ConstraintLayout 1.0.1的解决方案]。
在构建项目之前,您需要接受许可协议并使用Android Studio SDK Manager完成缺失组件的安装。
或者,要了解如何将许可协议从一个工作站传输到另一个工作站,请访问http://d.android.com/r/studio-ui/export-licenses.html
*尝试:
使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。
BUILD FAILED
总时间:1分55.975秒
命令./gradlew clean build退出1.
完成。您的构建退出了1.

是否有解决方案,没有使用导出许可证的解决方法?

解决方案

更新回复




有没有解决方法使用出口许可证?


是的,您可以使用新的 sdkmanager a href =https://travis-ci.org/albodelu/constraint-layout/jobs/220841506#L1601 =noreferrer>安装约束库并接受许可证:

   -  echo yes | sdkmanagerextras; m2repository; com; android; support; constraint; constraint-layout; 1.0.2
- echo yes | sdkmanagerextras; m2repository; com; android; support; constraint; constraint-layout-solver; 1.0.2

否则,缺少的组件将被 gradle 检测到并下载而不接受它:

 #显示版本并下载Gradle Wrapper,如果它尚未被缓存的话
- cd $ {TRAVIS_BUILD_DIR} / $ {DIR}&& ./gradlew --version
#清理项目并下载缺失的依赖项和组件
- cd $ {TRAVIS_BUILD_DIR} / $ {DIR}&& ./gradlew clean build

在这种情况下,如下所述,您需要先接受许可证时间通过解决方法。



使用约束布局代码库的Android API级别为22到25的完整工作示例:

  language:android 
jdk:oraclejdk8
sudo:必需的#基于容器的基础架构,为启用Sudo的基础架构所必需的

before_cache:
- rm -f $ {TRAVIS_BUILD_DIR} / gradle / caches / modules-2 / modules-2.lock#避免重新包装它由于锁
- 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:
目录:
- $ {TRAVIS_BUILD_DIR} / gradle / caches /
- $ {TRAVIS_BUILD_DIR} / gradle / wrapper / dists /

通知:
电子邮件:false

android:
组件:#食谱版本:https://github.com/travis-ci/travis-cookbooks/tree/9c6cd11
- tools#将预安装的工具从版本24.0.2更新到24.4.1
- build-tools-25.0.2#匹配build.gradle中使用的build-tools版本
- platform-tools#更新platform-工具修订版本25.0.3+
- tools#修订版本24.4.1到25.2.5的工具

env:
global:
- DIR = constraint- layout-start#项目目录
- API = 25#默认为Android API级别25
- TAG = google_apis#默认为Google API,或者使用默认值
- ABI = armeabi-v7a#ARM ABI v7a默认
- QEMU_AUDIO_DRV = none#禁用模拟器音频以避免警告
- GRADLE_USER_HOME =$ {TRAVIS_BUILD_DIR} / gradle#更改Gradle Wrapper和缓存的位置
- ANDROID_HOME = / usr / local / android-sdk-24.0.2#取决于VM
中使用的食谱版本 - TOOLS = $ { ANDROID_HOME} / $ {TOOLID_HOME} / $ {TOOLS_HOME}:$ {TOOLS} / bin:$ {ANDROID_HOME} /工具#PATH命令很重要,存在多个仿真器脚本
- PATH = $ {ANDROID_HOME} / platform-tools:$ {PATH}
- ADB_INSTALL_TIMEOUT = 20#分钟(默认为2分钟)

矩阵:
包括:#更多并行构建的Emulator API级别
- 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}#用于安装/创建模拟器
- echo'count = 0'> /home/travis/.android/repositories.cfg#避免警告

安装:
#列出并删除不必要的组件以释放空间
- sdkmanager --list || true
- sdkmanager --uninstallsystem-images; android-15; default; armeabi-v7a
- sdkmanager --uninstallsystem-images; android-16; default; armeabi-v7a
- sdkmanager --uninstallsystem-images; android-17; default; armeabi-v7a
- sdkmanager --uninstallsystem-images; android-18; default; armeabi-v7a
-sdkmanager --uninstallsystem-images; android-19; default; armeabi-v7a
- sdkmanager --uninstallsystem-images; android-21; default; armeabi-v7a
- sdkmanager --uninstallextras; google; google_play_services
- sdkmanager --uninstallextras; android; support
- sdkmanager --uninstallplatforms; android-10
- sdkmanager - -uninstallplatforms; android-15
- sdkmanager --uninstallplatforms; android-16
- sdkmanager --uninstallplatforms; android-17
- sdkmanager --uninstall platforms; android-18
- sdkmanager --uninstallplatforms; android-19
- sdkmanager --uninstallplatforms; android-20
- s dkmanager --uninstallplatforms; android-21
- sdkmanager --uninstallbuild-tools; 21.1.2
#将sdk工具更新到最新版本并安装/更新组件
- 回声是| sdkmanager工具
- echo yes | sdkmanagerplatforms; android-25#SDK工具所需的最新平台
- echo yes | sdkmanagerplatforms; android - $ {API}#模拟器所需的Android平台
- echo yes | sdkmanagerextras; android; m2repository
- echo yes | sdkmanagerextras; google; m2repository
- echo yes | sdkmanagerextras; m2repository; com; android; support; constraint; constraint-layout; 1.0.2
- echo yes | sdkmanagerextras; m2repository; com; android; support; constraint; constraint-layout-solver; 1.0.2
- echo yes | sdkmanager$ EMULATOR#安装模拟器系统映像
#创建并启动模拟器
- echo no | avdmanager创建avd -n acib -k$ EMULATOR-f --abi$ ABI - 标记$ TAG
- 模拟器-avd acib -engine经典-no-window -camera-back无 - 摄像头前无-verbose -qemu -m 512&
#启动adbd,等待设备连接并显示android serial
- adb wait-for-device get-serialno
#显示版本并下载Gradle Wrapper(如果它尚未被缓存)
- cd $ {TRAVIS_BUILD_DIR} / $ {DIR}&& ./gradlew --version
#清理项目并下载缺失的依赖项和组件
- cd $ {TRAVIS_BUILD_DIR} / $ {DIR}&& ./gradlew clean build
#检查组件状态
- sdkmanager --list || true

before_script:
#等待模拟器完全启动并禁用动画
- android-wait-for-emulator
- adb shell设置放入全局window_animation_scale 0& amp ;
- adb shell设置放全局transition_animation_scale 0&
- adb shell设置放全局animator_duration_scale 0&
- sleep 30
- adb shell input keyevent 82&

脚本:
#运行所有设备检查
- cd $ {TRAVIS_BUILD_DIR} / $ {DIR}&& ./gradlew connectedCheck

after_script:
#显示测试和lint结果
- cat $ {TRAVIS_BUILD_DIR} / $ {DIR} / * / build / outputs / androidTest-results /已连接/ *
- cat $ {TRAVIS_BUILD_DIR} / $ {DIR} / * / build / reports / lint-results.xml

使用 sdkmanager avdmanager 而无 $> {DIR} 解决方法:





参考文献



用Gradle自动下载丢失的包



new Emulator 选项在从命令行启动模拟器



avdmanager 这里解释取代 android avd SDK工具版本25.3.0



sdkmanager 这里解释也增强了查看和接受来自命令行的所有许可证






以前的响应:由于sdkmanager替换了android脚本,因此我对Travis-ci有些过时了,现在需要额外的工作,所以最好检查一下:



查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆