Travis CI构建不';不能使用Android约束布局
我正试图让特拉维斯构建我的Android项目。尝试下载Travis CI构建不';不能使用Android约束布局,android,travis-ci,android-constraintlayout,Android,Travis Ci,Android Constraintlayout,我正试图让特拉维斯构建我的Android项目。尝试下载ConstraintLayout的库时失败。你知道我要怎么做才能让它工作吗 我的.travis.yml是这样的: language: android jdk: - oraclejdk8 android: components: - platform-tools - tools - build-tools-23.0.2 - android-23 - extra-android-support
ConstraintLayout
的库时失败。你知道我要怎么做才能让它工作吗
我的.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'
}
我在特拉维斯身上犯的错误是:
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
你知道怎么解决这个问题吗?甚至可以用Travis构建
ConstraintLayout
吗?您的build.gradle
正在尝试引入com.android.support。约束:约束布局:1.0.0-alpha2
。我的SDK管理器只为我提供1.0.0-alpha1
(Android支持库的第32版)。也许Travis CI也只有1.0.0-alpha1
由于我假设您已经在开发机器上工作了1.0.0-alpha2
,所以我不太确定这里发生了什么。Android支持存储库的分发包中可能存在故障或其他问题。存在一个未决问题
简而言之,com.android.support.constraint:constraint layout:1.0.0-alpha1
被捆绑到谷歌存储库中,但1.0.0-alpha2
和更高版本只能从gradle插件中获得,该插件要求许可证文本放在$HOME/.android/license/
中(如果找不到,请尝试$android\u HOME/licenses>)
您可以将许可证文本文件从本地计算机(在同意Android Studio 2.2提供的SDK Manager许可证后)复制到问题中提到的CI服务器。或者降级到1.0.0-alpha1
来解决问题。我在com.android.support.constraint:constraint布局:1.0.0-alpha9
上也有同样的问题。在我的例子中,我直接尝试以以下方式在Travis中创建许可证文件:
before_install:
- mkdir "$ANDROID_SDK/licenses" || true
- echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
但是由于我没有权限在$ANDROID_SDK
上写东西,也不支持sudo
,我不知道下一步该怎么做
我看到的唯一选择是等待谷歌将其包括在许可证中,或者降级到alpha1
。支持库版本25.0.0发布后,约束布局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-.+
- '.+'
如果您直接接受许可证,则不再需要接受许可证的变通方法:
- 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"
遗憾的是,添加许可证哈希不再有效
对我来说最简单的解决方案(在2018年FWIW,我在我的extras/android/m2repository/com/android/support/constraint/constraint layout
副本中没有看到1.0.0-alpha2
。我只看到1.0.0-alpha1
。根据SDK管理器,我的设置是最新的(android支持库第32版).Works。似乎1.0.0-alpha2
还不存在。如果你将此作为答案发布,我会接受它。我尝试从本地SDK中取出.aar/.jar,但无法完全让它工作。如果有人这样做,在事情解决之前,这可能是一个临时解决方法。如果你查看@commonware提到的,它有额外的信息这应该有助于解决这个问题。要点:Gradle将下拉约束布局DEP,因为它们是未绑定的。您需要在$ANDROID\u HOME
/SDK中有一个许可证文件才能做到这一点。您可能还需要使您的SDK在CI实例上可写。HTH.@virtualandy需要哪个许可证文件?有直接的替代解决方案吗?谢谢!Studio 2.2的预览版2附带了1.0.0-alpha2
。不确定他们如何将其提供给gradle版本…我的jenkins服务器上也有类似问题(没有找到1.0.0-alpha2)jenkins也一样。我尝试了一系列选项,包括使用,然后它能够解析alpha1,但不是alpha2.FWIW,我已经对此进行了归档。@Commonware谢谢!注意到命令行SDK更新程序没有看到更多的开发(我将我机器的许可证复制到我的repo和依赖项:pre:-scp-r${HOME}/${CIRCLE\u PROJECT\u REPONAME}/许可证$ANDROID_HOME
@gonzalo检查我建议的解决方案,它与您的解决方案相同,但在新的许可证中添加了一个预览范围。它与TravisCI配合使用很好。无需回滚到Alpha1。效果很好!感谢分享!