2011-06-21 2 views
3

Я создаю API с пользовательским представлением. Чтобы включить представление в пользовательских атрибутах в XML, я хочу использовать «Проект библиотеки Android» для API. Благодаря этому я могу объявить определение моих пользовательских атрибутов в attrs.xml.Проект библиотеки Android как скомпилированная библиотека JAR

Но у меня возникли проблемы с использованием проекта библиотеки при экспорте его в JAR-файл. Проект, связанный с JAR, вызывает проблемы с файлами ресурсов Android, включенными в JAR. Кто-нибудь знает, как это сделать? Надеюсь, в моем вопросе я был ясен. Я не могу позволить проекту быть проектом с открытым исходным кодом в этом случае.

[Update] . От: http://developer.android.com/guide/developing/projects/index.html#considerations

«Вы не можете экспортировать проект библиотеки в JAR файл библиотека не может быть распределена в виде двоичного файла (например, файл JAR) Это потому, что проект библиотеки скомпилирован основным проектом для использования правильных идентификаторов ресурсов ».

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

+0

Можете ли вы написать, какую ошибку он дает? –

+0

@ neeraj-nama При экспорте и библиотеке Android с ресурсами (включая папку gen) в JAR проект, ссылающийся на JAR, не может создать свой собственный R-файл, потому что его уже существует. Это работает для обычной ссылки на проект библиотеки Android, но не в JAR. По крайней мере, я не понял, как это сделать. – likebobby

ответ

0

Чтобы поддерживать более быстрое время сборки, инструменты r16 создают свои собственные файлы jar внутри проектов библиотеки Android. Вы можете использовать эту функцию для решения этой проблемы. Если вы хотите опубликовать свой проект библиотеки Android, но без исходного кода, вы можете сделать копию этого проекта библиотеки Android, который содержит все, кроме дерева исходного кода. Затем включите файл jar из оригинальной библиотеки Android Porject (тот, который был создан инструментами r16). Это позволит вам иметь компонент, который вы можете распространять, который не требует исходного кода. Потребителю этого нового проекта библиотеки Android необходимо вручную добавить необходимые метаданные в файл AndroidManifest.xml своего проекта по мере необходимости («Действия», «Провайдеры», «Разрешения» и т. Д.).

1

обновление от code.google.com Issue 9656: Library projects don't support custom XML attributes for custom classe, ... если у вас есть r17 инструментов.

конкретно из текста этой ссылке:

Посмотрите в «Что нового в SDk r17»:

Добавлена ​​поддержка пользовательских представлений с пользовательскими атрибутами в библиотеках. Макеты с использованием настраиваемых атрибутов должны использовать пространство имен URI http://schemas.android.com/apk/res-auto вместо URI, которое содержит имя пакета приложения. Этот URI заменяется на конкретное приложение во время сборки.

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

+1

Как эта функция используется? Как создать JAR моей библиотеки? –

Смежные вопросы