module使用 - android studio library project




如何引用庫項目中的資產 (5)

在屬於Library項目的類中,我調用:

webview.loadUrl("file:///android_asset/info.html", null);

不幸的是,這只有在我將文件info.html 複製Application的項目資產文件夾中時才有效。

有沒有辦法告訴Android庫代碼:“在庫的資源文件夾中查找此文件, 而不是在應用程序的資源文件夾中”?


來自Android文檔

圖書館項目不能包括原始資產

這些工具不支持在庫項目中使用原始資產文件(保存在assets /目錄中)。 應用程序使用的任何資產資源都必須存儲在應用程序項目本身的assets /目錄中。 但是,支持保存在res /目錄中的資源文件。

如果要包含庫項目中的文件,則需要將其放在資源中而不是資源中。 如果您嘗試將庫項目中的HTML文件加載到WebView中,這意味著您必須採用比通常的資產URL更環繞的方法。 相反,您必須讀取資源數據並使用類似loadData

這個答案已經過時gradle構建系統和AAR文件支持資產。


好的。 我一直在強調和失眠。 我是喜歡API創建和HATES複雜集成的人。

互聯網上有很多解決方案,所以我很自豪我用Eclipse Hackery發現了什麼。

事實證明,當您將文件放在Android Lib的/ assets文件夾中時。 目標apk將捕獲此並將其放在APK歸檔的根目錄上。 因此,使一般訪問失敗。 這可以通過簡單地創建Raw Java Library並將所有資源放在那裡來解決,即(JAVALIB)/assets/fileX.txt。

然後,您可以在項目>屬性> Java構建路徑>源>鏈接源中將其作為Java構建路徑文件夾源包含在內。

  1. 鏈接來源
  2. 單擊“變量”。 並添加新變量,即VAR_NAME_X。 位置:../../(relative_path_to_assets_project)
  3. 單擊確定

現在,當您構建並運行您的應用程序時,APK中的assets文件夾將按您的意圖包含您的(GLOBAL Library)文件。

無需重新配置android內部或任何內容。 只需點擊幾下Eclipse即可完成所有功能。


您可以通過在項目的資產文件夾中創建指向庫項目中的目錄的符號鏈接來實現此目的。

然後你可以訪問如下:

webview.loadUrl("file:///android_asset/folder_in_a_libary_project/info.html", null);

我發現了這個較老的問題 ,它也可能對你有所幫助。

這是Google用於存檔的官方方式(來自上面的帖子): Link


現在可以使用Gradle構建系統。

使用Android Gradle插件的Android Studio 0.5.0和v0.9進行測試,我發現了像

MyLibProject/src/main/assets/test.html

正確打包在最終的應用程序中,可以在運行時通過預期的URL訪問:

file:///android_asset/test.html




library-project