Построить проект библиотеки

все. Я создал проект библиотеки Android, и он отлично работает, когда я ссылаюсь на него из основного проекта. Но когда я создаю проект библиотеки отдельно, он не содержит R.java и ресурсов. Есть ли способ создать проект библиотеки с ресурсами и R.java?


person Roman Black    schedule 10.03.2012    source источник
comment
Как вы строите проект библиотеки отдельно?   -  person yorkw    schedule 11.03.2012
comment
Я использую IDE NetBeans для разработки. Щелкните правой кнопкой мыши проект и выберите «Сборка». Результат сборки такой же, как и при сборке с основным проектом - файл jar в каталоге bin проекта библиотеки без файла r.   -  person Roman Black    schedule 11.03.2012


Ответы (2)


Сейчас это невозможно.

Теперь мы можем создать проект библиотеки только для двоичных файлов, выполнив следующие шаги:

  1. Создайте проект библиотеки Android с вашим исходным кодом и т. д. — это ваш основной проект, из которого вы создадите версию проекта библиотеки для распространения.
  2. Скомпилируйте исходный код Java (например, ant compile) и превратите его в файл JAR.
  3. Создайте проект дистрибутивной библиотеки Android с теми же ресурсами, что и проект основной библиотеки, но без исходного кода.
  4. Поместите JAR-файл в каталог libs/ проекта дистрибутивной библиотеки Android. Получившийся проект дистрибутивной библиотеки Android будет иметь все, что нужно основному проекту, только без исходного кода.

В этом решении есть некоторые ограничения:

  1. Нам еще нужно отправить ресурсы.
  2. Мы должны переписать наш код, чтобы избежать использования значений R., так как они будут неправильными. Нам нужно будет найти все идентификаторы ресурсов, используя getResources().getIdentifier() и/или отражение.
person Roman Black    schedule 11.03.2012

Я использую Eclipse и никогда не создаю свой проект библиотеки Android вручную самостоятельно, но я думаю, что соображения разработки изложены в официальном руководстве для разработчиков здесь должен ответить на ваш вопрос:

Каждый проект библиотеки создает свой собственный класс R

При сборке зависимого проекта приложения проекты библиотеки компилируются и объединяются с проектом приложения. Каждая библиотека имеет свой собственный класс R, названный в соответствии с именем пакета библиотеки. Класс R, сгенерированный из основного проекта, и проект библиотеки создаются во всех необходимых пакетах, включая пакет основного проекта и пакеты библиотек.

Обновление с помощью другого примечания, цитируемого из официального руководства разработчиков Библиотечные проекты:

Однако проект библиотеки отличается от стандартного проекта приложения Android тем, что его нельзя скомпилировать напрямую в собственный .apk и запустить на устройстве Android. Точно так же вы не можете экспортировать проект библиотеки в автономный файл JAR, как вы сделали бы для настоящей библиотеки. Вместо этого вы должны скомпилировать библиотеку косвенно, сославшись на библиотеку в зависимом приложении и создав это приложение.

person yorkw    schedule 11.03.2012
comment
Спасибо. Но файл R создается в основном проекте, а не в банке библиотеки. И ресурсы в эту банку не упакованы. - person Roman Black; 12.03.2012
comment
@RomanBlack, jar-файл библиотеки, кроме хост-проекта, ничего не значит. Проект библиотеки Android не упоминается как файл jar во время выполнения, вместо этого его источники (java, res, AndroidManifest.xml и т. д.) компилируются и объединяются в хост-проект при создании хост-проекта (тем самым позволяя Android SDK фильтровать только используемая часть в ваш окончательный apk, что приводит к уменьшению размера файла apk и экономии места в памяти). В среде IDE, такой как Eclipse, R.java с скомпилированными классами автоматически генерируется при сборке хост-проекта. - person yorkw; 12.03.2012
comment
@RomanBlack, команда разработчиков Android в настоящее время обновляет дизайн проекта библиотеки Android и обещает поддержку экспорта проекта библиотеки в виде файла jar в следующем выпуске, проверьте здесь для более подробной информации. - person yorkw; 12.03.2012
comment
Да, я знаю. Но мне нужно создать библиотеку Android с закрытым исходным кодом в виде файла jar. Невозможно создать библиотеку, включающую R-файл и ресурсы, и поделиться ею. Теперь я нахожу способ поделиться скомпилированным исходным кодом, но мои ресурсы открыты. - person Roman Black; 12.03.2012