我想根据产品风格定义不同的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]
感谢。
答案 0 :(得分:20)
在您的gradle文件中,您无需定义清单的路径。
使用:
productFlavors{
prod {}
dev{}
}
验证您的目录结构是否正确:src目录下每个样式的名称为flavor的目录,以及每个目录中的覆盖清单文件。
Gradle将合并文件。
PS - 如果您的元数据标记位于应用程序标记内,您还应该在覆盖清单中应用应用程序标记。