またAndroidStudioでハマった。
以前古いバージョンで作成したプロジェクトをcheckoutしてimportしたところ、原因不明のエラーに遭遇。gradleのバージョンが問題だったが、たどり着くのに苦労したのでメモ。
環境
Win7 pro
AndroidStudio:1.1.0
GradlePlugin:1.1.0
Gradle(Gradle wrapper) 1.12 => 2.2.1 ★結局コレ
現象
以前古いバージョンのAndroidStudioで作成したプロジェクトをcheckoutしてimportしたところ
gradle syncエラー。
Error:Unable to load class 'org.codehaus.groovy.runtime.typehandling.ShortTypeHandling'.
Possible causes for this unexpected error include:
- You are using JDK version 'java version "1.7.0_75"'. Some versions of JDK 1.7 (e.g. 1.7.0_10) may cause class loading errors in Gradle.
Please update to a newer version (e.g. 1.7.0_67).
- Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
- The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.
調査
上記、原因の可能性として挙げられている3つは試したが、現象変わらず。
- JDKは「1.7.0_67などの新しいバージョンにしろ」と言っている。当初1.7.0_3Xくらいだったので、より新しい1.7.0_75にした結果が↑。変わっていない。
- 設定を色々変更してはこの方法で何度も消してみた。が、変わらず。
- Gradle daemonを止めてみたら直るかも、と言われているので、言うとおりクリックしてみたが変わらず。
ググっても同じ症状が出てこず。
一度同じ構成のProjectを作り直して、各build.gradleファイルなど見比べども、なかなか違いが見出せずにいたところ、ディレクトリごと比較しやっと気付いたのがここ。
[プロジェクトルート]/.gradle/1.12
作り直したプロジェクトではここが2.2.1になっていた。つまり、gradleのバージョンが怪しいことに気がつく。
対処(gradleのバージョン変更)
結局、
http://qiita.com/AbeHaruhiko/items/fd9a01ad6fc84309e857
の、2.gradle-wrapper.propertiesの編集 にあるように
[プロジェクトルート]/gradle/wrapper/の
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
を
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip
に変更。
この修正により、やっと解決。
結局gradleかよ。
ここに気がつくまで長かった。当初、各build.gradleばかり見ていて、かつ、graldeプラグインとgradleを混同していたため、gradleのバージョンの問題ではないと思っていたことが災いした。
AndroidStudio、プロジェクトの構成が難解すぎる。