Intereting Posts

Gradle: Как настроить разрешения Android Manifest?

Для моей системы сборки мне нужно создать несколько вариантов приложения, каждый из которых запрашивает другой набор разрешений. Как это можно сделать с помощью Gradle без вызова отдельного скрипта?

Solutions Collecting From Web of "Gradle: Как настроить разрешения Android Manifest?"

Мне просто удалось это сделать, имея разные вкусы в моем файле gradle:

free { packageName 'com.sample.free' buildConfigField "boolean", "HAS_AD", "true" } paid { packageName 'com.sample.paid' buildConfigField "boolean", "HAS_AD", "false" } 

А затем я создал новую папку под src, называемую «бесплатно», и под этой папкой с именем «res»

 src/ + free/ | + res/ + src/ 

И в этой папке создайте новый файл «AndroidManifest.xml» со ​​следующим кодом:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.sample" > <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> </manifest> 

Согласно Руководству пользователя Gradle Plugin на сайте проекта Android Tools:

Подобно типам Build, Product Flavors также вносят код и ресурсы через свои собственные исходные наборы.

а также

Следующие правила используются при работе со всеми наборами источников, которые используются для создания одного APK:

  • Все исходные коды (src / * / java) используются вместе как несколько папок, генерирующих один вывод.
  • Манифесты слиты вместе в один манифест. Это позволяет Product Flavors иметь разные компоненты и / или разрешения, аналогично Build Types.
  • Все ресурсы (Android res и активы) используются с использованием приоритета оверлея, где Тип сборки переопределяет Атрибут продукта, который переопределяет основной источник.
  • Каждый Build Variant генерирует собственный R-класс (или другой сгенерированный исходный код) из ресурсов. Ничего не разделяют между вариантами.

Что вы можете создать папку с каждым именем аромата под src и поместить в нее свои пользовательские файлы. Если указанный файл является AndroidManifest, то град объединит его с манифестом в главном.