添加AdMob后应用崩溃,Android Studio新手求助解决方案
Android Studio 7.3.1集成AdMob崩溃+配置问题解决指南
一、关于buildscript和allprojects报错的原因
你用的是AGP 7.3.1(Android Gradle插件),这个版本已经彻底废弃了项目级build.gradle里的buildscript和allprojects代码块——相关配置早就移到settings.gradle里了,硬加肯定报错。
正确的仓库配置方式是在settings.gradle里加dependencyResolutionManagement块,示例:
dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() // 必须加,AdMob依赖在Google仓库 mavenCentral() } } rootProject.name = "你的项目名称" include ':app'
把这个配置好,就不用管原来的buildscript和allprojects了。
二、应用崩溃的核心排查点
你已经加了ads依赖但启动就崩,90%是以下几个细节没做好,挨个查:
1. 漏加AdMob应用ID到Manifest
这是最常见的坑!必须在AndroidManifest.xml的<application>标签内添加你的AdMob应用ID(注意是应用ID,不是广告单元ID):
<meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="ca-app-pub-xxxxxxxxxxxxxxxx~yyyyyyyyyy"/>
这个ID在AdMob后台你的应用详情页能直接复制,没有这个配置,App启动就会触发崩溃。
2. 依赖版本太老,和AGP不兼容
你用的play-services-ads:21.4.0是2022年的老版本,和AGP 7.3.1存在兼容问题,直接升级到最新稳定版(比如当前最新是22.6.0):
// 模块级build.gradle里的依赖改成这个 implementation 'com.google.android.gms:play-services-ads:22.6.0'
3. AdMob初始化时机错误
要在App启动时初始化AdMob,比如自定义一个Application类:
public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); // 初始化AdMob MobileAds.initialize(this, initializationStatus -> {}); } }
然后在AndroidManifest里指定这个类:
<application android:name=".MyApp" ...> ... </application>
没初始化就加载广告,也会崩。
4. 测试设备的Google Play服务版本过低
AdMob依赖Google Play服务运行,如果你的测试机(或模拟器)里的Google Play服务版本太老,直接会崩。去Google Play商店更到最新,模拟器的话在AVD管理器里更新系统镜像。
5. 横幅广告的代码/布局错误
检查你的横幅广告实现:
- 布局里的AdView要设置正确的
adSize和测试用的广告单元ID(别用正式ID测试,容易触发限制):
<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="ca-app-pub-3940256099942544/6300978111"/> <!-- 这是AdMob官方测试ID,放心用 -->
- 加载广告的代码要在主线程执行:
AdView adView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); adView.loadAd(adRequest);
三、排查顺序建议
- 先把settings.gradle的仓库配置改对;
- 升级ads依赖到最新版;
- 补全Manifest里的应用ID和Application初始化;
- 用测试广告ID替换正式ID,验证加载逻辑;
- 检查测试设备的Google Play服务版本。
内容的提问来源于stack exchange,提问作者calpie
相关产品推荐
相关产品推荐

