it-swarm.com.ru

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

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

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

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

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

20
Tawani

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

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

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

13
Matthias

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

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

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

17
Sachin Chavan

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

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

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

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

5
CommonsWare

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

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

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

0
user443461