Android:致命异常:AdWorker#1 java.lang.NoSuchMethodError:java.io.IOException。<;初始化>;

Android:致命异常:AdWorker#1 java.lang.NoSuchMethodError:java.io.IOException。<;初始化>;,android,admob,Android,Admob,从几个星期以来,我收到了以下来自用户的崩溃报告 FATAL EXCEPTION: AdWorker #1 java.lang.NoSuchMethodError: java.io.IOException.<init> at com.google.android.gms.internal.g.f(Unknown Source) at com.google.android.gms.internal.g.b(Unknown Source) at com.google.android.gms

从几个星期以来,我收到了以下来自用户的崩溃报告

FATAL EXCEPTION: AdWorker #1
java.lang.NoSuchMethodError: java.io.IOException.<init>
at com.google.android.gms.internal.g.f(Unknown Source)
at com.google.android.gms.internal.g.b(Unknown Source)
at com.google.android.gms.internal.e.a(Unknown Source)
at com.google.android.gms.internal.e.a(Unknown Source)
at com.google.android.gms.internal.bq.ac(Unknown Source)
at com.google.android.gms.internal.cg$1.run(Unknown Source)
at com.google.android.gms.internal.ch$1.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
at java.lang.Thread.run(Thread.java:1096)
奇怪的是,它只发生在10英寸以上的设备上。我在各种不同的设备/版本上进行了测试。该问题仅出现在10英寸或更大的设备上。Android版本并不重要。2.2或4.4它不断崩溃

据我所知,对于特定的设备尺寸,我没有任何不同的布局文件夹。 定义我的广告的xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:id="@+id/mainContainer"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:orientation="vertical" >

    <LinearLayout
        android:id="@+id/titleContainer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
    </LinearLayout>

    <com.viewpagerindicator.TabPageIndicator
        android:id="@+id/indicator"
        style="@style/tabsbackground"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <LinearLayout
        android:id="@+id/adViewContainer"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:orientation="horizontal" >

        <com.google.android.gms.ads.AdView
            xmlns:ads="http://schemas.android.com/apk/res-auto"
            android:id="@+id/adView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            ads:adUnitId="@string/adid"
            ads:adSize="SMART_BANNER"
            android:gravity="bottom"
            />
    </LinearLayout>

</LinearLayout>

我尝试了不同尺寸的横幅。没用。删除广告请求代码解决了问题,但也删除了广告。
有人知道吗?

谷歌移动广告现在通过谷歌播放服务4.0提供,出现此错误是因为谷歌播放服务不可用。你很可能会在Froyo上遇到这个问题,在Froyo上可以使用一个特殊的版本

注:Google Play services 4.0.30(2013年11月发布)及更新版本 版本要求Android 2.3或更高版本。如果你的应用程序支持Android 2.2,您可以继续使用Google Play services SDK进行开发,但必须从SDK安装Google Play services for Froyo 经理

http://android-developers.blogspot.no/2013/10/google-play-services-40.html

超过97%的设备现在运行Android 2.3(姜饼)或 更新的平台版本,我们正在从这个平台上放弃对Froyo的支持 发布Google Play services SDK以使其成为可能 将来提供更强大的API。这意味着你不会 能够在运行Android 2.2(Froyo)的设备上使用这些新API

重要提示:因为很难预测每个设备的状态, 您必须始终检查是否有兼容的Google Play services APK 您可以访问Google Play服务功能。对于许多应用程序来说,这是最好的时机 在主活动的onResume()方法期间进行检查

Alernative 1是在使用AdView之前检查Google Play服务是否可用

int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext();
if(status == ConnectionResult.SUCCESS) {
    //Success! Do what you want
}

Alernative 2将使用GoogleedMobaDSDK-6.4.1.jar

我对这个错误的体验似乎与Google Play服务不可用无关。 LogCat转储:

06-12 15:22:17.238:E/AndroidRuntime(5389):致命异常:AdWorker#1

06-12 15:22:17.238:E/AndroidRuntime(5389):java.lang.NoSuchMethodError:java.io.IOException

06-12 15:22:17.238:E/AndroidRuntime(5389):在com.google.android.gms.internal.k.f(未知来源)


表示它是AdWorker中使用的缺少的方法;虽然我没有得到任何屏幕截图,但我能够使用调试器逐步完成错误部分,并且AdWorker似乎正在使用String.isEmpty(),它仅适用于API-9及其后版本;因此,我在使用三星S1 API-8测试手机时崩溃。

您是否尝试过为adview设置layout\u width以包装内容?是的,刚刚尝试过。仍然不工作。我有完全相同的错误,不是针对10英寸设备,而是针对Froyo设备…如果AdView不在ViewPager中,是否会发生这种情况?是的,我尝试了最小型的设置。它仍在崩溃。我想我知道问题是什么。这是因为新的Google Play服务不支持2.2及更低版本。Froyo有一个特殊的Google Play服务。但我找不到一种方法把它们结合起来。现在,我只需检查用户的API级别,如果API为,则切换f ads
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext();
if(status == ConnectionResult.SUCCESS) {
    //Success! Do what you want
}