Папка активов библиотеки Android не копируется

Я создаю библиотеку Android и имеет папку assets с изображениями. Когда я использую его в другом проекте, активы не копируются.

У кого-нибудь еще была эта проблема?

Ответ 1

новая система создания Android, основанная на Gradle, поддерживает папки с ресурсами в библиотечных проектах!

С построением на основе ANT это все еще невозможно:

Библиотечные проекты не могут включать в себя необработанные активы. (См. docs)

Но вы могли

Ответ 2

Можно поместить активы в итоговую библиотечную банку с помощью небольшого исправления:
Поместите " custom_rules.xml" в ваш проект проекта библиотеки (рядом с build.xml):

<?xml version="1.0" encoding="UTF-8"?>
<project name="custom_rules">
    <target name="-post-compile" if="${project.is.library}">
    <echo>Post Compile: add assests from ${asset.absolute.dir} to ${out.library.jar.file}</echo>
    <jar destfile="${out.library.jar.file}" update="true">
        <zipfileset dir="${asset.absolute.dir}" prefix="assets" excludes="**/*.java ${android.package.excludes}"/>
    </jar>
</target>

Это упакует ваши библиотечные активы в итоговую библиотечную банку. В результате эти активы будут включены в итоговый файл .apk вашего приложения.

Проверено на Android SDK Tools Revision 21.1.0 на OSX

Ответ 3

Из Eclipse и ANT вы можете ссылаться на одну и ту же папку "активы" из нескольких проектов. Это позволяет исходному дереву иметь одну копию файлов активов, но включать их в несколько APK.

Смотрите Android: целевые папки res для отладки в eclipse

Из ProjectA я смог ссылаться.. \ProjectA\Assets из ProjectB. На Eclipse (по крайней мере, по Windows, я еще не пробовал в Linux), мне пришлось создать новую переменную для ссылки.. \ProjectA и использовать эту переменную в "Location Link Folder". Если я попытался использовать ".." в "Location Linked Folder Location", то eclipse не согласился бы с этим.

Ответ 4

Для тех, кто использует IntelliJ IDEA, вы можете внести изменения в настройки упаковки вашего приложения, чтобы включить в него активы децентрализованного. Обратите внимание, что это было сделано в версии 14.0.2 издания IntelliJ Community. Мой основной модуль приложения теперь наследует файлы из моей папки ресурсов проекта библиотеки, как если бы они были правы в главном проекте!

Щелкните правой кнопкой мыши модуль приложения > Открыть модуль. Выберите дерево Android node в модуле > вкладка "Упаковка". Установите флажок "Включить активы из зависимостей в APK"

Примечание. Я никогда не пользовался Android Studio, но я бы предположил, что в этом приложении есть аналогичный параметр.

enter image description here

enter image description here

Ответ 5

начать с создания проекта андроида lib, закрыть после создания. это приведет к отключению autobuild

использовать cmd-терминал для Windows. Команда android - пакетный файл

добавить инструменты в путь C:\Users\user_bss > PATH =% PATH%; C:\ADT-пачке окна-x86-20140321\SDK\инструменты

Создать build.xml для ant Проект обновления андроида -p C:\Users\user_bss\Documents\Workspace\SDKAdvanced -n SDKAdvanced

notepad custom_rules.xml добавить код сверху не забывайте конечный тег

запустить "ant debug" или "ant release" для сборки

вы увидите class.jar в bin dir, это ваша упакованная lib