Android + gradle: разные метаданные манифеста

Я хотел бы определить другой атрибут манифеста meta-data в зависимости от вкуса продукта. я пытался это сделать,

src/
  main/
    AndroidManifest.xml
  prod/
    AndroidManifest.xml
  dev/
    AndroidManifest.xml

манифест main завершен, но версии prod и dev разрежены и содержат только метаданные,

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="com.example.inventory"
          android:versionCode="1"
          android:versionName="1.0">

  <meta-data android:name="analytics"
             android:value="true"/>

</manifest>

Я понимаю, что проявления вкуса сольются с основным. в моем build.gradle, я делаю,

android {
  productFlavors {
    prod {
      manifest.srcFile "prod/AndroidManifest.xml"
    }
    dev {
      manifest.srcFile "dev/AndroidManifest.xml"
    }
  }
  ...
}

однако, найдите, я пытаюсь построить "assembleProdDebug", я получаю это,

* What went wrong:
A problem occurred evaluating project ':Inventory'.
> No signature of method: org.gradle.api.java.archives.internal.DefaultManifest.srcFile() is applicable for argument types: (java.lang.String) values: [prod/AndroidManifest.xml]

спасибо.

Ответы

Ответ 1

В вашем файле gradle вам не нужно определять путь к манифесту.

использование:

productFlavors{
 prod {}
 dev{}
}

Убедитесь, что ваша структура каталогов верна: каталог с названием аромата для каждого аромата в директории src и в каждом каталоге помещает файл переопределения манифеста.

Gradle будет объединять файлы.

PS - если тэг метаданных находится внутри тега приложения, вы также должны применить тег приложения в переопределяющем манифесте.