無趣味な人

生まれてこの方、無趣味。ハマったものこれといって特になし。

【解決】Android Studioをrevision 23にアップデートしたら、ビルド出来なくなった

android support libraries を revision 23 にアップデートした。 そしたら、今まで問題なくビルドできていたプロジェクトがエラーになるようになった。

下のようなエラーだった。

error retrieving app/build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.0/res/values-v23/values-v23.xml

gradleでは 'com.android.support:appcompat-v7:22.2.1' を使うように設定しているのに、23.0.0関連でエラーが出るのかわからない。

調べると、 compileSdkVersion 23 にするとよいなどと書かれている。 ためしてみると、今度は 「No resource found that matches the given name 〜」というエラーが出てしまう。 以下のような感じだ。

Error:(2) Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.

にっちもさっちもいかない。 そもそも、ver.22でコンパイルしたいのに、23にしなきゃならないなんておかしい。

一応、解決できた。

解決方法その1

マックの場合に限る。

ユーザーホームフォルダに.gradleという隠しフォルダがある。 Android Studioは閉じた状態で、これを削除する。 そして、Android Studioを起動する。 Gradleはちょいちょいおかしくなるらしい。 そんな時は、これを試すといいようだ。

これで駄目な時は解決方法その2を試す。

解決方法その2

  1. プロジェクトを開く。
  2. build.gradle (Module app)を開く。
  3. 以下のとおり変更する。

【変更前】compileSdkVersion 23
【変更後】compileSdkVersion 22

【変更前】targetSdkVersion 23
【変更後】targetSdkVersion 22

【変更前】'com.android.support:appcompat-v7:23.0.0'
【変更後】'com.android.support:appcompat-v7:22.2.1'

これで治る場合もあるらしい。 バグだと思うが、これだけでは22でビルドしてくれないこともある。 その場合は、build tools 23をsdk managerから削除する。 その後、SDKのフォルダを削除しなければならない。 sdk/extras/android/m2repository/com/android/support/appcompat-v7を開き、すべての23..フォルダを削除する。 そして、同じフォルダにある maven-metadata.xml を開き、23..を書いてある行を削除する。 プロジェクトをクリーンしてリビルド。 で、完了である。

私の場合、以下のエラーがでた。

Error:Failed to resolve: com.android.support:appcompat-v7:23.0.0

理由は compile 'com.google.android.gms:play-servicesが8.4.0以上だと、 appcompat-v7の23.0.0が必要らしい。

【変更前】compile 'com.google.android.gms:play-services:8.4.0'
【変更後】compile 'com.google.android.gms:play-services:8.3.0'

としたら、ビルドできた。

なお、解決方法その2を元に戻したい場合にうまく行かないことがある。 この場合は、解決方法その1をもう一度やると治る場合がある。 Gradleが不自然な動きをした場合は解決方法その1をやるといいみたいだ。