SyntaxHighlighter

2016年1月3日日曜日

Android Studio 1.5.1 の gradle が腐っている?

ほぼ1年ぶりにAndroid Studioを触ることになり、v1.0 → v1.5 に一気にアップグレードしたら、既存のプロジェクトがビルドできなくなりました。ログ見てみると、プロジェクトのビルド以前のGradleの準備段階でエラーになっているっぽい。
2016-01-03 15:30:41,259 [1812717] INFO - .project.GradleProjectResolver - Gradle project resolve error org.gradle.tooling.GradleConnectionException: Could not run build action using Gradle distribution 'https://services.gradle.org/distributions/gradle-2.8-all.zip'.
(中略)
Caused by: java.lang.NoSuchMethodError: com.google.common.io.CharSource.readLines(Lcom/google/common/io/LineProcessor;)Ljava/lang/Object;
at org.gradle.configuration.DefaultImportsReader.(DefaultImportsReader.java:40) 
(後略)
NoSuchMethodErrorなので、何かのJARが古いんだろうと当たりをつけて捜索開始。
com.google.common = guava の最新を探すと、v19が最新。
https://github.com/google/guava/wiki/Release19

なお、CharSource.readLines(LineProcessor)は、v16で追加されたようだ。
http://upstream.rosalinux.ru/java/compat_reports/guava/15.0_to_16.0/bin_compat_report.html

自分のMac上の古い guava.jar を片っ端から、v19に置き換えるが、なおらない。

しばらく考えて、Android Studio.app が guava.jar を内包している可能性に思い至り、再捜索。いくつか見つかったのですが、結論としては、このヒト↓が犯人。
/Applications/Android Studio.app/Contents/gradle/gradle-2.8/lib/guava-jdk5-17.0.jar
v17だから、readLines(...) を実装してるはずなんだけどなぁ。JDK5向けのポーティング時にミスっちゃったんだろうか。

本当は、このファイルを削除し guava-19.0.jar を置いて解決したかったけど、AndroidStudio様がファイル名固定で guava-jdk5-17.0.jar を参照していたので、guava-19.0.jar → guava-jdk5-17.0.jar とリネームして置きました。

これでビルドも通るようになり、一件落着です。
ちょっと副作用が心配。。。







0 件のコメント:

コメントを投稿