创建Android Library后出现merged_manifest的FileNotFoundException
解决Android Library依赖引发的FileNotFoundException与重复内容根警告
优先处理*「Duplicate content roots detected」*警告(核心诱因)
这个警告大概率是库模块和主模块的源码/资源目录被重复关联,直接干扰了Gradle的Manifest合并流程,先搞定它:
- 打开Android Studio的「Project Structure」(快捷键Ctrl+Alt+Shift+S)
- 切换到「Modules」标签,挨个检查主模块和库模块的「Sources」「Resources」页签
- 找到带黄色警告的重复目录,移除其中一方的关联(比如库模块误加了主模块的res目录,直接删掉)
- 也可以直接查看模块的
build.gradle,确保sourceSets没有重复声明路径,示例:
保证主模块和库模块的sourceSets路径完全不重叠sourceSets { main { java.srcDirs = ['src/main/java'] res.srcDirs = ['src/main/res'] manifest.srcFile 'src/main/AndroidManifest.xml' } }
修复FileNotFoundException(Manifest合并失败)
解决重复根目录后,针对缺失Manifest文件的问题做以下操作:
- 检查库模块的
AndroidManifest.xml:- 确认根标签
manifest的package属性合法,无特殊字符;另外你的项目路径含空格「Radio Tuner」,虽然Gradle理论支持,但建议临时把项目移到无空格路径(比如R:\RadioTuner)测试 - 库的Manifest里不要包含
application标签,库不需要独立的Application配置,有就删掉
- 确认根标签
- 强制刷新缓存并重建:
- 执行Gradle命令:Windows下用
gradlew.bat clean build --refresh-dependencies,Mac/Linux用./gradlew clean build --refresh-dependencies - 手动删除项目根目录的
.gradle文件夹,以及各模块的build文件夹,再重启Android Studio
- 执行Gradle命令:Windows下用
- 对齐Gradle配置:
- 确保主模块和库模块的
compileSdkVersion、minSdkVersion、targetSdkVersion完全一致 - 库模块的
build.gradle顶部必须声明为com.android.library插件,不能是com.android.application:plugins { id 'com.android.library' }
- 确保主模块和库模块的
额外排查方向
- 如果用了Manifest占位符,检查库模块是否引用了主模块未定义的占位符,导致合并失败
- 暂时禁用第三方插件(比如混淆、多渠道打包插件),排查是否是插件干扰了Manifest合并流程
内容的提问来源于stack exchange,提问作者gpl
相关产品推荐
相关产品推荐

