Android 应用程序随机崩溃(java.lang.NoClassDefFoundError)
Posted
技术标签:
【中文标题】Android 应用程序随机崩溃(java.lang.NoClassDefFoundError)【英文标题】:Android app crashing randomly(java.lang.NoClassDefFoundError) 【发布时间】:2016-01-19 14:36:28 【问题描述】:我的应用程序不断与网络通信,当我第一次启动它时它运行良好。 但是一段时间后,当我最小化应用程序或在不同应用程序之间切换时,当我打开我的应用程序时,它会崩溃。 这是日志:
10-19 16:53:12.872:E/androidRuntime(15318):进程:com.aleph.view,PID:15318
10-19 16:53:12.872: E/AndroidRuntime(15318): java.lang.NoClassDefFoundError: com.aleph.model.MessageTypes
10-19 16:53:12.872: E/AndroidRuntime(15318): at com.al+nuListActivity.prepareURL(MainMenuListActivity.java:435)
10-19 16:53:12.872:E/AndroidRuntime(15318):在 com.aleph.view.abstractActivity.TemplateListActivity.processThread(TemplateListActivity.java:148)
10-19 16:53:12.872: E/AndroidRuntime(15318): 在 com.aleph.controller.MainMenuAction.ListItemClick(MainMenuAction.java:168)
10-19 16:53:12.872:E/AndroidRuntime(15318):在 com.aleph.view.myTrip.MainMenuListActivity.onListItemClick(MainMenuListActivity.java:109)
10-19 16:53:12.872: E/AndroidRuntime(15318): 在 android.app.ListActivity$2.onItemClick(ListActivity.java:319)
10-19 16:53:12.872:E/AndroidRuntime(15318):在 android.widget.AdapterView.performItemClick(AdapterView.java:300)
10-19 16:53:12.872: E/AndroidRuntime(15318): 在 android.widget.AbsListView.performItemClick(AbsListView.java:1186)
10-19 16:53:12.872: E/AndroidRuntime(15318): 在 android.widget.AbsListView$PerformClick.run(AbsListView.java:3099)
10-19 16:53:12.872: E/AndroidRuntime(15318): 在 android.widget.AbsListView$3.run(AbsListView.java:4046)
10-19 16:53:12.872: E/AndroidRuntime(15318): 在 android.os.Handler.handleCallback(Handler.java:739)
10-19 16:53:12.872: E/AndroidRuntime(15318): 在 android.os.Handler.dispatchMessage(Handler.java:95)
10-19 16:53:12.872: E/AndroidRuntime(15318): 在 android.os.Looper.loop(Looper.java:135)
10-19 16:53:12.872: E/AndroidRuntime(15318): 在 android.app.ActivityThread.main(ActivityThread.java:5376)
10-19 16:53:12.872: E/AndroidRuntime(15318): 在 java.lang.reflect.Method.invoke(Native Method) 10-19 16:53:12.872: E/AndroidRuntime(15318): 在 java.lang.reflect.Method.invoke(Method.java:372)
10-19 16:53:12.872:E/AndroidRuntime(15318): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
10-19 16:53:12.872: E/AndroidRuntime(15318): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
接着是:
10-19 16:54:08.802:E/AndroidRuntime(16425):进程:com.aleph.view, PID:16425
10-19 16:54:08.802: E/AndroidRuntime(16425): java.lang.RuntimeException: 无法启动活动 组件信息com.aleph.view/com.aleph.view.myTrip.LoginActivity: java.lang.NullPointerException:尝试调用虚拟方法 'java.lang.String java.lang.String.trim()' 在空对象引用上
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2345)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2405)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 android.app.ActivityThread.access$800(ActivityThread.java:155)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1323)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 android.os.Handler.dispatchMessage(Handler.java:102)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 android.os.Looper.loop(Looper.java:135)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 android.app.ActivityThread.main(ActivityThread.java:5376)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 java.lang.reflect.Method.invoke(本机方法)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 java.lang.reflect.Method.invoke(Method.java:372)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:908)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:703)
10-19 16:54:08.802: E/AndroidRuntime(16425): 由: java.lang.NullPointerException:尝试调用虚拟方法 'java.lang.String java.lang.String.trim()' 在空对象引用上
10-19 16:54:08.802:E/AndroidRuntime(16425):在 com.aleph.model.phoneHome.PhoneHomeValidator.checkMobileData(PhoneHomeValidator.java:124)
10-19 16:54:08.802:E/AndroidRuntime(16425):在 com.aleph.model.phoneHome.PhoneHomeValidator.primeMobileForValidation(PhoneHomeValidator.java:54)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 com.aleph.view.myTrip.LoginActivity.onCreate(LoginActivity.java:70)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 android.app.Activity.performCreate(Activity.java:6021)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
10-19 16:54:08.802: E/AndroidRuntime(16425): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
10-19 16:54:08.802: E/AndroidRuntime(16425): ... 10 更多
长期以来一直试图解决这个问题。请帮忙
【问题讨论】:
你检查过什么是 Null 吗? java.lang.NoClassDefFoundError: com.aleph.model.MessageTypes,这是你的类吗?它部署了吗……找不到…… 也发布您的代码。 根据您提供的信息很难找出问题所在。您的 onPause 或 onStop 中有任何代码吗?您应该非常了解 Android 生命周期,尤其是在您进行大量网络通信的情况下。 【参考方案1】:这是来自三星设备吗?我认为三星对他们的本地代码编译器优化或其他东西过于激进。我使用 Splunk MINT 接收远程堆栈跟踪,我在三星设备上看到了三种崩溃,就像每几千次运行中的一种:
进程正试图以用户 -2 的身份做某事 应用没有明显拥有的权限 随机莫名其妙的NoClassDefFoundError【讨论】:
【参考方案2】:要做的事情:
• 将以下行添加到您的 proguard 配置文件(通常称为 proguard-android.txt 或 proguard-rules.pro):
-keep class MessageTypes
-keep class com.aleph.model.MessageTypes
• 刷新您的构建
• 再次构建应用程序
让我知道这是否有效,如果没有,我会进一步研究。
【讨论】:
它没有用。如果您需要更多信息来解决,请告诉我。当我第一次打开应用程序时它也会崩溃然后用任务杀手杀死它并再次打开它会引发 Caused by: java.lang.NoClassDefFoundError: com.aleph.model.MessageTypes以上是关于Android 应用程序随机崩溃(java.lang.NoClassDefFoundError)的主要内容,如果未能解决你的问题,请参考以下文章
我正在使用 Fragments,当我快速按下后退按钮时,应用程序崩溃了。它随机发生
Android WebRTC 随机崩溃,致命信号 6 (SIGABRT)、tid 1191 (TimeCheckThread) 中的代码 -6 (SI_TKILL)、pid 656 (audioser