android - java.lang.ClassNotFoundException : android. os.AsyncTask 由 AdMob/Google Play 服务引起?

标签 android android-asynctask admob

自 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/

相关文章:

android - 使用 Jetpack Navigation 和 RxJava + Dagger2 的登录流程

android - 当图像从上到下下降时如何减小图像尺寸?

android - AsyncTask 从很多地方调用了很多

android - 从另一个类调用 AsyncTask

javascript - 在 Phonegap 中以编程方式加载 Admob 插页式广告

安卓 : AdMob onClickListener

android - 仪器测试运行器 : What does android:functionalTest achieve?

android - 将 CalendarView 与数据绑定(bind)结合使用

java - 摩尔斯电码应用程序 AsyncTask 错误 5

android - 当我点击广告时,我的应用在lg设备上崩溃