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 - если тэг метаданных находится внутри тега приложения, вы также должны применить тег приложения в переопределяющем манифесте.