support-v4ライブラリなどを含んでいるAndroid Support Repositoryを使う場合に、とあるプロジェクトのTravis CIのビルド(コマンドラインでSDKのアップデート)が失敗するようになりました。
解決策(ローカル)
Mac環境ですが、こちらではSDKアップデート時に--all
オプションをつければこれまで通り使えました。
(2014/06/29時点、アンインストール&再インストールで成功することを確認)
android update sdk --all --filter extra-android-m2repository --no-ui --force
これを付けないとextra-android-m2repository
がインストールできず、support-v4:19.1.0
などが解決できずにビルドエラーが発生します。
解決策(Travis CI)
Travis CIでは上記でもダメでした。
--all
をつけてもextra-android-m2repository
見つかりません。
Error: Ignoring unknown package filter 'extra-android-m2repository'
Warning: The package filter removed all packages. There is nothing to install.
Please consider trying to update again without a package filter.
ちなみにこれは大分前にセットアップした.travis.yml
だったため、language:java
の指定でした。
現在β版でAndroid用の環境として用意されているlanguage:android
を指定して、デフォルトでインストールされているextra-android-m2repository
を使えばビルドできました。
Travis CI: Building an Android Project (beta)
ただ、language:android
でも、components
にextra-android-m2repository
を明示的に指定すると上記のエラーが発生してしまいます。
Travis CIで出力されるXMLのリストがローカルで実行した場合と異なっていたので、Travisでは古いXMLがキャッシュされたりしているのかもしれません。(推測)
(2014/7/11追記)
試行錯誤してようやく分かりましたが、tools
もアップデートが必要だったようです。
tools
(r23)が入っていれば、extra-android-m2repository
がインストールできました。
tools
がbuild-tools-20.0.0
に依存しているため、まずbuild-tools-20.0.0
を入れ、その後tools
を入れるのが良いようです。
補足:Maven Centralを使わない理由
support-v4ライブラリを使う場合、Android Studio(Gradle)から使うときには次の二つの方法があると思います。
- Maven Centralからインストール
- Android Support Repositoryからインストール
両者は以下のように指定の仕方が異なります。
compile 'com.google.android:support-v4:r7'
compile 'com.android.support:support-v4:19.1.0'
1.を使えれば良いのですが、
1.の方は少し古く、2.の方にしか含まれないものがあります。
例えば、ViewPager.PageTransformerがあります。
このインタフェースを使うとViewPagerでの画面遷移アニメーションをカスタマイズできます。
こうしたクラスを使う場合は2.の方を選ぶ必要があります。