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

StackOverflow https://stackoverflow.com/questions/1828448

  •  11-09-2019
  •  | 
  •  

Вопрос

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

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

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

Я что-то упускаю?

Это было полезно?

Решение

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

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

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

Другие советы

Возможно, я опоздал с ответом, но нашел вот это, что интересно.Настройка библиотечного проекта

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top