Travis CIでsupport-v4により自動ビルドが失敗する場合の対処法
対象
- Travis CI - Test and Deploy Your Code with Confidence でAndroidプロジェクトの自動ビルドを行っている
- Gradleを使用している
- 6月ぐらいからビルドが「uses-sdk:minSdkVersion 8 cannot be smaller than version 8 declared in library com.android.support:support-v4:21.0.0-rc1」というエラーが出る
結論
android - Manifest merger failed : uses-sdk:minSdkVersion 14 - Stack Overflow(親質問の回答) のとおり、依存するパッケージがcom.android.support:support-v4:+としているため、build.gradleでいくらcom.android.support:support-v4:20.0.0としても、解決されない。
以下のように例外条件を設定指定あげると、自動的に最新バージョンにならないように取り計らってくれる。
compile 'com.android.support:support-v4:20.+' compile ('com.github.chrisbanes.actionbarpulltorefresh:extra-abs:+') { // example exclude group: 'com.android.support', module:'support-v4' exclude group: 'com.android.support', module:'appcompat-v7' }
※com.github.chrisbanes.actionbarpulltorefresh:extra-absはcom.actionbarsherlock:actionbarsherlockに対応したpulltorefresh。ただ、最近、Android SDKでサポートされたため deprecated になってる。
要因
2つの要因が重複したことにより難解な問題となっていた。
- ローカルでのビルドは成功する
- Android Studioがメジャーアップしたときにインストール先を変更したけど、Android SDKの参照パスは変わっていなかった
- 上記により、com.android.support:support-v4:20.+とすると、ビルドエラーになっていた
- CI環境でエラーとなる
初歩的な部分で躓いていた...