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
をビルドすることも可能ですか?
build.gradle
がcom.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など)の配布パッケージに不具合がある可能性があります。
サポートライブラリバージョン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-.+
- '.+'
未解決の問題があります 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
にダウングレードして問題を解決する。
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
...にダウングレードするまで待つことです。
説明にあるように、ライセンスに同意するための回避策は必要ありません ここ 直接同意する場合:
- 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年に????)は、SDKライセンスをSDKからプロジェクトにコピーし、ビルド中にTravisにそれをコピーするように指示することでした。
TravisのGithubページにはすでにクローズドな問題があり、言及されている解決策の1つが現在確実に機能しています。
ソリューション
licenses
フォルダーをコピーします。.travis.yml
ファイルと同じ階層にある、自分のプロジェクトのルートディレクトリに貼り付けます。.travis.yml
のbefore_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