Ответ 1
1. Отключение элементов
Вы всегда можете явно отключать разрешения и функции в манифесте приложения и переопределять любые значения библиотеки. И я обнаружил, что вы можете отключить элементы из библиотеки.
Пример
Рассмотрим следующий код из приведенной выше ссылки:
<activity-alias
android:name="foo.bar.alias">
<meta-data
android:name="zoo"
tools:node="remove"/>
</activity-alias>
Используя этот код внутри вашего манифеста, вы гарантируете, что слияние найдет какие-либо элементы <activity-alias>
с атрибутом android:name="foo.bar.alias"
и удалит элемент <meta-data>
, если он имеет атрибут android:name="zoo"
. Он удаляет только мета-данные "зоопарка". Не псевдоним активности. Если вы укажете это в своем основном манифесте, это будет эффективно для всего, что было объединено до сих пор (элементы из библиотек).
Пример # 2
Поскольку вы запросили пример с действиями, это то, что я придумал:
<activity android:name="com.example.ui.MyActivity" tools:node="remove"/>
В этой строке слияние удалит любые действия с атрибутом android:name="com.example.ui.MyActivity"
, которые были объединены до сих пор. Поэтому, если вы укажете это в своем основном манифесте, он эффективно удалит любые записи com.example.ui.MyActivity
, которые могли быть объединены из библиотек.
2. Переопределение атрибутов из библиотеки
Порядок слияния значений описывается здесь в разделе "Порядок файлов манифеста". В основном это происходит так: библиотеки, затем основной манифест, затем проявляются вкусы и типы сборки, если вы их используете. Как переопределить атрибуты из библиотеки?
Что такое типы сборки?
По умолчанию "debug" и "release". Вы можете определить свои собственные и переопределить параметры, такие как подпись или прогейдер. Для ваших целей вы можете сказать, что это эквивалент конфигураций запуска.
Он работает следующим образом: вы помещаете свои значения по умолчанию и общие значения внутри манифеста main
. Затем в ароматных проявлениях вы переопределяете значения, которые вам нужны. Google "gradle ароматы" для получения дополнительной информации.
3. Отключение манифеста слияния вообще
Отключить манифестное слияние в Android Gradle Построить
android.applicationVariants.all { variant ->
variant.processResources.manifestFile = file('src/main/AndroidManifest.xml')
variant.processManifest.enabled=false
}
В каком файле вы помещаете это?
В конце проекта вашего модуля (не root) build.gradle
.
4. Являются ли проявления от зависимостей объединенными?
Да, они (это библиотеки).
Есть ли способ блокировать слияние определенных манифестов библиотеки?
Не то, чтобы я знаю, извините.
5. Любые учебники?
Зависит от того, что вы пытаетесь достичь. До сих пор он всегда работал у меня из коробки.
- например. http://www.myandroidsolutions.com/2014/04/10/android-gradle-manifest-merge/
- Документация о слиянии с манифестом (ссылка ниже).
Я не знаю о каких-либо видео.
6. Что я должен знать?
Вы можете проверить сгенерированный манифест, если у вас возникли подозрения в отношении дополнительных разрешений и т.д. Он находится в project/module/build/intermediates/manifests/full/[flavor]/build-type/AndroidManifest.xml
.
Соус: http://tools.android.com/tech-docs/new-build-system/user-guide/manifest-merger