Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Travis CI构建不';不能使用Android约束布局_Android_Travis Ci_Android Constraintlayout - Fatal编程技术网

Travis CI构建不';不能使用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

我正试图让特拉维斯构建我的Android项目。尝试下载
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。效果很好!感谢分享!