2011/05/31

R cannot be resolved to a variable がどうしても消えない

Android で開発していると、 R cannot be resolved to a variable というエラーが頻発します。


こういう時は、Eclipse が gen ディレクトリの作成をミスっているのが原因なので、

  1. gen ディレクトリ以下を全て削除してみる
  2. プロジェクト → クリーン としてみる

とかすると普通は直るのです。

ところが、今回は何回やってもエラーが消えないのです。
で、よくコンソールの出力を見てみたところ、

2011-05-31 21:29:57 - Test] res\drawable-hdpi\icon.png.org:0: エラー: Resource entry icon is already defined.
[2011-05-31 21:29:57 - Test] res\drawable-hdpi\icon.png:0: Originally defined here.

って書いてありました。
つまり、「res ディレクトリの中に icon.png が2個あるよ」ってエラーだったのです。
正確には icon.png と icon.png.org なのですが、どうも両方とも同じ物として認識してしまうようです。

というわけで、res フォルダの中に .org がついたファイルなど余計な物があるとうまくいかないということがわかりました。
バージョン管理ツールを使っている方など要注意です。

最初からコンソールをちゃんと読んでおけば気づいたのにねぇ。
慣れって恐ろしいです。