[解決済み】/resと/assetsのディレクトリの違いについて
質問
のファイルが
res
ディレクトリからアクセスできます。
R.class
一方、assetsはファイルシステムのように動作しますが、一般的に、いつ、どちらかを使うのがベストなのか知りたいです。
どなたか、resとassetsの本当の違いを知りたいのですが、教えてください。
どのように解決するのですか?
リソースには、異なる言語、OSバージョン、画面の向きなどに対応した代替手段を提供するためのサポートが組み込まれており、以下のようになります。 こちら . アセットではそのようなことはありません。また、APIの多くの部分で、リソース識別子の使用がサポートされています。最後に、リソースの名前はコンパイル時にチェックされる定数フィールド名になっているので、コードとリソース自体の間でミスマッチが起こる可能性は低くなります。アセットには、そのいずれも適用されません。
では、なぜassetsフォルダを持つのでしょうか?実行時に使用したいアセットを計算するのであれば、かなり簡単です。リソースでは、使用される可能性のあるすべてのリソースIDのリストを宣言し、そのリストへのインデックスを計算する必要があります。(これはちょっと厄介で、開発サイクルの中でリソースのセットが変更された場合、エラーが発生する可能性があります)。(編集: リソースIDを名前によって取得するには
getIdentifier
しかし、これではコンパイル時のチェックの利点が失われます)。また、アセットをフォルダ階層に整理することもできますが、これはリソースではサポートされていません。データの管理方法が違うのです。リソースはほとんどのケースをカバーしますが、アセットには時折、その用途があります。
もうひとつの違いは、ライブラリプロジェクトで定義されたリソースは、そのライブラリに依存するアプリケーションプロジェクトに自動的にインポートされることです。アセットファイルは、アプリケーションプロジェクトのassetsディレクトリに存在する必要があります。[編集: Androidの新しい
Gradleベースのビルドシステム
(Android Studioで使用)、これはもはや真実ではありません。ライブラリプロジェクトのアセットディレクトリは .aar ファイルにパッケージされているため、ライブラリプロジェクトで定義されたアセットはアプリケーションプロジェクトにマージされます(したがって、アプリケーションの
/assets
参照されるライブラリの中にある場合、そのディレクトリにある)] 。
EDIT: カスタムフォントをアプリに同梱する場合、さらに別の違いが生じます。このような場合
APIコール
を作成し
Typeface
ファイルシステムに保存されているフォントファイルから、またはアプリの
assets/
ディレクトリに格納されます。しかし
Typeface
に格納されているフォントファイルから
res/
ディレクトリから(または
InputStream
を使用することができるようになります。
res/
ディレクトリ)を作成します。[
NOTE
Android O(現在アルファ・プレビューで利用可能)では、カスタムフォントをリソースとして含めることができるようになります。説明を見る
こちら
この待望の機能の しかし、最小APIレベルが25以下である限り、カスタムフォントをリソースとしてではなく、アセットとしてパッケージングすることにこだわる必要があります]。
関連
-
[解決済み】Android ADB デバイスがオフラインで、コマンドを発行できない。
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] TextViewでテキストを水平・垂直方向にセンタリングするには?
-
[解決済み] Android Studioの「assets」フォルダはどこに配置すればいいですか?
-
[解決済み] Androidアプリケーションのアクティビティ間でデータを受け渡すにはどうすればよいですか?
-
[解決済み] match_parentとfill_parentの違いは何ですか?
-
[解決済み] getContext() , getApplicationContext() , getBaseContext() と "this" との相違点
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
-
[解決済み】Corona、Phonegap、Titaniumの比較について
-
[解決済み] assetsディレクトリにあるオーディオファイルを再生する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】リストビューにonclicklistenerを追加する(android)
-
[解決済み】ビットマップを保存する場所について
-
[解決済み】起動アクティビティを特定できませんでした。デフォルトのアクティビティが見つかりませんでした
-
[解決済み】android.content.ActivityNotFoundException: 明示的なアクティビティクラスを見つけることができません。
-
[解決済み】フラグメントMyFragmentがアクティビティにアタッチされない。
-
[解決済み】googleコンソールエラー`OR-IEH-01`について
-
[解決済み] エラー - Android リソースのリンクに失敗しました (AAPT2 27.0.3 Daemon #0)
-
[解決済み】Androidでプログラムによるアプリケーションのインストールを行う。
-
[解決済み] Androidでは、どのような場合に生資源ではなく、資産を使うべきですか?
-
[解決済み] アセットファイルからURIを取得するには?