0

ビルド システムを使用して Android アプリケーションでビルドされたさまざまな文字列リソース ファイルが多数あります。これらの文字列ファイルはいつでも段階的に追加でき、ビルド システムが個別のディレクトリからそれらを取得します。すべての文字列ファイルを列挙するか、ファイル内の文字列リソースの名前または ID を知らなくても、ファイル内の単一の文字列を取得できるようにしたいです。また、これらを追加する人が、さまざまなファイルをリストする配列を含むパッケージ内のメイン文字列ファイルを編集する必要がないようにします。これを達成する方法はありますか?

例:

SoccerStrings.xml
   id="SoccerDetails" value="soccer"
CricketStrings.xml
   id="CricketDetails" value="cricket"

これらのファイルが存在することを知らずに、クリケットとサッカーの 2 つの項目を含むリスト ビューを提供し、表示される可能性のある追加ファイルを自動的にサポートするにはどうすればよいでしょうか。

最善のアプローチは、ビルド システムにアセット フォルダーの下の個々のファイルをプルさせ、XMLResourceParser クラスと共に getAssets().list("") 機能を使用して文字列値にアクセスすることだと考えていました。これは機能し、ID の競合 (例: id="name") を許可しますか? もっと簡単な方法はありますか?

4

2 に答える 2

0

私は見ますaapt。次のコマンドで .apk からリソースを取得できることを知っています --

aapt d --values resources app.apk

ビルド プロセスの早い段階で aapt を使用してリソースを取得できる場合があります。有望に見える次のオプションがありますが、aaptのドキュメントは少し薄いです。

--output-text-symbols
   Generates a text file containing the resource symbols of the R class in the
   specified folder.

別の方法として、ビルド プロセスを変更し、文字列クラスをgen/<package>/R.java file生成後に直接解析することもできます。それをロード可能なファイルに保存するか、独自のソース ファイルを生成してビルドに追加することができます。

于 2012-12-19T04:38:44.170 に答える
0

やり方は教えません。私はそれに対して助言するために質問に答えています。

あなたがしようとしていることは、リソース ファイルとうまくいきません。これらのファイルは基本的にコードです。あなたがやりたいことは、データについてです。assets ディレクトリにデータが必要です。これらのファイルは、リソース ファイルのようにビルドでプリコンパイルされません。これらのファイルは、任意の方法で処理できます。そのすべてをビジネス ロジックに変換するためにかなりのコーディングが必要になりますが、それは優れた保守可能なコードを作成するための代償です。

あなたが提案している方法でリソースファイルをいじることは、Javaリフレクションに似ています。それが最も簡単な方法だからではなく、そのような機能に関する機能を持っているという理由だけでそれを使用したいのです。

そうは言っても、まさにあなたが述べた方法でリソースファイルを処理しなければならない状況にあるかもしれません。その際は、何卒ご容赦くださいますようお願い申し上げます。

于 2013-02-28T17:58:22.120 に答える