You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

build/generated目录下Manifest类消失致应用运行失败求助

为啥自动生成的Manifest.java会在运行时消失?

这问题我之前帮团队排查过类似的,结合你描述的场景——clean build能生成但一运行就没,导致权限访问失败,主要有这几个常见原因:

  • 构建任务顺序与临时目录清理
    Android Gradle插件的构建流程里,Manifest.java(一般存放在build/generated/source/manifest这类临时输出目录)是在编译阶段生成的。但有些运行前的任务(比如processDebugResources的后续清理子任务)会把临时目录里的部分文件标记为“可清理”,如果插件配置有问题,或者自定义权限的生成逻辑没被正确标记为“需要保留到运行时”,就会被误删。简单说就是:编译时生成了,但运行前的清理步骤把它干掉了。

  • 自定义权限的声明不规范
    如果你的自定义权限声明有语法问题(比如name格式不符合Android规范、protectionLevel设置错误,或者和系统/第三方库的权限重名),Gradle在运行时的校验环节会认为这个权限无效,进而自动移除生成的Manifest.java里的相关常量,甚至直接删除整个文件。这种情况往往伴随构建日志里的警告,但可能没被注意到。

  • Gradle缓存或构建目录异常
    有时候Gradle的增量缓存会“犯糊涂”:clean build时确实生成了正确的Manifest.java,但运行时Gradle读取的是旧的缓存数据,或者构建目录里的文件没有被正确同步到运行类路径。比如build/intermediates下的某些缓存文件没有被更新,导致运行时找不到最新生成的文件。

  • 多模块依赖的同步问题
    如果你的项目是多模块结构,自定义权限在某个子模块声明,而主模块的依赖配置不对(比如用了compileOnly而不是implementation,或者依赖的模块没有正确执行构建任务),会导致Manifest.java没有被同步到主模块的运行目录里,看起来就像是“消失”了。

既然你已经找到不用依赖这个文件的解决方案,那这些原因应该能帮你理解为啥之前会出现这种诡异的现象~

内容的提问来源于stack exchange,提问作者jpm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:22:43