自 2014 年 11 月 21 日以来,我收到了数百份崩溃报告,其中包含以下堆栈。
崩溃仅发生在 API Level 10 设备上(应用支持 9+)
在崩溃开始之前的几周内,相同版本的应用程序一直运行良好。这让我觉得这个问题是由最近推送到 Android 2.3 设备的一些无线更新引起的。
我在我的应用中使用 AdMob 中介(现在是 Google Play 服务库的一部分)和其他几个广告网络 SDK。
我怀疑是 Google Play 服务库导致了崩溃,因为据我所知,它是应用程序中唯一可能通过无线方式更新的部分(这不是第一次)错误的更新会导致崩溃)。
如 OP 回答 here 所述,是否有可能? ,在 AdMob 创建的用于显示横幅广告的线程内触发的未捕获异常可能会使整个进程处于无法再创建新的类实例的状态?
最近有人遇到过类似的问题吗?
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
最佳答案
好的,看来是其中一个版本的 Google Play 服务存在问题。 见 https://code.google.com/p/android/issues/detail?id=81083
看起来解决方法可能是将以下内容添加到您的 Application#onCreate()
:
package acme.com.myAppName;
import android.app.Application;
public class MyApplication extends Application
{
@Override
public void onCreate()
{
// begin add
try {
Class.forName("android.os.AsyncTask");
} catch(Throwable ignore) {
}
// end add
super.onCreate();
}
}
注意不要忘记在 AndroidManifest.xml
中配置您的 Application 类(如果您还没有)。
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name="acme.com.myAppName.MyApplication" >
...
</application>
关于android - java.lang.ClassNotFoundException : android. os.AsyncTask 由 AdMob/Google Play 服务引起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27173375/