3

私が取り組んでいるプロジェクトでは、N 個のスタンドアロン アプリケーションをビルドできる必要がありますが、そのうちの 1 つを実行する選択メニューを備えた非常に大きなアプリケーションも必要です。

これらのアプリケーションの違いは主にリソースと XML であるため、それらはすべて、XML で提供されるアセットと情報に反応する共通のライブラリを使用します。

問題は、「母」アプリケーションに関するものです。スタンドアロン リソース セットの 1 つを使用して共通ライブラリを使用できる必要があります。次を使用して、別のアプリケーション リソースにアクセスできることに気付きました。

Resources R2 = getPackageManager().getResourcesForApplication("com.example.appa");
int id = R2.getIdentifier("image", "drawable", "com.example.appa");
Drawable myDrawable = R2.getDrawable(id);

そして、これは実際に問題を解決します。パッケージ文字列をライブラリに提供して、リソースを探す場所を知ることができます。

問題は、これが機能するためには、これらのスタンドアロン アプリケーションをデバイスにインストールする必要があることです。それは私にはできないことです (クイズ アプリケーションと考えてください。スタンドアロン アプリは 1 つのトピックにすぎませんが、 「母」アプリはすべての異なるトピックへのアクセスを許可し、私が知る限り、Android マーケットはすべてのアプリをダウンロードしてインストールすることを許可していないため、それらのリソースにアクセスできません)。

概念的に言えば、これらのスタンドアロン アプリケーションをライブラリとして作成し、マザー アプリに追加することができれば、この問題は解決します。マザー アプリは、ユーザーの選択に応じてパッケージ文字列を使用し、次にライブラリを使用します。これまでのところ、私はこれを解決できておらず、これに関する情報を見つけることができないため、これを行うことができないのではないかと心配しています.

各トピック アプリケーションには、たとえば、アプリのトピックに関する画像 (ローマ字やギリシャ語の画像など) を含む intro.png があり、package_string.intro.png にアクセスして、適切なトピックに自動的にアクセスすることを目的としています。ユーザーの選択に応じて。

4

1 に答える 1

2

これを行うのに苦労した後、最終的にリソースがインデックス化されていることがわかりました。これは、1 つのアプリケーションに「intro.png」が 1 つしか存在しないことを意味します。リンクしようとするライブラリの数に関係なく、lib1.intro.png への参照を作成できないか、 lib2.intro.png. 私は最終的に、「lib1_intro」または「lib2_intro」をオンデマンドで使用できるリソース マネージャー システムを構築しました。最もクリーンなソリューションではありませんが、まあ、うまくいくと思います...

回答の受け入れについて読んだときに、編集を回答に移動します。最初の投稿を編集するだけでなく、これが行われるべきだった方法です

于 2012-10-22T12:58:06.720 に答える