все. Я создал проект библиотеки Android, и он отлично работает, когда я ссылаюсь на него из основного проекта. Но когда я создаю проект библиотеки отдельно, он не содержит R.java и ресурсов. Есть ли способ создать проект библиотеки с ресурсами и R.java?
Построить проект библиотеки
Ответы (2)
Сейчас это невозможно.
Теперь мы можем создать проект библиотеки только для двоичных файлов, выполнив следующие шаги:
- Создайте проект библиотеки Android с вашим исходным кодом и т. д. — это ваш основной проект, из которого вы создадите версию проекта библиотеки для распространения.
- Скомпилируйте исходный код Java (например, ant compile) и превратите его в файл JAR.
- Создайте проект дистрибутивной библиотеки Android с теми же ресурсами, что и проект основной библиотеки, но без исходного кода.
- Поместите JAR-файл в каталог libs/ проекта дистрибутивной библиотеки Android. Получившийся проект дистрибутивной библиотеки Android будет иметь все, что нужно основному проекту, только без исходного кода.
В этом решении есть некоторые ограничения:
- Нам еще нужно отправить ресурсы.
- Мы должны переписать наш код, чтобы избежать использования значений R., так как они будут неправильными. Нам нужно будет найти все идентификаторы ресурсов, используя getResources().getIdentifier() и/или отражение.
Я использую Eclipse и никогда не создаю свой проект библиотеки Android вручную самостоятельно, но я думаю, что соображения разработки изложены в официальном руководстве для разработчиков здесь должен ответить на ваш вопрос:
Каждый проект библиотеки создает свой собственный класс R
При сборке зависимого проекта приложения проекты библиотеки компилируются и объединяются с проектом приложения. Каждая библиотека имеет свой собственный класс R, названный в соответствии с именем пакета библиотеки. Класс R, сгенерированный из основного проекта, и проект библиотеки создаются во всех необходимых пакетах, включая пакет основного проекта и пакеты библиотек.
Обновление с помощью другого примечания, цитируемого из официального руководства разработчиков Библиотечные проекты:
Однако проект библиотеки отличается от стандартного проекта приложения Android тем, что его нельзя скомпилировать напрямую в собственный .apk и запустить на устройстве Android. Точно так же вы не можете экспортировать проект библиотеки в автономный файл JAR, как вы сделали бы для настоящей библиотеки. Вместо этого вы должны скомпилировать библиотеку косвенно, сославшись на библиотеку в зависимом приложении и создав это приложение.