複数の Android アプリケーション プロジェクトで使用される Android ライブラリ プロジェクト (A) があります。libs
ライブラリ プロジェクトのフォルダー内に配置されたライブラリ jarは、com.lib.R
このプロジェクト内のリソース ファイル (画像など) を参照します。
アプリケーション プロジェクト (B) がこのライブラリを使用すると、libs フォルダー内の jar ファイルをトリガーして、 によって参照されるリソースを参照するコードが呼び出される場合がありますcom.lib.R
。残念ながら、これらのリソースにアクセスしようとすると、次のエラーが発生します。
java.lang.NoClassDefFoundError: com.lib.R$layout
これらのリソースが のsrc/
フォルダーLib A
または のsrc/
フォルダーからアクセスされる場合Project B
、それらは値に正しく解決int
されて使用できますが、それを行わずにコードをlibs
フォルダー内に保持することをお勧めします。
私の質問- なぜこれが起こるのか、どうすれば解決できますか? 回避策の 1 つは、 を使用してプログラムでリソース ID を取得することですresource.getIdentifier()
が、これは非常に手間がかかります。ヘルパー メソッドを使用して手動で解決しなくてもcom.lib.R
、ライブラリ jar から引き続き使用できる方法はありますか?libs
これがあなたを助けるためのイラストです。
ライブラリからのリソース アクセス