Google Play广告无法使用android 4.4(必需的xml属性广告:缺少adSize)

时间:2014-09-08 17:43:45

标签: android google-play admob

我的应用程序正在使用android 4.2并在几天前使用Admob x.x.x.jar文件。 我刚刚配置了android sdk 4.4,我注意到谷歌播放广告不再有效,也发现它应该升级,所以我做了以下内容:

在我的XML之前:

<com.google.android.gms.ads.AdView
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:layout_gravity="center"
            ads:adSize="BANNER"
            ads:adUnitId="asdadadasddas"
            />

今天我更新了

<com.google.android.gms.ads.AdView android:id="@+id/adView"
             xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
                       android:layout_width="match_parent"
                       android:layout_height="wrap_content"
                       ads:adUnitId="asdadadasddas"
                       ads:adSize="BANNER"
                       />

我的清单

 <activity
            android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
        <meta-data android:name="com.google.android.gms.version"
           android:value="@integer/google_play_services_version"/>

values =&gt; Integer.xml

<integer name="google_play_services_version">5089034</integer>

它给了我以下错误 enter image description here

注意:我没有使用任何java代码来显示它是否必要?

任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:1)

我很欣赏所有开发人员的答案,实际上我通过结合所有答案解决了这个问题,所以我想在这里输入可能有助于其他人的步骤。

XML布局:

 <com.google.android.gms.ads.AdView 
            xmlns:ads="http://schemas.android.com/apk/res-auto"
            android:id="@+id/adView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            ads:adUnitId="ca-app-pub-***" 
            ads:adSize="BANNER"
                       />

我的代码中有两个错误: 1)xmlns:广告价值错误&amp;这个错误由​​ donfuxx 指出 2)我使用的是以下格式的旧AdUnitId:a15220c7a5f3775,但在最新的AdMob中,其格式与上例中使用的格式完全不同。

注意: 如果您使用旧的“广告:adUnitId”,则会显示空白广告,我就是这种情况。

<强> Javacode 还需要Java代码

AdRequest adRequest = new AdRequest.Builder()
        .build();
        AdView adView = (AdView) view.findViewById(R.id.adView);
        adView.loadAd(adRequest);

然后我又发现了另一个错误: 虽然我在我的应用程序中导入了Google Play项目,但找不到类。 然后我发现了一篇文章,其中提到了在你的“libs”文件夹中复制Google Play Jar,它会自动包含在你的Android私有库中以解决这个问题。

最终问题 无需在应用程序内部的integer.xml中放置值,因为当您在应用程序中包含Google Play服务项目时,它将自动从您的清单文件中选择版本值。

因此,这些是我在迁移adMob时遇到的问题,并将帮助其他人快速实施。

答案 1 :(得分:0)

您不应再在布局中设置adUnitId / adSize。而是做:

adView = new AdView(this);
adView.setAdSize(AdSize.SMART_BANNER);
adView.setAdUnitId(AD_UNIT_ID);

布局:

<com.google.android.gms.ads.AdView 
    android:id="@+id/adView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
/>

最后,

AdRequest adRequest = new AdRequest.Builder()
.addTestDevice("XXXXXXXXXXXXXXXXXXXX")
.build();
adView.loadAd(adRequest);

答案 2 :(得分:0)

您仍然可以使用ads:adSize xml属性!

但是,您的xml命名空间设置在adview元素中是错误的,因为它引用了传统的admob:

xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"

但由于您已经使用了google play admob,因此您应该使用:

xmlns:ads="http://schemas.android.com/apk/res-auto"

这就是无法识别ads:属性的原因。

更多信息请参阅official admob migration guide