Android - возможно ли создать собственную библиотеку для использования в нескольких приложениях? - PullRequest
20 голосов
/ 01 декабря 2009

Можно ли создать в Android пользовательскую библиотеку (имеющую собственные ресурсы макета) для использования в нескольких приложениях Android?

  • Я создал обычный файл * .jar, но когда я пытался динамически создавать / стилизовать мои представления, большинство свойств не работают. Даже ссылки на простые стили из файла android.jar, такие как android.attr.listSeparatorTextViewStyle , не работали.

  • Я создал проект Android без Activity, имел собственные файлы ресурсов, а затем сослался на этот проект из другого проекта Android, чтобы использовать его в пути сборки. Кажется, все работает нормально, но эмулятор продолжает падать (без значимого сообщения об ошибке в LogCat ), когда я пытаюсь запустить проект.

Я что-то упустил?

Ответы [ 4 ]

17 голосов
/ 04 февраля 2011

Могу опоздать с ответом, но нашел это интересным. Настройка проекта библиотеки

Проект библиотеки Android - это проект развития, который имеет общий Исходный код Android и ресурсы. Другие проекты приложений для Android могут ссылаться на проект библиотеки и, в время сборки, включая его скомпилированный исходники в своих .apk файлах. множественный проекты приложений могут ссылаться на тот же проект библиотеки и любой другой проект приложения может ссылаться несколько библиотечных проектов.

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

13 голосов
/ 02 декабря 2009

Ну, я думаю, что есть способ сделать это (хотя я сам не пробовал), но он требует, чтобы пользователи вашей библиотеки создавали свои APK вручную с помощью aapt.

Проблема заключается в следующем: экспортируемый вами JAR содержит файл класса R, в котором хранятся идентификаторы ресурсов вашей библиотеки. Таким образом, любое приложение может получить доступ к этим идентификаторам, просто связав свой JAR. Однако этого недостаточно, поскольку по умолчанию только ресурсы в папке res / папки приложения связаны с APK. Следовательно, вы должны создать APK самостоятельно, используя aapt, указав, чтобы он также включал любые ресурсы из вашей библиотеки. Обратитесь к справке Aapt Tool за дополнительной информацией.

Поскольку это подразумевает, что пользователи вашей библиотеки должны вводить процесс сборки вручную (или, по крайней мере, изменять его), это приводит к плохому опыту.

5 голосов
/ 02 декабря 2009

Можно ли создать кастом библиотека в андроиде (имеющая свою ресурсы макета) для использования через несколько приложений для Android?

Нет. У JAR не может быть ресурсов. Вы можете поделиться кодом таким способом, но ресурсы должны находиться в приложениях, повторно использующих JAR.

Даже ссылаясь на простые стили из файл android.jar, такой как android.attr.listSeparatorTextViewStyle не сработало.

Убедитесь, что вы связываете свой JAR с android.jar. Вы можете увидеть много примеров этого в компонентах CWAC на моей странице github .

0 голосов
/ 03 мая 2013

Это все еще верно для R21? Я могу экспортировать проект библиотеки в файл JAR и успешно использовать его в других проектах клиентов, как с точки зрения кода, так и с доступом к файлу ресурсов.

пока http://developer.android.com/tools/projects/index.html все еще имеет следующее утверждение, которое, похоже, больше не соответствует действительности:

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

...