Папка ресурсов библиотеки Android не копируется - PullRequest
16 голосов
/ 05 мая 2011

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

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

Ответы [ 5 ]

34 голосов
/ 30 июня 2011

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

В сборках на основе ANT это все еще невозможно:

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

Но вы можете

11 голосов
/ 04 апреля 2013

Можно поместить активы в получившуюся библиотечную банку небольшим исправлением:
Поместите « 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 Версия 21.1.0 для OSX

2 голосов
/ 26 февраля 2013

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

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

Из ProjectA мне удалось сослаться .. \ ProjectA \ Assets из ProjectB. В Eclipse (по крайней мере под Windows я еще не пробовал в Linux) мне пришлось создать новую переменную для ссылки .. \ ProjectA и использовать эту переменную в «Расположение связанной папки». Если бы я попытался использовать «..» в «Расположение связанной папки», eclipse не принял бы его.

1 голос
/ 27 марта 2015

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

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

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

enter image description here

enter image description here

0 голосов
/ 07 апреля 2015

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

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

добавление инструментов в путь C: \ Users \ user_bss> PATH =% PATH%; C: \ adt-bundle-windows-x86-20140321 \ sdk \ tools

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

блокнот custom_rules.xml добавьте код, приведенный выше, не забудьте завершить тег

, запустите "ant debug" или "ant release", чтобы собрать

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

...