Android Studio误寻AndroidManifest.xml路径致编译失败求助
解决Android项目中Gradle无法识别正确AndroidManifest.xml路径的问题
你遇到的核心麻烦是IDE错误地在根目录的src/main/AndroidManifest.xml路径寻找清单文件,而实际文件明明在app/src/main/AndroidManifest.xml。结合你提供的配置文件,我来一步步帮你排查和解决:
一、先修正全局build.gradle的致命错误
你的根目录build.gradle存在两个严重的配置错误,这是导致路径识别混乱的根源:
- 根项目错误地应用了
com.android.library插件——这个插件只应该在Library模块中使用,根项目的build.gradle绝对不能加它,否则Gradle会把整个根目录当成Library模块,自动去根目录找manifest。 - 全局配置里不该出现
android块和sourceSets配置,这些都是模块专属的配置项,放在全局会干扰Gradle的模块识别逻辑。
修复后的全局build.gradle示例:
// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'com.android.tools.build:gradle:3.0.1' classpath 'io.fabric.tools:gradle:1.+' // Fabric的classpath统一放在这里 } } allprojects { repositories { jcenter() google() maven { url 'https://maven.fabric.io/public' } } } task clean(type: Delete) { delete rootProject.buildDir }
二、调整app模块build.gradle的sourceSets路径
你的app模块build.gradle里的sourceSets路径写错了——app模块的根目录就是D:\Source Code\The Project - Android\app,所以写app/src/main/AndroidManifest.xml会让IDE去寻找app/app/src/main/AndroidManifest.xml,这显然是不存在的。
修复步骤:
在app模块的build.gradle中修改sourceSets:
android { // ...其他原有配置 sourceSets { main { // 直接写模块内的相对路径即可,或者如果你的目录结构是标准的,这个配置其实可以直接删掉 manifest.srcFile 'src/main/AndroidManifest.xml' } } // ...其他原有配置 }
另外你之前把compileSdkVersion改成26的操作是对的,保持这个配置避免API版本匹配问题。
三、重置IDE的模块配置文件
你的.iml文件把Gradle项目路径指向了根项目(:),但实际应用模块是:app,需要重置:
- 完全关闭Android Studio
- 删除根目录下的
.idea文件夹,以及所有模块的.iml文件(包括app模块的) - 重新打开Android Studio,它会自动重新生成正确的模块配置文件
四、最后验证操作
- 点击工具栏
Build→Clean Project清理项目 - 点击
Sync Project with Gradle Files同步Gradle配置 - 尝试编译项目,检查是否还存在manifest路径错误
另外,关于之前的GradleException问题,你替换成FileNotFoundException只是临时方案,等Gradle配置修复后,改回原来的GradleException即可,此时Gradle应该能正常识别这个异常类了。
内容的提问来源于stack exchange,提问作者GokuMizuno
相关产品推荐
相关产品推荐

