Как ссылаться на актив в проекте библиотеки

В классе, принадлежащем проекту библиотеки, я вызываю:

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

К сожалению, это работает только в том случае, если я дублирую файл info.html в папке активов проекта приложения .

Есть ли способ рассказать код библиотеки Android: «Ищите этот файл в папке с ресурсами библиотеки, а не в папке с ресурсами приложения»?

Solutions Collecting From Web of "Как ссылаться на актив в проекте библиотеки"

Из Android-документов :

Библиотечные проекты не могут включать в себя исходные активы

Инструменты не поддерживают использование файлов исходных активов (сохраненных в каталоге assets / directory) в проекте библиотеки. Любые ресурсы ресурсов, используемые приложением, должны храниться в каталоге assets / application самого проекта приложения. Однако файлы ресурсов, сохраненные в каталоге res /, поддерживаются.

Если вы хотите включить файлы из проекта библиотеки, вам нужно будет поместить его в ресурсы вместо активов. Если вы пытаетесь загрузить HTML-файлы из проекта библиотеки в WebView, это означает, что вам придется использовать более обходной метод, чем обычный URL-адрес ресурса. Вместо этого вам нужно будет прочитать данные о ресурсах и использовать что-то вроде loadData .

Этот ответ устарел , система построения градиентов и файлы AAR поддерживают активы.

Теперь это возможно с использованием системы сборки Gradle.

Тестирование с помощью Android Studio 0.5.0 и v0.9 плагина Android Gradle, я обнаружил, что файлы, такие как

 MyLibProject/src/main/assets/test.html 

Правильно упакованы в окончательное приложение и могут быть доступны во время выполнения через ожидаемый URL:

 file:///android_asset/test.html 

Хорошо. Я все время подчеркивал и терял сон об этом. Im тип человека, который любит создание API, и сложную интеграцию HATES.

В Интернете много решений в Интернете, поэтому я очень горжусь тем, что Ive обнаружил с помощью немного Eclipse Hackery.

Оказывается, когда вы помещаете файл в папку Android Lib / assets. Целевой apk захватит это и поместит его в корень архива APK. Таким образом, общий доступ невозможен. Это можно решить, просто создав Raw Java Library и разместив там все активы, то есть (JAVALIB) /assets/fileX.txt.

В свою очередь, вы можете включить это как источник папок Java Path Path в Project> Properties> Path> Source> Source Source.

  1. Источник ссылки
  2. Нажмите Переменные. И Добавить новую переменную, то есть VAR_NAME_X. Местоположение: ../../(relative_path_to_assets_project)
  3. Нажмите «ОК»

Теперь, когда вы создаете и запускаете свое приложение, папка с активами в APK будет содержать ваши (GLOBAL Library) файлы по вашему желанию.

Не нужно перенастраивать внутренние компоненты Android или ничего. Все это способно в течение нескольких кликов от Eclipse.

Вы можете добиться этого, создав символическую ссылку в папке активов проекта, которая указывает на каталог в проекте библиотеки.

Затем вы можете получить доступ, как показано ниже:

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

Я подтверждаю, что подход Дэниела Гранта работает, по крайней мере, в следующей ситуации: у целевого проекта нет папки с активами (или папка пуста, поэтому вы можете безопасно ее удалить). Я не настраивал какую-либо переменную. Просто установите LinkSource следующим образом (просто пример). Связанная папка: / home / matthew / workspace_moonblink / assetsForAdvocacy / assets Имя папки: активы

«AssetsForAdvocacy» – это проект Java (созданный с помощью проекта New-Project – Java Project) с пустой папкой src и новая папка с именем «активы», которая теперь предоставляет всю папку с ресурсами для целевого проекта.

Это довольно простой способ в Eclipse обеспечить повторное использование активов во многих разных проектах, если они еще не имеют активов, достаточно хороших, чтобы идти в ногу с ними. Я бы, вероятно, хотел бы улучшить его, чтобы стать поставщиком контента в долгосрочной перспективе, но это намного больше.

Мой проект получает доступ к активам со следующим кодом: String advocacyFolderInAssets = "no_smoking /"; // папка под активами / String fn = advocacyFolderInAssets + imageFilename; Bitmap pristineBitmapForAdvocacy = getBitmapFromAsset (контекст, fn);

Я использую Motodev Studio 3.1.0 на Ubuntu. Это не позволило мне «объединить» новую папку с активами в новом проекте только для активов в существующую папку с ресурсами в целевом проекте.

Если вы хотите использовать настройку, в которой несколько продуктов деривации создаются из одной библиотеки, вы можете рассмотреть возможность использования svn: externals или аналогичного решения в вашей системе SCM. Это также приведет к тому, что статические активы, такие как интерактивная справка, могут быть версированы отдельно от исходного кода Android.

Я нашел этот старый вопрос , он тоже может помочь вам.

Это официальный способ, который Google использует для архивирования (из вышеприведенного сообщения): Ссылка