Help us understand the problem. What is going on with this article?

AndroidStudioでプロジェクトインポートしたときのsyncエラー

More than 3 years have passed since last update.

また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/の

gradle-wrapper.properties
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip

gradle-wrapper.properties
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip

に変更。

この修正により、やっと解決。
結局gradleかよ。
ここに気がつくまで長かった。当初、各build.gradleばかり見ていて、かつ、graldeプラグインとgradleを混同していたため、gradleのバージョンの問題ではないと思っていたことが災いした。
AndroidStudio、プロジェクトの構成が難解すぎる。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away