Flutter项目执行./gradlew assembleDebug报错:AndroidManifest.xml不存在但实际文件存在
./gradlew assembleDebug报错:AndroidManifest.xml不存在但实际文件存在 遇到这种明明文件就在指定路径下,但Gradle却死活找不到的问题确实很头疼,结合你提供的错误信息和已经尝试过的操作,我整理了几个可能的排查方向,你可以逐一试试:
先严格核对文件路径的准确性
错误提示里的路径是C:\Users\User\Desktop\flutter\MinamotoApp2\MinamotoApp\android\src\main\AndroidManifest.xml,你可以手动打开这个路径确认:- 有没有拼写错误?比如文件夹名是不是多写/少写了字符?
- 文件是不是真的在
src/main目录下?有没有不小心放到了其他子目录(比如src/debug)? - Windows下虽然不区分大小写,但偶尔Gradle对大小写敏感,检查文件名是不是严格是
AndroidManifest.xml(比如有没有写成androidmanifest.xml或者Androidmanifest.xml)
检查Android模块的Gradle配置是否篡改了Manifest路径
打开你的Android模块下的app/build.gradle文件,看看有没有类似这样的配置:sourceSets { main { manifest.srcFile 'xxx/AndroidManifest.xml' } }如果有,确认这个路径是正确的绝对路径或者相对路径,如果写错了就会导致Gradle找不到文件。
清除更深层的缓存,重新同步项目
你已经试过./gradlew clean和Flutter相关的升级,试试更彻底的缓存清理:- 执行
flutter clean清除Flutter项目的缓存 - 删除Android模块下的
.gradle文件夹(路径是android/.gradle) - 打开Android Studio(如果用的话),点击
File -> Sync Project with Gradle Files重新同步 - 再执行
flutter pub get,然后重新尝试./gradlew assembleDebug
- 执行
检查文件权限和系统权限问题
虽然你说文件不是只读,但Windows系统下有时候会出现权限异常:- 右键
AndroidManifest.xml文件,选择「属性」->「安全」标签,确认当前登录用户拥有「读取」和「写入」权限 - 尝试以管理员身份打开命令行/终端,再执行
./gradlew assembleDebug命令,避免权限不足导致的文件访问问题
- 右键
尝试重新生成Android模块(终极方案)
如果以上方法都不行,可能是Android模块的配置文件出现了隐性损坏:- 先备份当前项目的
android文件夹(里面的Manifest、签名配置、build.gradle等重要文件要保存好) - 在项目根目录执行
flutter create --platforms android .,重新生成标准的Android模块 - 将备份里的自定义配置(比如Manifest里的权限、applicationId、Activity配置,build.gradle里的依赖、签名信息等)复制到新生成的Android模块中
- 重新执行构建命令
- 先备份当前项目的
另外,关于你收到的那个AGP版本警告:
WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 34
This Android Gradle plugin (7.3.0) was tested up to compileSdk = 33
This warning can be suppressed by adding
android.suppressUnsupportedCompileSdk=34
to this project's gradle.properties
这个警告不会导致当前的Manifest找不到错误,但如果想解决的话,有两个选择:
- 按照提示在
gradle.properties文件中添加android.suppressUnsupportedCompileSdk=34来抑制警告 - 升级Android Gradle Plugin(AGP)到支持compileSdk 34的版本(比如7.4.0及以上),同时对应的Gradle版本也要升级(可以参考AGP和Gradle的官方版本对应关系)
备注:内容来源于stack exchange,提问作者Jycko Sianjaya

