web-dev-qa-db-ja.com

Travis CIビルドがAndroid制約レイアウトで動作しません

Travisに私の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をビルドすることも可能ですか?

22
Terry

build.gradlecom.Android.support.constraint:constraint-layout:1.0.0-alpha2をプルしようとしています。 SDK Managerが提供するのは1.0.0-alpha1のみです(Androidサポートリポジトリのリビジョン32)。TravisCIにも1.0.0-alpha1しかありません。

開発マシンで1.0.0-alpha2を使用していると思いますので、ここで何が行われているのかはよくわかりません。 Android Support Repositoryなど)の配布パッケージに不具合がある可能性があります。

13
CommonsWare

サポートライブラリバージョン25.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-.+
  - '.+'
18
amouly

未解決の問題があります https://code.google.com/p/Android/issues/detail?id=212128

つまり、com.Android.support.constraint:constraint-layout:1.0.0-alpha1はGoogleリポジトリにバンドルされていますが、1.0.0-alpha2以降のバージョンは、$HOME/.Android/license/にライセンステキストが配置されることを期待するGradleプラグインからのみ利用できます(見つからない場合は、$Android_HOME/licensesを試してください)。

問題に記載されているように、ライセンステキストファイルをローカルマシンから(Android Studio 2.2によって提供されるSDK Managerからのライセンスに同意した後)CIサーバーにコピーできます。または1.0.0-alpha1にダウングレードして問題を解決する。

7
kamikat

com.Android.support.constraint:constraint-layout:1.0.0-alpha9でも同じ問題が発生します。私の場合、私はTravisでこのように直接ライセンスファイルを作成しようとしました:

before_install:
  - mkdir "$Android_SDK/licenses" || true
  - echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$Android_SDK/licenses/Android-sdk-license"

しかし、私には$Android_SDKへの書き込み権限がなく、Sudoのサポートがないため、次に何をすべきかわかりません。

私が見る唯一のオプションは、Googleがライセンスに含めるか、alpha1...にダウングレードするまで待つことです。

1
Gnzlt

説明にあるように、ライセンスに同意するための回避策は必要ありません ここ 直接同意する場合:

  - 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"

Android APIレベル22から25までの制約レイアウトコードラボリポジトリを使用した完全な動作サンプル

1
albodelu

残念ながら、ライセンスハッシュの追加は機能しなくなりました。

私のために働いた最も簡単な解決策(2018年に????)は、SDKライセンスをSDKからプロジェクトにコピーし、ビルド中にTravisにそれをコピーするように指示することでした。

TravisのGithubページにはすでにクローズドな問題があり、言及されている解決策の1つが現在確実に機能しています。

ソリューション

  1. Android SDKのルートディレクトリにあるlicensesフォルダーをコピーします。
  2. .travis.ymlファイルと同じ階層にある、自分のプロジェクトのルートディレクトリに貼り付けます。
  3. これらのコマンドを.travis.ymlbefore_installブロックに追加します。

。travis.yml

before_install:
- mkdir "$Android_HOME/licenses" || true
- cp ./licenses/* "$Android_HOME/licenses/"

ソリューションへの正確なリンク: https://github.com/travis-ci/travis-ci/issues/6617#issuecomment-36958027

別のSO質問の元の回答へのリンク: https://stackoverflow.com/a/49050480/1402616

0
MiaN KhaLiD