【问题标题】:Android app crashing randomly(java.lang.NoClassDefFoundError)Android 应用程序随机崩溃(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 生命周期,尤其是在您进行大量网络通信的情况下。

标签: java android android-studio android-asynctask


【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多