首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java.lang.ClassNotFoundException:由AdMob /谷歌Play服务引起的android.os.AsyncTask?

java.lang.ClassNotFoundException:由AdMob /谷歌Play服务引起的android.os.AsyncTask?
EN

Stack Overflow用户
提问于 2014-11-27 22:50:35
回答 4查看 4.9K关注 0票数 17

自2014年11月21日以来,我收到了数以百计的崩溃报告和下面的堆栈。

崩溃仅发生在API10设备上(API10设备支持9+)

在崩溃开始之前的几周里,同一版本的应用程序一直运行得很好。这让我认为这个问题是由最近推送到Android2.3设备上的一些空中更新引起的。

我在我的应用程序中使用AdMob中介(它现在是Google Play服务库的一部分)和其他几个广告网络SDK。

我怀疑Google Play服务库是导致崩溃的原因,因为据我所知,它是应用程序中唯一可能会通过无线方式更新的部分(而且这不是第一次有be的更新导致崩溃)。

正如OPs answer here提到的那样,AdMob创建的用于显示横幅广告的线程内部触发的未捕获异常是否可能会使整个过程处于无法再创建类的新实例的状态?

最近有没有人遇到过类似的问题?

代码语言:javascript
复制
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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-12-02 08:26:29

好的,看起来这是Google play服务的一个版本的问题。请参阅https://code.google.com/p/android/issues/detail?id=81083

看起来解决办法可能是将以下内容添加到Application#onCreate()

代码语言:javascript
复制
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中配置你的应用程序类(如果你还没有配置的话)。

代码语言:javascript
复制
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:name="acme.com.myAppName.MyApplication" >
...
</application>
票数 14
EN

Stack Overflow用户

发布于 2014-12-08 23:39:07

扩展上面的答案,因为我不知道Application#onCreate()是什么,并且还没有在我的应用程序中实现一个。我所做的就是在我的应用程序中创建一个新的Class,如下所示:

代码语言:javascript
复制
package acme.com.myAppName;

import android.app.Application;

public class myApplication extends Application
{
    @Override
    public void onCreate()
    {
        try
        {
            Class.forName("android.os.AsyncTask");
        }
        catch(Throwable ignore){}

        super.onCreate();
    }
}

然后,我用android:name="acme.com.myAppName.myApplication"更新了我的AndroidManifest.xml文件以使用myApplication类,如下所示:

代码语言:javascript
复制
<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme"
    android:name="acme.com.myAppName.myApplication" >
...
</application>
票数 5
EN

Stack Overflow用户

发布于 2014-11-28 00:38:34

这里也有同样的问题,自从23/11以来,我在2.x客户端上收到了大约1500个ClassNotFoundException错误,而且有增加的趋势。这个应用程序已经几个月没有更新了,所以我同意你关于google play服务ota更新的假设

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27173375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档