如何在Android Studio 4.2.2中集成AdMob并解决SDK初始化错误
问题根因
你遇到的崩溃和Android Studio版本没有任何关系,完全不需要降级到更老旧的2.2.2版本,你当前使用的4.2.2版本完全支持AdMob集成。
错误的核心原因是没有在AndroidManifest.xml中配置合法的AdMob应用ID,导致MobileAds SDK初始化失败。
修复步骤
- 1、获取AdMob应用ID
从AdMob后台获取对应应用的ID,格式为ca-app-pub-xxxxxxxxxxxxxxxx~xxxxxxxxxx,注意应用ID和你布局中使用的广告单元ID是两个完全不同的配置,不要混淆。
测试阶段可以直接使用官方提供的测试应用ID:ca-app-pub-3940256099942544~3347511713 - 2、添加应用ID到字符串资源
打开res/values/strings.xml,添加如下配置:
<string name="admob_app_id">你的AdMob应用ID</string>
- 3、配置AndroidManifest.xml
在清单文件的<application>标签内部添加如下meta-data节点:
<application ...> <!-- 新增AdMob应用ID配置 --> <meta-data android:name="com.google.android.gms.ads.APPLICATION_ID" android:value="@string/admob_app_id" /> <activity .../> </application>
- 4、(可选优化)主动初始化SDK
建议在加载广告之前先初始化SDK,可以在你当前Activity的onCreate方法中、加载广告之前添加初始化代码,同时修正你代码中重复定义局部变量的问题:
package com.example.javagb_android; import android.os.Bundle; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.ads.AdRequest; import com.google.android.gms.ads.AdView; import com.google.android.gms.ads.MobileAds; public class First_main extends AppCompatActivity { private static final String TAG = "First_main"; private AdView mAdView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.first_main); // 初始化MobileAds MobileAds.initialize(this, initializationStatus -> {}); // 修正重复定义局部变量的问题,直接给全局mAdView赋值 mAdView = findViewById(R.id.adView); AdRequest adRequest = new AdRequest.Builder().build(); mAdView.loadAd(adRequest); } }
测试注意事项
开发测试阶段请使用官方提供的测试广告ID,不要直接使用正式ID请求广告,避免触发AdMob的违规检测导致账号被限制:
- 测试横幅广告单元ID:
ca-app-pub-3940256099942544/6300978111- 测试应用ID:
ca-app-pub-3940256099942544~3347511713
内容的提问来源于stack exchange,提问作者2'71ヅ Danger
相关产品推荐
相关产品推荐

