java Android 应用程序在真实设备上崩溃如果 apk 是手动安装的
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/43406398/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Android App Crashes on Real Device If apk is manually installed
提问by some user
My Application is running fine in Emulators and even in real devices installed by android studio for debugging purpose, but it is crashing if installed manually using apk file.
我的应用程序在模拟器中运行良好,甚至在 android studio 为调试目的安装的真实设备中运行良好,但如果使用 apk 文件手动安装它会崩溃。
I am ready to paste any other codes, like Activity if required.
如果需要,我准备粘贴任何其他代码,例如活动。
Here is the 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
回答by Haris ali
Just go to:
只需前往:
Android Studio --> File --> Setting --> Build, execution, deploy --> Instant run.
and disable instant run
.
并禁用instant run
.
回答by beee
If you just upgraded your android studio.
如果您刚刚升级了 android studio。
You will not have this option to disable -> Instant Run
. (not on the menu)
您将没有此选项disable -> Instant Run
。(菜单上没有)
Seems like with new android studio and gradle upgrade in order to install an apk you need to properly build it.
似乎使用新的 android studio 和 gradle upgrade 来安装您需要正确构建它的 apk。
Option 1:with gradle from command line
选项 1:从命令行使用 gradle
./gradlew :appName:clean
./gradlew :appName:build
Option 2:from android studio
选项 2:来自 android studio
Android Studio -> build -> build APK
(or generate sighed APK)
Android Studio -> build -> build APK
(或生成sighed APK)
The generated apk can be installed fine on a device.
生成的 apk 可以很好地安装在设备上。
Note:if you start a new applicate with this version of android studio you will see that when you run from studio there is no apk generated anymore.
注意:如果你用这个版本的 android studio 启动一个新的应用程序,你会看到当你从 studio 运行时,不再生成 apk。
回答by Puneet Verma
I faced the similar problem.
我遇到了类似的问题。
Note the size of Apk, it would be very small in size , this is because of the instant run feature in enabled. Just disable it
注意 Apk 的大小,它的大小会非常小,这是因为启用了即时运行功能。只需禁用它
May be Android Studio is not including all files in Apk, when we use the instant run to fasten the process.
可能是 Android Studio 没有包含 Apk 中的所有文件,当我们使用即时运行来加快进程时。
Any body know why this happening?
任何机构都知道为什么会发生这种情况?
Go to :
去 :
Android Studio --> File --> Setting --> Build, execution, deploy --> Instant run.
回答by Hamza Abdullah
Android Studio --> File --> Setting --> Build, execution, deploy --> Instant run. and disable instant run.
Android Studio --> 文件 --> 设置 --> 构建、执行、部署 --> 即时运行。并禁用即时运行。