Admob测试广告未显示。

3
这是我的第一个安卓应用程序,我正在尝试在我的应用程序中使用AdMob广告,但尽管我已经做了所有的工作,它仍然无法正常工作。
这些是与广告相关的活动代码。
     protected void onCreate(Bundle savedInstanceState) {
........

    LinearLayout rootLayout = (LinearLayout) findViewById(R.id.ForViewAd);

    AdView adView = new AdView(this);
    adView.setAdSize(AdSize.SMART_BANNER);
   //i've gotten the test ad id by first setting this as 'abc'
   //and then reading off the logcat
    adView.setAdUnitId("XXXXXXXXX");

    rootLayout.addView(adView, 0);

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

以下是我的XML代码。
     <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout   
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     .......

     <LinearLayout
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:layout_centerHorizontal="true"
     android:orientation="horizontal" >


     <com.google.ads.AdView 
                android:id="@+id/ForViewAd"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 /> 
     </LinearLayout>
    </RelativeLayout>

在模拟器上运行应用程序时,logcat读出的结果是非常奇怪和令人困惑的。
      09-28 15:28:21.076: E/Trace(968): error opening trace file: No such file or directory (2)
       09-28 15:28:21.120: W/GooglePlayServicesUtil(968): Google Play services is missing.
       09-28 15:28:21.140: I/Ads(968): Starting ad request.
       09-28 15:28:21.140: I/Ads(968): 
       Use AdRequest.Builder.addTestDevice ("XXXXXXXXX") to get test ads on this device.
       09-28 15:28:21.200: D/dalvikvm(968): DexOpt: --- BEGIN 'ads326198251.jar' (bootstrap=0) ---
       09-28 15:28:21.216: D/dalvikvm(968): GC_CONCURRENT freed 155K, 3% free 10994K/11271K, paused 19ms+11ms, total 36ms
       09-28 15:28:21.324: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x519 dp.
       09-28 15:28:21.340: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x499 dp.
       09-28 15:28:21.356: D/libEGL(968): loaded /system/lib/egl/libEGL_emulation.so
       09-28 15:28:21.372: D/(968): HostConnection::get() New Host Connection established 0xb975ff68, tid 968
       09-28 15:28:21.380: D/libEGL(968): loaded /system/lib/egl/libGLESv1_CM_emulation.so
       09-28 15:28:21.380: D/libEGL(968): loaded /system/lib/egl/libGLESv2_emulation.so
       09-28 15:28:21.432: W/EGL_emulation(968): eglSurfaceAttrib not implemented
       09-28 15:28:21.448: D/OpenGLRenderer(968): Enabling debug mode 0
       09-28 15:28:21.476: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb95468e0): name, size, mSize = 1, 1048576, 1048576
       09-28 15:28:21.532: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb953e248): name, size, mSize = 2, 9216, 1057792
       09-28 15:28:21.572: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb954fcb8): name, size, mSize = 4, 36864, 1094656
       09-28 15:28:21.576: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb976f528): name, size, mSize = 5, 16384, 1111040
       09-28 15:28:21.576: D/dalvikvm(968): DexOpt: --- END 'ads326198251.jar' (success) ---
       09-28 15:28:21.576: D/dalvikvm(968): DEX prep  '/data/data/com.example.testapp/cache/ads326198251.jar': unzip in 0ms, rewrite 375ms
       09-28 15:28:21.704: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb954edf8): name, size, mSize = 8, 16384, 1127424
       09-28 15:28:21.704: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb955e380): name, size, mSize = 9, 4096, 1131520
       09-28 15:28:21.776: D/dalvikvm(968): GC_CONCURRENT freed 214K, 4% free 11181K/11527K, paused 14ms+1ms, total 22ms
       09-28 15:28:21.780: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x519 dp.
       09-28 15:28:21.788: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x499 dp.
       09-28 15:28:22.040: W/Ads(968): Invalid unknown request error: [Cannot determine request type. Is your ad unit id correct?]
       09-28 15:28:22.048: W/Ads(968): There was a problem getting an ad response. ErrorCode: 1
       09-28 15:28:22.060: W/Ads(968): Failed to load ad: 1
       09-28 15:38:01.600: D/dalvikvm(968): GC_CONCURRENT freed 398K, 5% free 11181K/11719K, paused 10ms+1ms, total 18ms
      09-28 15:38:01.604: D/webviewglue(968): nativeDestroy view: 0xb97947e8
      09-28 15:38:01.608: D/webviewglue(968): nativeDestroy view: 0xb97da500

