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

Android动态模块返回MainActivity时抛出资源未找到异常咨询

Resources$NotFoundException 触发原因说明

这个异常在Dynamic Module接入场景下、且仅在跨页面返回MainActivity时触发,结合你使用的Gradle 4.2.1版本,对应三类明确的触发原因:

  • 未全量注入SplitCompat上下文
    动态模块的资源路径不会自动挂载到所有组件上下文中,如果你只在触发动态模块下载安装的入口逻辑里调用了SplitCompat.install(),没有在MainActivity、以及跳转目标Activity的attachBaseContext方法里执行SplitCompat.install(this),当页面跳转触发Activity生命周期切换、上下文重建时,动态模块的资源路径引用会丢失,返回MainActivity时访问动态模块资源就会直接抛错。动态模块首次运行时刚完成安装,资源临时缓存还没被系统回收,所以不会触发报错。
  • AGP 4.2.1 版本打包bug
    4.2.1版本的Android Gradle插件存在已知的App Bundle资源表偏移计算问题:打AAB包时会错误偏移动态模块的资源ID索引,当MainActivity从其他页面返回、经历onRestart生命周期时,系统会清空之前临时加载的动态模块资源缓存,重新从base包资源表按ID查资源,此时错误的ID映射会直接导致资源查找失败,触发崩溃。
  • 资源解析上下文使用错误
    如果你把动态模块内的资源ID存在了全局单例、静态变量中,返回MainActivity时使用Application上下文或者未做SplitCompat注入的上下文去调用getResources().getXxx()解析这个资源ID,由于默认上下文不包含动态模块的资源查找路径,也会抛出资源找不到的异常。

快速排查方法:在MainActivity的onResume生命周期里主动调用一次SplitCompat.install(this),如果返回时崩溃消失,即可确认是上下文注入遗漏或生命周期失效问题;如果仍崩溃,基本可以判定是AGP版本打包bug导致,升级AGP到4.2.2及以上版本即可修复该打包问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:06:22