Подтвердить что ты не робот

Android Manifest vs. App Manifest

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

Я разрабатываю виджет приложения с "облегченными" и "платными" версиями, поэтому будет иметься почти весь код в проекте библиотеки. Будучи виджетами, библиотека будет иметь, по крайней мере, приемник, услугу, конфигурационную деятельность, а также пару других видов деятельности. Итак, где должны быть объявлены полные декларации этих компонентов, включая намерения, фильтры и т.д.? Они идут в манифест для библиотеки или в манифест для самого пакета приложения, ссылаясь на классы в библиотеке (например, android: name= "com.foo.mylibrary.MyService" )?

Некоторые примеры, на которые я смотрел, похоже, объявляют их в обоих манифестях, но я подозреваю, что их размещение в одном или другом случае не является оператором.

4b9b3361

Ответ 1

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

В настоящее время не используется манифест проекта библиотеки.

Gradle для Android, и поэтому Android Studio, поддержка проектов библиотеки и AARs, публикующих манифест. Это может включать в себя такие вещи, как объявления активности, требуемые разрешения или функции или минимальные уровни поддержки Android SDK.

Правила того, как проявляются библиотеки, объединены с собственным манифестом приложения - особенно когда вы берете типы сборки и вкусы продукта во внимание - бит сложный.

Итак, где должны быть объявлены полные декларации этих компонентов, включая намерения, фильтры и т.д.?

В хост-проекте.

Библиотека может публиковать эти компоненты, и проект хоста Android Studio затем может удалить их, если это необходимо.

Они идут в манифест для библиотеки или в манифест для самого пакета приложения, ссылаясь на классы в библиотеке (например, android: name= "com.foo.mylibrary.MyService" )?

Последний.

В любом (с Gradle для Android и Android Studio). Теоретически библиотеке легче публиковать компоненты, поэтому автору приложения это не нужно. Лично я не являюсь большим поклонником этого, так как слишком много разработчиков завершат доставку ненужных манифестных записей.

Ответ 2

Как и ADT r20 Preview 3, теперь можно объединить манифесты. Таким образом, общая конфигурация теперь может быть помещена в манифест библиотеки. Подробнее см. fooobar.com/questions/44798/....

Версия 13 Intellij IDEA необходима для поддержки слияния манифеста (manifestmerger.enabled=true). Кроме того, для поддержки Android Studio необходима система сборки на основе класса .

Ответ 3

Любые связанные элементы андроида, такие как действия, приемники, службы и т.д. ДОЛЖНЫ войти в ваш манифест приложения или они не будут распознаны ОС. Как вы уже догадались, файл манифеста библиотеки в значительной степени представляет собой пустую реализацию

UPDATE

Как уже упоминалось в CommonsWare, инструменты сборки Android теперь будут пытаться объединить различные манифесты от вашего имени. Оставив исходный ответ для потомков