我发现在我的应用程序达到相当大小(例如通过添加多个库)后,运行应用程序会抛出 java.lang.SecurityException: writable dex file '.../code_cache/.overlay/base.apk/classes2.dex'是不允许的。
如果我然后删除大部分库,只留下默认添加的库,然后再次运行,它就可以工作。但是,如果我添加一点代码(例如日志),它可能会因相同的错误而失败。
如果我希望它运行时不出现此错误,我必须卸载该应用程序,然后从 Android Studio 再次运行。这非常不方便,因为每次我进行一些更改时,我都必须卸载该应用程序。我无法想象会有人愿意开发这样的 Android 应用程序。
有谁知道这个问题的解决办法吗?
在 android 14 模拟器上测试我的应用程序时,我遇到了同样的错误。
DexClassLoader
只允许使用只读 dex 文件。所以我用 File("path/to/abc.dex").setReadOnly()
来解决我的问题。
从您的日志
../code_cache/.../classes2.dex
来看,您的代码或依赖项中可能使用了某种 dex 加载。因此,您应该在加载这些 dex 文件之前将其设置为只读。