自2014年11月21日起,我收到了数百份崩溃报告,其中包含以下堆栈 .
崩溃仅发生在API Level 10设备上(该应用程序支持9)
在崩溃开始前的几个星期内,该应用程序的相同版本运行良好 . 这让我觉得问题是由最近推送到Android 2.3设备的一些无线更新引起的 .
我在我的应用中使用AdMob中介(现在是Google Play服务库的一部分)和其他几个广告网络SDK .
我怀疑Google Play服务库会导致崩溃,因为根据我的知识,它是应用程序中唯一可能通过无线更新的部分(这不是第一次更新错误导致崩溃) .
如OP所述,是否有可能回答here,在AdMob创建的线程内触发未捕获的异常以显示 Banner 广告 might put the whole process in a state where it is not able to create new instances of classes anymore?
最近有没有人遇到过类似的问题?
java.lang.NoClassDefFoundError: com.myapp.MyClassExtendingAsyncTask
at com.myapp.x.run(SourceFile:417)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3859)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:647)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: com.myapp.MyClassExtendingAsyncTask in loader dalvik.system.PathClassLoader[/data/app/com.myapp-1.apk]
at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:240)
at java.lang.ClassLoader.loadClass(ClassLoader.java:551)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
... 10 more
4 回答
好的,看起来这是其中一个版本的Google Play服务的问题 . 见https://code.google.com/p/android/issues/detail?id=81083
看起来似乎可以将以下内容添加到
Application#onCreate()
:注意,不要忘记在
AndroidManifest.xml
中配置您的Application类(如果您还没有) .为了扩展上面的答案,因为我不知道Application#onCreate()是什么,并且还没有在我的应用程序中实现它 . 我做的是在我的应用程序中使用以下内容创建一个新类:
然后我使用
android:name="acme.com.myAppName.myApplication"
更新了我的AndroidManifest.xml文件以使用myApplication
类,如下所示:同样的问题,自23/11以来,我在2.x客户端出现了大约1500个ClassNotFoundException错误,并且呈上升趋势 . 该应用程序数月未更新,因此我同意您关于Google Play服务ota更新的假设
我用一个try catch块包围了我的
adview.loadAd(adrequest);
,这解决了我的问题 .这是代码片段: