Migrate to GMA Next-Gen SDK

This page covers the instructions to initialize GMA Next-Gen SDK.

Before you begin

To use GMA Next-Gen SDK, you must either integrate without mediation or use AdMob as the mediation platform. The other mediation platforms are not compatible with GMA Next-Gen SDK.

Configure your build for GMA Next-Gen SDK

The following sections show you the necessary steps to configure GMA Next-Gen SDK.

Include GMA Next-Gen SDK dependency

The GMA Next-Gen SDK requires a different Gradle dependency. In your app-level build file, remove the reference to the Google Mobile Ads SDK (Legacy) dependency and include the new artifact.

Gradle dependencies
Google Mobile Ads SDK (Legacy)

Kotlin

dependencies{
// ...
implementation("com.google.android.gms:play-services-ads:25.4.0")
}

Groovy

dependencies{
// ...
implementation'com.google.android.gms:play-services-ads:25.4.0'
}
GMA Next-Gen SDK

Kotlin

dependencies{
// ...
// Comment out/remove play-services-ads.
// implementation("com.google.android.gms:play-services-ads:25.4.0")
implementation("com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.4.0")
}

Groovy

dependencies{
// ...
// Comment out/remove play-services-ads.
// implementation 'com.google.android.gms:play-services-ads:25.4.0'
implementation'com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.4.0'
}

Exclude com.google.android.gms modules in mediation integrations

Mediation adapters continue to depend on Google Mobile Ads SDK (Legacy). However, GMA Next-Gen SDK includes all classes required by mediation adapters. To avoid compile errors related to duplicate symbols, you need to exclude Google Mobile Ads SDK (Legacy) from being pulled in as a dependency by mediation adapters.

In your app-level build file, exclude both play-services-ads and play-services-ads-lite modules globally from all dependencies.

Kotlin

configurations.configureEach{
exclude(group="com.google.android.gms",module="play-services-ads")
exclude(group="com.google.android.gms",module="play-services-ads-lite")
}

Groovy

configurations.configureEach{
excludegroup:"com.google.android.gms",module:"play-services-ads"
excludegroup:"com.google.android.gms",module:"play-services-ads-lite"
}

Set the minimum and compile Android API levels

GMA Next-Gen SDK requires a minimum Android API level of 24 and a compile Android API level of 34. Adjust the minSdk and compileSdk values in your app-level build file to 24 or higher and 34 or higher, respectively.

Initialize GMA Next-Gen SDK

GMA Next-Gen SDK requires initialization before loading ads, a change from Google Mobile Ads SDK (Legacy) where initialization is optional but recommended. Update your code if you weren't previously initializing the SDK before loading ads.

This section covers the differences in SDK initialization implementation between Google Mobile Ads SDK (Legacy) and GMA Next-Gen SDK.

Set the AdMob app ID

The following examples set the AdMob app ID in Google Mobile Ads SDK (Legacy) and GMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

Integration requires a <meta-data> tag with android:name="com.google.android.gms.ads.APPLICATION_ID" containing your AdMob app ID within your app's AndroidManifest.xml file.

<manifest>
<application>
<!--SampleAdMobappID:ca-app-pub-3940256099942544~3347511713-->
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="SAMPLE_APP_ID"/>
</application>
</manifest>
GMA Next-Gen SDK

Provide your AdMob app ID programmatically as part of SDK initialization.

Kotlin

// Initialize the Google Mobile Ads SDK.
valinitConfig=InitializationConfig.Builder("SAMPLE_APP_ID").build()
MobileAds.initialize(this@MainActivity,initConfig){}

Java

// Initialize GMA Next-Gen SDK.
InitializationConfiginitConfig=
newInitializationConfig.Builder("SAMPLE_APP_ID").build();
MobileAds.initialize(this,initConfig,initializationStatus->{});

Review implementation changes

The following examples initialize Google Mobile Ads SDK (Legacy) and GMA Next-Gen SDK:

Google Mobile Ads SDK (Legacy)

Call MobileAds.initialize() to initialize the Google Mobile Ads SDK. Initialization on a background thread is recommended to reduce ANRs.

Kotlin

importcom.google.android.gms.ads.MobileAds
importkotlinx.coroutines.CoroutineScope
importkotlinx.coroutines.Dispatchers
importkotlinx.coroutines.launch
classMainActivity:AppCompatActivity(){
overridefunonCreate(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
valbackgroundScope=CoroutineScope(Dispatchers.IO)
backgroundScope.launch{
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(this@MainActivity){}
}
}
}

Java

importcom.google.android.gms.ads.MobileAds;
importcom.google.android.gms.ads.initialization.InitializationStatus;
importcom.google.android.gms.ads.initialization.OnInitializationCompleteListener;
publicclass MainActivityextendsAppCompatActivity{
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newThread(
()->{
// Initialize the Google Mobile Ads SDK on a background thread.
MobileAds.initialize(this,initializationStatus->{});
})
.start();
}
}
GMA Next-Gen SDK

Call MobileAds.initialize() to initialize GMA Next-Gen SDK. This must be called on a background thread, failure to do so may cause an "Application Not Responding" (ANR) error.

Kotlin

importcom.google.android.libraries.ads.mobile.sdk.MobileAds
importcom.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig
importkotlinx.coroutines.CoroutineScope
importkotlinx.coroutines.Dispatchers
importkotlinx.coroutines.launch
classMainActivity:AppCompatActivity(){
overridefunonCreate(savedInstanceState:Bundle?){
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
valbackgroundScope=CoroutineScope(Dispatchers.IO)
backgroundScope.launch{
// Initialize GMA Next-Gen SDK on a background thread.
MobileAds.initialize(
this@MainActivity,
// Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
InitializationConfig.Builder("SAMPLE_APP_ID").build()
){
// Adapter initialization is complete.
}
// SDK initialization is complete. If you don't want to wait for bidding adapters to finish
// initializing, start loading ads now.
}
}
}

Java

importcom.google.android.libraries.ads.mobile.sdk.MobileAds;
importcom.google.android.libraries.ads.mobile.sdk.initialization.InitializationConfig;
publicclass MainActivityextendsAppCompatActivity{
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
newThread(
()->{
// Initialize GMA Next-Gen SDK on a background thread.
MobileAds.initialize(
this,
// Sample AdMob app ID: ca-app-pub-3940256099942544~3347511713
newInitializationConfig.Builder("SAMPLE_APP_ID")
.build(),
initializationStatus->{
// Adapter initialization is complete.
});
// SDK initialization is complete. If you don't want to wait for bidding adapters to
// finish initializing, start loading ads now.
})
.start();
}
}

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026年09月01日 UTC.