[英]Admob 6.4.1 - Error inflating class com.google.ads.AdView
[英]Google AdMob AdView is always blank
我正在尝试让AdMob广告在Android应用中运行,但无论我尝试什么,AdView似乎总是空白,无论它是测试广告还是我想要展示的真实广告以及它是否显示在虚拟设备或物理设备。
我现在已经创建了一个空白项目,并试图直接复制Google Tutorial ,但没有运气。 我仍在使用教程中的示例ID,但使用自己的ID时结果仍然相同。
我将以下内容添加到我的项目级build.gradle中:
allprojects {
repositories {
google()
jcenter()
}
}
我在我的应用程序级build.gradle上收到错误但我找不到有关导致它的原因或如何修复它的信息。 关于我发现的唯一信息是告诉Android工作室停止报告错误的一行。 我的应用程序级别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编写任何东西,这是阻止我的最后一个问题。
确保您已在app level build.gradle
文件中将admob gradle依赖项添加到项目中。 这可以通过两种方式完成,可以通过直接添加播放服务广告
implementation 'com.google.firebase:firebase-ads:18.2.0'
或者如果您已经通过添加firebase-ads库使用(或计划使用)firebase。
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版开始,您需要在项目的AndroidManifest.xml
文件中添加Admob ApplicationId。
<application
...>
<!-- meta data -->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="@string/cAppId" />
</application>
最后一步是在使用Admob.initialize()
方法启动app的某个地方初始化项目中的admob。 在我看到的例子中,这也是适用的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.