java - Google AdMob AdView 始终为空

标签 java android admob

我正在尝试让 AdMob 广告在 Android 应用中正常运行,但无论我如何尝试,AdView 似乎总是空白,无论它是我要展示的测试广告还是真实广告,也无论它是否正在显示显示在虚拟设备或物理设备上。

我现在创建了一个空白项目并尝试复制 Google Tutorial直接还是没有运气。我仍然使用教程中的示例 ID,但使用我自己的 ID 时结果仍然相同。

我已将以下内容添加到我的项目级别 build.gradle 中:

allprojects {
repositories {
    google()
    jcenter()
    
    }
}

我在应用程序级别 build.gradle 上遇到错误,但我找不到有关导致该错误的原因或如何修复该错误的信息。我发现的唯一信息是一行告诉 Android studio 停止报告错误。我的应用程序级别 build.gradle 中有以下内容:

dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.google.android.gms:play-services-ads:17.2.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}

错误发生在第二个“实现”行,错误是:

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 28.0.0, 26.1.0. Examples include com.android.support:animated-vector-drawable:28.0.0 and com.android.support:customtabs:26.1.0

除此之外,代码中似乎没有任何其他错误。

我已将 AdView 添加到 Activity_main.xml,如下所示:

    <com.google.android.gms.ads.AdView
        xmlns:ads="http://schemas.android.com/apk/res-auto"
        android:id="@+id/adView"
        android:layout_width="1000px"
        android:layout_height="500px"
        android:layout_centerHorizontal="true"
        android:layout_alignParentBottom="true"
        ads:adSize="BANNER"
        ads:adUnitId="ca-app-pub-3940256099942544~3347511713">
    </com.google.android.gms.ads.AdView>

我还改用relativelayout,因为这就是教程中使用的。

然后我使用以下 Java 来(希望)请求广告。

    package com.jakecharman.myapplication;

    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import com.google.android.gms.ads.MobileAds;
    import com.google.android.gms.ads.AdRequest;
    import com.google.android.gms.ads.AdView;
    
    public class MainActivity extends AppCompatActivity {
    
        private AdView mAdView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            // Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
            MobileAds.initialize(this, "ca-app-pub-3940256099942544~3347511713");
            mAdView = findViewById(R.id.adView);
            AdRequest adRequest = new 
            mAdView.loadAd(adRequest);
        }
    }

当我在虚拟设备上运行应用程序时,它按预期运行,但 AdView 不可见。我在日志中收到一些错误,但我在网上找不到任何有用的信息:

E/Ads: Google Mobile Ads SDK initialization functionality unavailable for this session. Ad requests can be made at any time.
I/Ads: This request is sent from a test device.

I/Ads: Ad failed to load : 0
W/cr_ChildProcessConn: onServiceDisconnected (crash or killed by oom): pid=15347

我还得到:

W/Ads: Invoke Firebase method getInstance error.
W/Ads: The Google Mobile Ads SDK will not integrate with Firebase. Admob/Firebase integration requires the latest Firebase SDK jar, but Firebase SDK is either missing or out of date

但据我了解,这没问题,因为我没有尝试使用 Firebase?

对此的任何帮助将不胜感激,这是我第一次正确尝试为 Android 编写任何内容,这是阻碍我的最后一个问题。

最佳答案

确保您已将 admob gradle 依赖项添加到应用级别的项目 build.gradle文件。这可以通过两种方式完成,要么 by adding play-services-ads directly

implementation 'com.google.firebase:firebase-ads:18.2.0'

或者如果您已经在使用(或计划使用)firebase by adding firebase-ads library .

implementation 'com.google.android.gms:play-services-ads:18.2.0'

使用 play-services-ads 的好处是minSdkVersion是 14 而 firebase-ads实现需要minSdkVersion共 16 个。

为了解决这些依赖关系,您还需要添加 google()存储库到您的项目级别 build.gradle文件。我在您的示例代码中看到您所做的,所以我不会在这里重复该部分。

从这些库的版本 17.0.0 开始,您需要将 Admob ApplicationId 添加到 AndroidManifest.xml您的项目的文件。

<application
      ...>
     <!-- meta data -->
     <meta-data
         android:name="com.google.android.gms.ads.APPLICATION_ID"
         android:value="@string/cAppId" /> 
</application>

最后一步,在应用程序启动时使用 Admob.initialize() 初始化项目中的 admob方法。我看到你的例子中也有这种情况。

关于java - Google AdMob AdView 始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56149186/

相关文章:

java - 在 IntelliJ 中创建存储库时,在 .gitignore 中包含什么是安全的

android - Firebase 通知在后台不工作

android - 添加新环境时,IBM Worklight Android 的复选框始终处于禁用状态

android - AdMob 广告是否需要 Java 代码?

java - 获取 "Whitelabel Error Page"运行执行器健康状况和映射 url

java - 为 Undertow embedded 设置默认编码

java - 代号 One android 构建失败

.net - 调用 .net webservice 时出现问题?

java - 来自 Admob 的 Android list 错误

ios - google admob ios编译错误: library not found for -lfacebook_ios_sdk