Instant run会造成打包的apk中代码缺失,报java.lang.ClassNotFoundException

本文介绍了一种由AndroidStudio的Instantrun功能引起的代码缺失现象,并详细解释了如何禁用该功能以确保所有代码都被正确打包进apk文件中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Instant run会造成打包的apk中代码缺失

最近在项目开发过程中,发现一个问题,运行apk老是报java.lang.ClassNotFoundException: Didn't findclass "com.****.***.activity.MyApplication" on path: DexPathList,通过反编译apk查看源码发现,apk里面的没有工程里面的代码,难怪会报找不到类的异常,可是为什么代码没有打包到apk里面呢,原来是android studio的Instant run功能搞得鬼,Instant run是android studio2.1上面新加的功能,传统情况下,我们修改程序后重新运行一次程序需要经历 代码重新编译 -> 停止程序 -> 重新安装 -> 重新启动 这样一个过程,而Instant Run则尝试只将程序变更的部分部署到手机上,尽量避免重新安装或重新启动程序,以此大大提升调试程序的效率,但是这个功能也带来的好多的坑,我遇到的上面的问题就是Instant run造成的,把该功能禁用,重新编译打包apk,在反编译apk发现项目的代码都在里面了,而且运行也不再报错。
--------- beginning of main --------- beginning of system 2025-06-12 22:46:09.322 24133-24133 tware.hiltlearn com.software.hiltlearn E BBinder_init Processname <pre-initialized> 2025-06-12 22:46:09.322 24133-24133 tware.hiltlearn com.software.hiltlearn E BBinder_init hasGetProcessName <pre-initialized> 2025-06-12 22:46:09.604 24133-24133 UltraFrame...entFactory com.software.hiltlearn E Failed to create UltraFrameworkComponentFactoryImpl java.lang.ClassNotFoundException: android.os.ufw.UltraFrameworkComponentFactoryImpl at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:607) at java.lang.Class.forName(Class.java:512) at android.os.ufw.UltraFrameworkComponentFactory.getInstance(UltraFrameworkComponentFactory.java:78) at android.view.SurfaceControl.<init>(SurfaceControl.java:1358) at android.view.ViewRootImpl.<init>(ViewRootImpl.java:953) at android.view.ViewRootImpl.<init>(ViewRootImpl.java:1404) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:469) at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:169) at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:6088) at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:70) at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:60) at android.app.servertransaction.TransactionExecutor.executeLifecycleItem(TransactionExecutor.java:271) at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:146) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:120) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:3088) at android.os.Handler.dispatchMessage(Handler.java:109) at android.os.Looper.loopOnce(Looper.java:250) at android.os.Looper.loop(Looper.java:340) at android.app.ActivityThread.main(ActivityThread.java:9875) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:621) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:957) Caused by: java.lang.ClassNotFoundException: android.os.ufw.UltraFrameworkComponentFactoryImpl at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:2693) at java.lang.BootClassLoader.loadClass(ClassLoader.java:2753) at java.lang.ClassLoader.loadClass(ClassLoader.java:573) at java.lang.Class.classForName(Native Method)  at java.lang.Class.forName(Class.java:607)  at java.lang.Class.forName(Class.java:512)  at android.os.ufw.UltraFrameworkComponentFactory.getInstance(UltraFrameworkComponentFactory.java:78)  at android.view.SurfaceControl.<init>(SurfaceControl.java:1358)  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:953)  at android.view.ViewRootImpl.<init>(ViewRootImpl.java:1404)  at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:469)  at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:169)  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:6088)  at android.app.servertransaction.ResumeActivityItem.execute(ResumeActivityItem.java:70)  at android.app.servertransaction.ActivityTransactionItem.execute(ActivityTransactionItem.java:60)  at android.app.servertransaction.TransactionExecutor.executeLifecycleItem(TransactionExecutor.java:271)  at android.app.servertransaction.TransactionExecutor.executeTransactionItems(TransactionExecutor.java:146)  at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:120)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:3088)  at android.os.Handler.dispatchMessage(Handler.java:109)  at android.os.Looper.loopOnce(Looper.java:250)  at android.os.Looper.loop(Looper.java:340)  at android.app.ActivityThread.main(ActivityThread.java:9875)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:621)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:957)  Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 2025-06-12 22:46:09.682 24133-24133 TAG com.software.hiltlearn E 初始化
06-13
这是运行日志,运行时直接闪退,提示运用已经停止。 2025-06-03 19:43:52.326 24994-24994/? E/example.shopap: Unknown bits set in runtime_flags: 0x8000 2025-06-03 19:43:52.603 24994-24994/com.example.shopapp E/AndroidRuntime: FATAL EXCEPTION: main Process: com.example.shopapp, PID: 24994 java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.shopapp/com.example.shopapp.Wangluo}: java.lang.ClassNotFoundException: Didn’t find class “com.example.shopapp.Wangluo” on path: DexPathList[[zip file “/data/app/com.example.shopapp-YL9iaYQB4wjZ8_3HRELixQ==/base.apk”],nativeLibraryDirectories=[/data/app/com.example.shopapp-YL9iaYQB4wjZ8_3HRELixQ==/lib/x86, /system/lib, /system/product/lib]] at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3194) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930) Caused by: java.lang.ClassNotFoundException: Didn’t find class “com.example.shopapp.Wangluo” on path: DexPathList[[zip file “/data/app/com.example.shopapp-YL9iaYQB4wjZ8_3HRELixQ==/base.apk”],nativeLibraryDirectories=[/data/app/com.example.shopapp-YL9iaYQB4wjZ8_3HRELixQ==/lib/x86, /system/lib, /system/product/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:196) at java.lang.ClassLoader.loadClass(ClassLoader.java:379) at java.lang.ClassLoader.loadClass(ClassLoader.java:312) at android.app.AppComponentFactory.instantiateActivity(AppComponentFactory.java:95) at androidx.core.app.CoreComponentFactory.instantiateActivity(CoreComponentFactory.java:43) at android.app.Instrumentation.newActivity(Instrumentation.java:1243) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3182) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3409) at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:83) at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135) at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2016) at android.os.Handler.dispatchMessage(Handler.java:107) at android.os.Looper.loop(Looper.java:214) at android.app.ActivityThread.main(ActivityThread.java:7356) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
06-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Android海纳百川

打赏加微信,送跑车加管理

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值