ADK で ライブラリのファイルが gen に生成されない原因2014年06月06日 20時42分15秒

時折、Android Eclipse で gen ファイルが生成されずに悩んでいた。そのため、R ファイルが無くて、コンパイルエラーになる。特にアプリの gen は生成されるが、ライブラリの物が無い時がある。特に R ファイルの生成に失敗したとか、gen の生成に失敗したとかのエラーは見当たらないので、不思議だった。

gen ファイルの生成に失敗する一つの理由は、リソースの重複だった。この重複によるエラーはリソースのタイプによっても違うみたいだ。

「res/values」 にある strings.xml はアプリケーションとライブラリで同じ名前で作り、重複する認識子を使っても、アプリケーション側が優先されるみたいだ。

しかし、「res/layout」等で、同じ名前のファイルをアプリケーションとそれが依存するライブラリで作ると、アプリケーション側の gen の生成が失敗する。

複数のライブラリを使うと、起き易くなり、また気付き辛くなる。

  1. 個々のライブラリで正しく gen が生成されているかを調べる。
  2. ライブラリとアプリでレイアウト名が同じと言った、リソースの重複が無いか調べる。
  3. 複数のライブラリがあるのなら、問題のある組合せを探し、そのライブラリ間で重複が無いかを調べる。
ファイル名にも、ライブラリやアプリケーション間で衝突が起きないように、一定の規則を作った方がよさそうだ。