多Flavor场景下,如何让Android Studio不查找main目录的AndroidManifest.xml?
解决Android Gradle多风味无main目录Manifest的报错问题
Android Gradle插件默认会强制查找src/main/AndroidManifest.xml作为基础清单文件,哪怕你为每个风味单独配置了专属Manifest。要解决这个报错,你可以通过配置sourceSets来覆盖默认的Manifest查找规则:
- 打开
app/build.gradle(若使用KTS则对应app/build.gradle.kts,语法需稍作调整),在android代码块中添加sourceSets配置:
android { // 保留你原有的compileSdk、defaultConfig、productFlavors等配置 sourceSets { // 清空main源集的Manifest配置,阻止插件查找main目录下的清单文件 main { manifest.srcFile = null } // 明确指定每个风味的Manifest路径 flavor1 { manifest.srcFile 'src/flavor1/AndroidManifest.xml' } flavor2 { manifest.srcFile 'src/flavor2/AndroidManifest.xml' } } }
确保每个风味的Manifest包含完整必要配置:因为不再有main目录的Manifest作为基础合并,每个风味的清单文件需要独立包含
application标签、必要权限、组件声明等全部内容。同步Gradle:点击Android Studio右上角的"Sync Project with Gradle Files"按钮,等待同步完成后报错即可消失。
如果你的项目中main目录下也没有其他资源(比如res、Java代码),也可以在sourceSets.main中进一步清空这些配置,避免插件额外查找:
main { manifest.srcFile = null java.srcDirs = [] res.srcDirs = [] assets.srcDirs = [] }
内容的提问来源于stack exchange,提问作者Charles Martin
相关产品推荐
相关产品推荐

