Я разрабатываю библиотеку Android SDK. В этой библиотеке я объявил и использовал некоторые действия. Теперь я попытался включить библиотеку в приложение, но я заметил, что должен объявить все действия библиотеки в приложении. Это очень плохо, потому что в библиотеке я включил множество мероприятий, и разработчик должен скопировать все действия в своем приложении. Есть ли решения для этого?
Проект библиотеки и Android
Ответ 1
Нет, это известное ограничение библиотек на данный момент. В сообществе разработчиков Android есть много дискуссий об исправлении этого в будущем, но на данный момент это ограничение того, как они делают библиотеки.
Из doc
В файле манифеста приложения, вы должны добавить объявления всех компонентов, которые приложение будет использовать импортированный из проекта библиотеки. Для Например, вы должны объявить
<activity>
,<service>
,<receiver>
,<provider>
и т.д., а также<permission>
,<uses-library>
и аналогичные элементы.
Кроме того, отличный ответ здесь от Марка Мерфи.
Ответ 2
Обновление 1: При использовании Gradle слияние манифеста выполняется автоматически. Подробнее о том, как это работает и как разрешать конфликты, можно найти здесь (спасибо за замечание guy.gc)
Оригинальное сообщение:
Чтобы обновить эту тему, теперь возможно автоматическое слияние. Вам нужно будет добавить
manifestmerger.enabled=true
к вашим проектным свойствам. Используя новый "манифестермер" свойство в Android также обсуждает это.
Я знаю, что это старый поток, но я просто наткнулся на него и хочу, чтобы другие (включая меня) не думали, что это невозможно. Эта одна строка была полностью достаточной в моих проектах, чтобы использовать действия в библиотечно-потребляющем приложении.