Android Studio应用无代码报错却崩溃的问题求助
问题
点击Run后应用崩溃,清理缓存或重启设备能临时解决,但只要做微小代码修改(比如新增一行代码)就会再次崩溃。错误日志如下:
FATAL EXCEPTION: main Process: com.example.hoerspielduell, PID: 337 java.lang.SecurityException: Writable dex file '/data/data/com.example.hoerspielduell/code_cache/.overlay/base.apk/classes3.dex' is not allowed. at dalvik.system.DexFile.openDexFileNative(Native Method) at dalvik.system.DexFile.openDexFile(DexFile.java:406) at dalvik.system.DexFile.<init>(DexFile.java:128) at dalvik.system.DexFile.<init>(DexFile.java:101) at dalvik.system.DexPathList.loadDexFile(DexPathList.java:438) at dalvik.system.DexPathList.makeDexElements(DexPathList.java:387) at dalvik.system.DexPathList.<init>(DexPathList.java:166) at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:160) at dalvik.system.BaseDexClassLoader.<init>(BaseDexClassLoader.java:130) at dalvik.system.PathClassLoader.<init>(PathClassLoader.java:146) at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:93) at com.android.internal.os.ClassLoaderFactory.createClassLoader(ClassLoaderFactory.java:134) at android.app.ApplicationLoaders.getClassLoader(ApplicationLoaders.java:126) at android.app.ApplicationLoaders.getClassLoaderWithSharedLibraries(ApplicationLoaders.java:61) at android.app.LoadedApk.createOrUpdateClassLoaderLocked(LoadedApk.java:1034) at android.app.LoadedApk.getClassLoader(LoadedApk.java:1126) at android.app.LoadedApk.getResources(LoadedApk.java:1374) at android.app.ContextImpl.createAppContext(ContextImpl.java:3324) at android.app.ContextImpl.createAppContext(ContextImpl.java:3316) at android.app.ActivityThread.handleBindApplication(ActivityThread.java:6889) at android.app.ActivityThread.-$$Nest$mhandleBindApplication(Unknown Source:0) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2237) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:205) at android.os.Looper.loop(Looper.java:294) at android.app.ActivityThread.main(ActivityThread.java:8223) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:977)
已尝试执行Clean Project、Rebuild Project操作,以及卸载重装应用,问题仍未解决。
解决方案
- 禁用Android Studio的Instant Run功能:打开Settings → Build, Execution, Deployment → Instant Run,取消勾选"Enable Instant Run to hot swap code/resource changes on deploy"。该功能的热替换机制可能导致dex文件权限异常。
- 手动清除设备应用代码缓存:使用adb命令执行
adb shell run-as com.example.hoerspielduell rm -rf code_cache,彻底删除应用的code_cache目录。 - 检查Gradle配置:确认是否开启了冗余的dex分包配置,比如
multiDexEnabled true,若当前项目不需要可尝试关闭;同时将Android Gradle Plugin版本更新至稳定版。 - 重启adb服务:执行
adb kill-server后再运行adb start-server,重置adb连接状态。 - 切换编译模式:先切换到Release模式运行一次应用,再切回Debug模式,重置编译缓存状态。
内容的提问来源于stack exchange,提问作者Basti
相关产品推荐
相关产品推荐

