安卓应用在手动安装apk后,在真机上崩溃

11

我的应用在模拟器中和通过Android Studio安装在真实设备上进行调试时运行良好,但如果使用apk文件手动安装,则会崩溃。

如果需要,我可以粘贴其他代码,例如Activity。

这是logcat:

04-14 12:20:44.392 6220-6220/? I/art: Late-enabling -Xcheck:jni
04-14 12:20:44.465 6220-6220/test.planner W/System: ClassLoader referenced unknown path: /data/app/test.planner-1/lib/arm
04-14 12:20:44.467 6220-6220/test.planner I/InstantRun: starting instant run server: is main process
04-14 12:20:44.470 6220-6220/test.planner D/AndroidRuntime: Shutting down VM
04-14 12:20:44.471 6220-6220/test.planner E/AndroidRuntime: FATAL EXCEPTION: main
Process: test.planner, PID: 6220
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{test.planner/test.planner.MainActivity}: java.lang.ClassNotFoundException: Didn't find class "test.planner.MainActivity" on path: DexPathList[[zip file "/data/app/test.planner-1/base.apk"],nativeLibraryDirectories=[/data/app/test.planner-1/lib/arm, /vendor/lib, /system/lib]]
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2327)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)
    at android.app.ActivityThread.-wrap11(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:148)
    at android.app.ActivityThread.main(ActivityThread.java:5417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
 Caused by: java.lang.ClassNotFoundException: Didn't find class "test.planner.MainActivity" on path: DexPathList[[zip file "/data/app/test.planner-1/base.apk"],nativeLibraryDirectories=[/data/app/test.planner-1/lib/arm, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
    at android.app.Instrumentation.newActivity(Instrumentation.java:1067)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2317)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
    at android.app.ActivityThread.-wrap11(ActivityThread.java) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5417) 
    at java.lang.reflect.Method.invoke(Native Method) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
    Suppressed: java.lang.ClassNotFoundException: test.planner.MainActivity
    at java.lang.Class.classForName(Native Method)
    at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
    at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
            ... 12 more
 Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

2
请在设置中禁用即时运行功能,如果它已启用。 - Dixit Patel
这可能会有所帮助 - https://dev59.com/KV8d5IYBdhLWcg3wsDxW - TDG
@DixitPatel 现在工作正常啦!:) 谢谢老兄。 - some user
1
您可以在此文章中找到答案:NoClassDefError - J.A.V.A
我在Android Studio中找不到即时运行。 - daparic
4个回答

13

只需前往:

Android Studio --> File --> Setting --> Build, execution, deploy --> Instant run.

并禁用 即时运行


4
在Android Studio 3.5.2中无法看到即时运行。 - Shubham Anand
我在Android Studio 2020.3.1中找不到这个选项。 - GSandro_Strongs

5
如果您刚刚升级了Android Studio,那么您将没有这个“禁用->即时运行”选项(不在菜单上)。似乎随着新的Android Studio和Gradle升级,为了安装APK,您需要正确地构建它。 选项1:使用命令行从Gradle构建。
./gradlew :appName:clean  
./gradlew :appName:build

选项2:从Android Studio

Android Studio -> Build -> Build APK(或生成已签名的APK)。

生成的APK可以在设备上正常安装。

注意:如果您使用此版本的Android Studio启动新应用程序,则会发现当您从工作室运行时不再生成APK。


谢谢!我因为这个问题已经苦恼了好几天!我知道“即时运行”选项存在问题,所以已经有一段时间没有使用它了!但是我从来没有想过用第二个选项“正确构建apk”会有帮助! - Juan

1
我遇到了类似的问题。 请注意Apk的大小,这是因为启用了即时运行功能,因此非常小。只需禁用它即可。 也许当我们使用即时运行来加快过程时,Android Studio没有包含所有文件在Apk中。 有人知道为什么会发生这种情况吗? 前往:
Android Studio --> File --> Setting --> Build, execution, deploy --> Instant run.

-1

Android Studio --> 文件 --> 设置 --> 构建、执行、部署 --> 即时运行。 然后禁用即时运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,