如您所见,日志记录中至少显示了3个错误。首先,Google Play服务已导入到项目中。我可以在Android私有库文件夹中看到它(但不在libs文件夹中)。
还有一个错误,说空间不足,但我已将相对布局的左右填充设置为0sp。所以应该在宽度方面有足够的空间?
最后,错误代码1或“无效未知请求错误”?我不理解那个。
除了日志记录和广告未在活动中显示外,该应用程序正常运行,没有问题。
请问有人能告诉我我做错了什么吗?
以下是建议后的日志记录。
    09-29 17:31:47.290: D/jdwp(1025): Got wake-up signal, bailing out of select
    09-29 17:31:47.290: D/dalvikvm(1025): Debugger has detached; object registry had 1 entries
    09-29 17:31:47.302: W/GooglePlayServicesUtil(968): Google Play services is missing.
    09-29 17:31:47.302: I/AndroidRuntime(1025): NOTE: attach of thread 'Binder_3' failed
    09-29 17:31:47.318: I/Ads(968): Starting ad request.
    09-29 17:31:47.318: I/Ads(968): Use AdRequest.Builder.addTestDevice("XXXXXX") to get test ads on this device.
    09-29 17:31:47.418: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x519 dp.
    09-29 17:31:47.422: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x499 dp.
    09-29 17:31:47.446: W/EGL_emulation(968): eglSurfaceAttrib not implemented
    09-29 17:31:47.454: D/OpenGLRenderer(968): TextureCache::get: create texture(0xb820e8e0): name, size, mSize = 38, 1048576, 1131520
    09-29 17:31:47.526: I/ActivityManager(324): Displayed com.example.testapp/com.example.testapp.MainActivity: +249ms
    09-29 17:31:47.530: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x519 dp.
    09-29 17:31:47.530: W/Ads(968): Not enough space to show ad. Needs 360x50 dp, but only has 340x499 dp.
    09-29 17:31:47.606: W/Ads(968): Invalid unknown request error: [Cannot determine request type. Is your ad unit id correct?]
    09-29 17:31:47.610: W/Ads(968): There was a problem getting an ad response. ErrorCode: 1
    09-29 17:31:47.610: W/Ads(968): Failed to load ad: 1
    09-29 17:31:47.622: D/dalvikvm(968): GC_CONCURRENT freed 256K, 4% free 11580K/11975K, paused 1ms+1ms, total 15ms
    09-29 17:31:47.622: D/webviewglue(968): nativeDestroy view: 0xb85bfb60

提供的解决方案有效吗? - Nana Ghartey
异常与展示广告的空间有关。请检查该行代码:“没有足够的空间来显示广告。需要360x50 dp,但只有340x519 dp。” - Nana Ghartey
广告是否在实际设备上显示?当您将模拟器的方向更改为横向时会发生什么? - Nana Ghartey
广告根本没有显示。我还没有尝试横向,因为我已经将我的应用锁定在纵向方向上。 - user65163
我有一个可能很傻的问题。在 setadunit(xxx) 中的值 xxx 和 test device(xxx) 中的值是相同的吗? - user65163
显示剩余7条评论
3个回答

6

智能横幅广告存在问题

//没有足够的空间来显示广告。需要360x50 dp

横幅广告正常运行,

我解决了这个问题...

从布局中删除广告并将其放在根布局中,删除根布局的边距

<RelativeLayout>
  <LinearLayout>
   </LinearLayout>
  <layout>
   </layout>
 //here
 <com.google.android.gms.ads.AdView />
 </RelativeLayout>

“去除根布局的边距”对我有用。谢谢。 - Ponmalar

0

你没有正确添加测试设备ID,我在日志中找到了你的设备ID并更新了代码。

AdRequest adRequest = new AdRequest.Builder()
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice("5C2521D171291728A381823D5ACC9B8D")
        .build();
    adView.loadAd(adRequest);

接下来,在您的布局文件中,只需要以下内容就足够了,因为您的Java代码正在设置广告单元ID、测试设备ID和广告尺寸。您可以将其放在Java代码或布局文件中。
<com.google.ads.AdView 
                android:id="@+id/ForViewAd"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"/>

包括谷歌官方页面以获取更多信息 https://developers.google.com/mobile-ads-sdk/docs/admob/android/quick-start

刚刚尝试了你建议的修复方法。不幸的是,似乎相似的错误仍然存在。我已经使用你的方法更新了以上的日志。 - user65163

0

补充@Ranjith的答案,由于您正在通过Google Play服务使用admob,因此应按以下方式修改布局:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout   
 xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:ads="http://schemas.android.com/apk/res-auto"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 .......

 <LinearLayout
 android:layout_width="match_parent"
 android:layout_height="wrap_content"
 android:layout_alignParentBottom="true"
 android:layout_centerHorizontal="true"
 android:orientation="horizontal" >

您可以按照官方指南迁移从旧版AdMob到新版AdMob

顺便提一下,未来请不要在互联网上发布您的正确广告单元ID。我已经将其屏蔽了。


抱歉,我会从现在开始屏蔽广告单元ID。 - user65163

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接