Android应用程序在Real Device上崩溃如果手动安装了apk

时间:2017-04-14 06:31:26

标签: java android crash

我的应用程序在Emulators中运行良好,甚至在android studio安装的实际设备中运行以进行调试,但如果使用apk文件手动安装它会崩溃。

我准备粘贴任何其他代码,例如活动,如果需要。

这是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

4 个答案:

答案 0 :(得分:14)

请转到:

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

并停用instant run

答案 1 :(得分:5)

如果你刚刚升级了你的android工作室。

disable -> Instant Run你不会有这个选项。 (不在菜单上)

似乎有新的android studio和gradle升级,以便安装apk,你需要正确构建它。

选项1:从命令行使用gradle

./gradlew :appName:clean  
./gradlew :appName:build
来自android studio的

选项2:

Android Studio -> build -> build APK(或生成叹息APK)

生成的apk可以在设备上正确安装。

注意:如果您使用此版本的android studio启动新的应用程序,您将看到当您从工作室运行时,不再生成apk。

答案 2 :(得分:2)

我遇到了类似的问题。

注意Apk的大小,它的大小非常小,这是因为启用了即时运行功能。只是禁用它

当我们使用即时运行来固定流程时,Android Studio可能不包括Apk中的所有文件。

任何人都知道为什么会这样吗?

转到:

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

答案 3 :(得分:0)

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