Android Studio中Admob Banner引发应用崩溃问题求助
嘿,我看你这情况大概率是用了已废弃的旧版AdMob SDK导致的崩溃,咱们一步步来把问题解决掉:
1. 替换XML布局里的旧AdView控件
你现在用的com.google.ads.AdView是Google Play Services整合前的旧版AdMob组件,早就被淘汰了,换成当前官方推荐的控件:
修改后的XML布局:
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" xmlns:ads="http://schemas.android.com/apk/res-auto" <!-- 这里改成res-auto命名空间 --> android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.ajater.mj.vaccalc.MainActivity"> <!-- 替换成新版AdView组件 --> <com.google.android.gms.ads.AdView android:id="@+id/adView" android:layout_width="wrap_content" android:layout_height="wrap_content" ads:adSize="BANNER" ads:adUnitId="你的AdUnitID" /> <!-- 填入你在AdMob后台创建的真实ID --> </android.support.design.widget.CoordinatorLayout>
2. 更新MainActivity里的代码
同步替换对应的类引用,适配新版SDK,别忘了添加初始化步骤:
import com.google.android.gms.ads.AdView; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.MobileAds; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 新版AdMob必须先初始化 MobileAds.initialize(this); // 加载Banner广告 AdView adView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder() // 测试阶段建议添加测试设备ID,避免触发AdMob限制 .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) .build(); adView.loadAd(adRequest); }
3. 完善AndroidManifest配置
除了已有的权限,还要在<application>标签内添加AdMob应用ID元数据:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="my.app.name"> <uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> <application> <!-- 添加AdMob应用ID,在AdMob后台获取 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="你的AdMob应用ID"/> <!-- 你的Activity声明... --> </application> </manifest>
4. 确保添加正确的依赖
在你的Module级别build.gradle文件里添加AdMob的最新稳定版依赖:
dependencies { // 其他项目依赖... implementation 'com.google.android.gms:play-services-ads:22.6.0' }
额外注意点
- 确认你的AdUnitID和应用ID都是在AdMob后台正确创建的,并且和应用包名完全匹配
- 测试阶段一定要用测试设备或者手动添加测试设备ID,否则可能会被AdMob限制广告展示
- 检查你的项目minSdkVersion是否符合AdMob SDK要求(当前最低支持API 19)
内容的提问来源于stack exchange,提问作者azater 2000
相关产品推荐
相关产品推荐

