Androidの未加工リソースではなく、アセットをいつ使用する必要がありますか?


151

私はAndroidの調査の最中であり、AssetsとRawリソースについて説明しました。RawリソースとAssetsを使用する理由を理解しようとしています。

  1. どちらも、コンパイルされていないリソース入力ストリームを提供します。

  2. アセットはRawリソースよりもはるかに高い柔軟性と機能を提供するようです。

    a。以下assetsではなく下にフォルダ構造を作成できますraw

    b。assetsフォルダー内ではなく、フォルダー内のすべてのリソースを動的にリストできrawます。

では、なぜAndroidでRawリソースを使用するのですか?


回答:


182

rawフォルダーとフォルダーの主な違いassets

  • rawはリソース(res)のサブフォルダーであるIDため、Androidは内部にあるすべてのファイルのを自動的に生成します。これ IDR class、ファイルへの参照として機能するに格納されます。つまり、他のAndroidクラスやメソッドから、さらにはAndroid XMLファイルからも簡単にアクセスできます。自動生成されたIDを使用すると、Androidでファイルにアクセスできます。

  • assetsフォルダがあり、「付録」のディレクトリ。Rクラスは、IDを生成しませんいくつかのAndroidのクラスやメソッドとあまり互換性がある、そこに置かれたファイルのために。Stringに基づいassetsフォルダへのハンドルを取得する必要があるため、フォルダ内のファイルアクセスは遅くなります。ただし、データベースファイルをシステムのメモリにコピーするなど、一部の操作はこのフォルダにファイルを配置することでより簡単に実行できます。Assetsフォルダー内のファイルへのAndroid XML参照を作成する(簡単な)方法はありません。


4
@ user370305こんにちは、新しいAndroid OSの1MBの制限はまだありますか?これについて説明しているドキュメントは見つかりません。どこにあるかわかりますか?
GMsoF

6
@GMsoF-これに関する特定のドキュメントはありません。しかし、私はあなたのためにいくつかの便利なリンクを持っています。1. blog.rossgreenhalf.com/2010/12/13/android-file-size-limits 2. stackoverflow.com/questions/11276112/... 3. stackoverflow.com/questions/6809651/... 4. elinux.org/Android_aaptおよび5.android-developers.blogspot.in/2012/03/…sr noに従って実行してください
user370305 2012年

2
@GMsoF- /assetディレクトリに1 MBより大きいファイルサイズを配置するための多くのトリックがあります。
user370305 2012年

10
アセットフォルダーのファイルサイズの制限はありませんでした。そんなことあるの?
Android開発者

2
はい、Android 2.2または2.3より前のバージョンでは、1 MBを超える非圧縮サイズの圧縮アセットファイルをAPKから読み取ることはできません。ここで言及されているgroups.google.com/forum/#!topic/android-developers/lguGFJD-JRs
user370305 '27

33

よりAndroidのドキュメントraw/ディレクトリがために使用されます。

そのままの形式で保存する任意のファイル。これらのリソースを未加工のInputStreamで開くには、リソースID(R.raw.filename )を指定してResources.openRawResource()を呼び出します

ただし、元のファイル名とファイル階層にアクセスする必要がある場合は、一部のリソースを(res / raw /ではなく)assets/ディレクトリに保存することを検討してください。assets /内のファイルにはリソースIDが与えられないため、AssetManagerを使用してのみファイルを読み取ることができます。


1行では、内のファイルraw/ディレクトリがされているプラットフォームでコンパイルされていないリソースIDが割り当てられているサブフォルダにグループ分けすることができない、あなたがそうでなければ使用したい場合は、一方assets/のディレクトリを。


1
大きなファイルをストレージフォルダーにコピーする場合、RAWファイルは最適なオプションですか?
live-love

@ 40-Love 以前のバージョンをサポートしていない限り、Android 2.3以降のファイルサイズに制限はありません要件に応じて、任意のストレージフォルダを選択できます。主な違いは、これらのファイルへのアクセス方法です。
プリンス

1

上記の回答に追加しています...

/ res / strings、/ res / layout、/ res / xmlファイルなどはすべてバイナリ形式にコンパイルされます。ただし、XMLファイルを含むファイルを/ res / raw /ディレクトリに配置すると、バイナリ形式にコンパイルされません。

生のリソースよりもアセットを使用する大きな利点の1つは、 file:///android_asset/ Uriプレフィックスです。これは、アセットをWebViewにロードするのに役立ちます。たとえば、プロジェクト内のassets / foo / index.htmlにあるアセットにアクセスするには、loadUrl("file:///android_asset/foo/index.html")そのHTMLをWebViewにロードすることを呼び出すことができます 。


file:///android_res/接頭辞を使用して、未加工リソースを指すことができます。
androidguy
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.