delete from hateblo.jp where 1=1;

タイトルに意味はありません。

Travis CIでsupport-v4により自動ビルドが失敗する場合の対処法

対象

  • Travis CI - Test and Deploy Your Code with ConfidenceAndroidプロジェクトの自動ビルドを行っている
  • 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環境でエラーとなる

初歩的な部分で躓いていた...