Libraryプロジェクトに属するクラスでは:
webview.loadUrl("file:///Android_asset/info.html", null);
残念なことに、これはduplicateファイルinfo.htmlをApplication'sプロジェクトアセットフォルダーに入れた場合にのみ機能します。
Androidライブラリコード:「ライブラリのアセットフォルダーでこのファイルを探し、アプリケーションのアセットフォルダーでnotを」検索する方法はありますか?
Android Docs から:
ライブラリプロジェクトには生のアセットを含めることはできません
ツールは、ライブラリプロジェクトでの生のアセットファイル(assets /ディレクトリに保存されている)の使用をサポートしていません。アプリケーションで使用されるアセットリソースは、アプリケーションプロジェクト自体のasset /ディレクトリに保存する必要があります。ただし、res /ディレクトリに保存されたリソースファイルはサポートされています。
ライブラリプロジェクトのファイルを含める場合は、アセットではなくリソースにファイルを配置する必要があります。ライブラリプロジェクトからWebViewにHTMLファイルをロードしようとしている場合、これは通常のアセットURLよりも多くの迂回方法を使用する必要があることを意味します。代わりに、リソースデータを読み取り、 loadData のようなものを使用する必要があります。
この答えは 期限切れ 、 gradle build system およびAARファイルはアセットをサポートしています。
これは、Gradleビルドシステムを使用して可能になりました。
Android Studio 0.5.0およびv0.9のAndroid Gradleプラグインを使用して、次のようなファイルを見つけました。
MyLibProject/src/main/assets/test.html
最終アプリケーションに正しくパッケージ化され、実行時に予期されるURLからアクセスできます。
file:///Android_asset/test.html
はい。私はしばらくの間、これについて強調し、睡眠を失いました。 APIの作成を愛し、複雑な統合を嫌う人のタイプです。
インターネットには多くのソリューションが存在しないため、Eclipse Hackeryで発見したことを非常に誇りに思っています。
ファイルをAndroid Libの/ assetsフォルダーに配置すると、ターゲットapkがこれをキャプチャし、APKアーカイブのルートに配置するため、一般的なアクセスが失敗します。これは、Raw Java Libraryを作成し、そこにすべてのアセット、つまり(JAVALIB)/assets/fileX.txtを配置するだけで解決できます。
次に、これをJava ProjectのBuild Path Folder Source> Properties> Java Build Path> Source> Link Source。
これで、アプリをビルドして実行すると、APKのアセットフォルダーに(GLOBAL Library)ファイルが意図したとおりに含まれます。
再構成する必要はありませんAndroid internals or nothing.Eclipseを数回クリックするだけですべてが可能になります。
これを実現するには、ライブラリプロジェクトのディレクトリを指すシンボリックリンクをプロジェクトのアセットフォルダーに作成します。
次に、以下のようにアクセスできます。
webview.loadUrl("file:///Android_asset/folder_in_a_libary_project/info.html", null);
Daniel Grantのアプローチは、少なくとも次の状況で機能することを確認します。ターゲットプロジェクトにアセットフォルダーがない(またはフォルダーが空なので、安全に削除できる)。変数を設定しませんでした。次のようにLinkSourceを設定するだけです(例)リンクされたフォルダーの場所:/ home/matthew/workspace_moonblink/assetsForAdvocacy/assetsフォルダー名:資産
「assetsForAdvocacy」は、Javaプロジェクト、(New- Project-Java Project)で作成)空のsrcフォルダー、および「assets」という名前の新しいフォルダーです。 、ターゲットプロジェクトのアセットフォルダー全体を提供するようになりました。
これは、Eclipse内でかなり簡単な方法であり、多くのさまざまなプロジェクトで資産を再利用できます。長期的にはコンテンツプロバイダーになるように機能強化したいと思うかもしれませんが、それはさらに多くの開発です。
私のプロジェクトは、次のコードでアセットにアクセスします。String advocacyFolderInAssets = "no_smoking /"; // assetsの下のフォルダー/ String fn = advocacyFolderInAssets + imageFilename;ビットマップpristineBitmapForAdvocacy = getBitmapFromAsset(context、fn);
UbuntuでMotodev Studio 3.1.0を使用します。新しいアセットのみのプロジェクトの新しいアセットフォルダーをターゲットプロジェクトの既存のアセットフォルダーに「マージ」することはできません。
1つのライブラリから複数の派生製品が作成されるセットアップを使用する場合は、SCMシステムでsvn:externalsまたは同様のソリューションを使用することを検討してください。これは、オンラインヘルプのような静的アセットをAndroidソースコードとは別にバージョン管理できるというトリックも行います。