Удаление элемента AndroidManifest со вкусом продукта Gradle

Я настраиваю проект Gradle для Android с несколькими вариантами продуктов. Я хотел бы иметь <uses-permission android:name="android.permission.INTERNET" /> разрешение во всех, кроме одного из моих вкусов. Я знаю, что можно добавить конкретный аромат, чтобы добавить разрешение, но возможно ли удалить аромат?

Единственное другое решение, которое я могу придумать, это добавить <uses-permission android:name="android.permission.INTERNET" /> разрешение на все мои ароматы, кроме той, которая кажется довольно болезненной.

3 ответа

Решение

Согласно документам вы можете:

  1. удалить разрешение с добавлением в ваш манифест что-то вроде этого <permission android:name="permissionOne" tools:node="remove"/>

  2. и объявить отдельные части AndroidManifest.xml для каждого аромата вsrc/myFlavor/AndroidManifest.xml который будет объединен с этим основным AndroidManifest.xml

Я знаю, что это старый, но теперь есть новый атрибут под названием tools:node="remove" это позволяет вам удалить тег из манифеста.

Объявите заголовок вашего манифеста следующим образом:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">

Также вы должны добавить свой тег так:

<uses-permission android:name="android.permission.INTERNET" tools:node="remove" />

Я надеюсь, что это помогает другим.

Источник: ЗДЕСЬ

Также Android документация: ЗДЕСЬ

РЕДАКТИРОВАТЬ:

Отредактировал ответ, чтобы соответствовать новым изменениям API. Спасибо Мартину Л. за его комментарий

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

Другие вопросы по тегам