Google Mobile Ads SDK 在 Android 应用中的首次接入:添加依赖、配置 App ID、初始化并验证
【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills
这篇文章面向在 Android 应用项目中第一次接入 Google Mobile Ads(GMA)Next-Gen SDK 的开发者:在项目中添加ads-mobile-sdk依赖、传入 AdMob App ID、完成 SDK 初始化,并用构建验证集成结果。步骤依据 skills 仓库中的 google-mobile-ads-get-started 技能 及其 Android 快速开始参考文档。文档明确给出的环境要求:minSdk24+、compileSdk34+。
准备条件
- 一个可以用 Gradle 构建的 Android 应用工程。
- 满足文档要求的 SDK 级别:
minSdk24+、compileSdk34+。 - 如果项目此前集成过旧版 SDK
com.google.android.gms:play-services-ads,仓库提供了对应的迁移技能 google-mobile-ads-android-migrate-to-next-gen;本文只覆盖全新接入的路径。
添加 ads-mobile-sdk 依赖
文档要求在 app 级依赖中加入com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk的最新稳定版:
dependencies { implementation "com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:<VERSION>" }<VERSION>需替换为最新稳定版版本号。文档说明:如果无法直接访问 Maven,可以运行下面这条命令获取最新版本号。该命令拉取 SDK 的maven-metadata.xml并提取<latest>标签中的版本号,只发起只读网络请求、输出版本号:
curl -sS https://dl.google.com/dl/android/maven2/com/google/android/libraries/ads/mobile/sdk/ads-mobile-sdk/maven-metadata.xml | sed -n 's/.*<latest>\(.*\)<\/latest>.*/\1/p'依赖声明之外,文档还要求两件事:
- 在 app 级构建文件中,从所有依赖中全局排除
play-services-ads和play-services-ads-lite。文档给出的理由是避免 duplicate symbol errors(重复符号错误)。 - 继续下一步之前,先 Sync Gradle。
配置 App ID
GMA Next-Gen SDK 的 App ID 是编程式传入的:把applicationId参数传给InitializationConfig.Builder。文档给出的示例 AdMob App ID 如下:
InitializationConfig.Builder("ca-app-pub-3940256099942544~3347511713").build()文档明确提醒:发布前必须把这个示例 ID 替换为你自己的真实 AdMob App ID。
仓库的集成检查文档 application-id.md 给出了 Android App ID 的格式约束,可以在接入后用来核对:
- 需要查找的键名:
InitializationConfig.Builder中的applicationId; - App ID 必须匹配正则
^(ca-app-pub-[a-zA-Z0-9\-]+)~(.*)$,不匹配则检查失败; - 同一个平台或构建目标上配置了多个 App ID、且没有通过 flavor 或环境隔离时,检查同样失败;
- 如果使用的 App ID 是官方测试 App ID,检查会给出 Warning。
注意一处文档间差异:检查文档列出的 AdMob 官方测试 ID 是ca-app-pub-3940256099942544~1458002511(Ad Manager 为ca-app-pub-9939518381636264~1458516390),而快速开始文档给出的示例 ID 是ca-app-pub-3940256099942544~3347511713。两个文档没有解释差异,本文按快速开始文档的示例 ID 演示接入,两处来源都已标注,发布前无论用哪个 ID 都要换成真实 App ID。
初始化 SDK
文档给出的初始化所需 import 和方法签名:
import com.google.android.libraries.ads.mobile.sdk.MobileAds import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig import com.google.android.libraries.ads.mobile.sdk.initialization.InitializationStatus import com.google.android.libraries.ads.mobile.sdk.initialization.OnAdapterInitializationCompleteListenerfun initialize( context: Context, initializationConfig: InitializationConfig, listener: OnAdapterInitializationCompleteListener? ): Unit监听器是单方法接口:
fun interface OnAdapterInitializationCompleteListener { fun onAdapterInitializationComplete(status: InitializationStatus): Unit }组合起来,初始化调用为:
// 文档给出的示例 AdMob App ID;发布前必须替换为真实 AdMob App ID val initializationConfig = InitializationConfig.Builder("ca-app-pub-3940256099942544~3347511713").build() MobileAds.initialize( context, // 应用提供的 Context,对应文档签名中的 context 参数 initializationConfig, OnAdapterInitializationCompleteListener { status -> // 在回调中根据返回的 InitializationStatus 记录初始化结果 } )围绕初始化,文档给出了两条硬性约束:
- 快速开始文档要求 SDK必须在后台线程上初始化(ALWAYS initialize on a background thread)。
- 迁移文档 google-mobile-ads-android-migrate-to-next-gen 对 Next-Gen SDK 的通用行为补充了两点:
MobileAds.initialize()必须先于其他任何 SDK 方法调用;所有 GMA SDK 回调都在后台线程触发,回调中涉及 UI 的操作(Toast、View 更新、Fragment 事务等)必须包在runOnUiThread {}或Dispatchers.Main.launch {}中,文档称跳过这一步会导致应用崩溃。
验证集成
文档给出的验证方式是执行构建:
gradle build -x test- 成功条件:构建成功(successful clean build)。如果出现 GMA SDK 相关的编译错误,需要先解决它们。
- 构建之外,可以按检查文档的格式标准核对 App ID:确认
InitializationConfig.Builder中存在applicationId、其值匹配^(ca-app-pub-[a-zA-Z0-9\-]+)~(.*)$。这是文档列出的全部验证项。
接入完成之后
快速开始技能的工作流说明:SDK 安装成功后,下一步是选择一个广告格式(ad format)继续集成。仓库为各格式提供了独立技能,可按需阅读:
- Banner:google-mobile-ads-banner
- Interstitial:google-mobile-ads-interstitial
- Rewarded:google-mobile-ads-rewarded
在发布前,记得把文中所有出现示例 App IDca-app-pub-3940256099942544~3347511713的位置替换为你自己的 AdMob App ID。
【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考