升级compileSDKVersion至34后Android14设备出现SecurityException问题求助
解决Android 14上升级compileSDKVersion至34后的Writable dex文件SecurityException问题
问题说明
升级compileSDKVersion到34后,在Android 14设备上触发如下异常:
java.lang.SecurityException: Writable dex file '/data/data/com.swaraj.cdmsfm/code_cache/.overlay/base.apk/classes11.dex' is not allowed.
这是因为Android 14(API 34)新增了安全限制,禁止应用向代码缓存目录写入可执行的DEX文件,以此防范恶意代码注入风险。
解决方案
- 适配/禁用热修复/动态加载框架:若应用使用了Tinker、AndFix等热修复或动态DEX加载框架,需升级至适配Android 14的版本——这类框架通常会直接操作代码缓存目录的DEX文件,是触发该异常的常见原因。
- 移除自定义DEX写入逻辑:检查应用代码中是否存在直接向
/data/data/[你的包名]/code_cache/目录写入DEX的逻辑,直接删除这类操作,改用系统允许的只读DEX加载方式。 - 更新第三方依赖:排查所有依赖库,确认是否有后台执行DEX写入的情况,将依赖更新到最新版本,多数主流库已完成Android 14适配。
- 采用合规的动态加载方式:若需动态加载代码,使用
DexClassLoader加载外部只读DEX文件,或通过Android App Bundle的动态特性模块实现按需加载,避免触碰代码缓存目录的写入限制。
内容的提问来源于stack exchange,提问作者Avtar Lal
相关产品推荐
相关产品推荐

