| Version | Release Date | Notes |
|---|---|---|
| 25.5.0 | 2026‑09‑17 | - Increased the minimum Android API level to 24. - Added `onInitializationFailed()` to `InitializationCompleteCallback`. Mediation adapters now report third-party SDK initialization errors to the Google Mobile Ads SDK with the error code, error domain, and error message. - When using mediation with custom event ad sources, `ResponseInfo.getAdapterClassName()` now returns your custom event class name instead of `com.google.ads.mediation.customevent.CustomEventAdapter`. |
| 25.4.0 | 2026‑06‑17 | - Bug fixes and performance improvements. |
| 25.3.0 | 2026‑05‑21 | - Added the `setAgeRestrictedTreatment()` method in `RequestConfiguration.Builder` and deprecated `setTagForChildDirectedTreatment()` and `setTagForUnderAgeOfConsent()`. Use the new method to configure age-restricted treatment for child and teen users. |
| 25.2.0 | 2026‑04‑13 | - Bug fixes and performance improvements. |
| 25.1.0 | 2026‑03‑16 | - Fixed a bug in [Ad Inspector](https://developers.google.com/ad-manager/mobile-ads-sdk/android/ad-inspector.md.txt) that could cause an error when requesting an out of context test ad with an empty content URL. |
| 25.0.0 | 2026‑02‑17 | > [!WARNING] > This release is a MAJOR version update with several breaking changes. See [Migrate to > SDK v25](https://developers.google.com/ad-manager/mobile-ads-sdk/android/migration.md.txt#migrate-to-v25) for more information on how to migrate. - Breaking changes: - Removed the `VersionInfo` class in the `com.google.android.gms.ads.mediation` package. - Removed the deprecated `getConfiguration()` method in the [`RtbSignalData`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/rtb/RtbSignalData.md.txt) class. - Removed the deprecated methods `onFailure(String)` and `onAdFailedToShow(String)` in the following classes: - [`SignalCallbacks`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/rtb/SignalCallbacks.md.txt) - [`MediationAdLoadCallback`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/MediationAdLoadCallback.md.txt) - [`MediationInterstitialAdCallback`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/MediationInterstitialAdCallback.md.txt) - [`MediationRewardedAdCallback`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/MediationRewardedAdCallback.md.txt) - Removed the `NativeAdViewHolder` class from the `com.google.android.gms.ads.nativead` package. - Removed `MIN_WIDTH_RATIO` and `MIN_HEIGHT_RATIO` from [`MediationUtils`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MediationUtils.md.txt) to support more flexible ad size matching thresholds for mediation ad sizes. - Updated User Messaging Platform SDK dependency to version 4.0.0. - Added support for large anchored adaptive banners. Large anchored adaptive banners are designed to increase engagement and revenue. Request large anchored adaptive banners using the following methods in the [`AdSize`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdSize.md.txt) class: - [`getLargePortraitAnchoredAdaptiveBannerAdSize()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdSize.md.txt#getLargePortraitAnchoredAdaptiveBannerAdSize(android.content.Context,%20int)) - [`getLargeLandscapeAnchoredAdaptiveBannerAdSize()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdSize.md.txt#getLargeLandscapeAnchoredAdaptiveBannerAdSize(android.content.Context,%20int)) - [`getLargeAnchoredAdaptiveBannerAdSize()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdSize.md.txt#getLargeAnchoredAdaptiveBannerAdSize(android.content.Context,%20int)) - The following methods in the [`AdSize`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdSize.md.txt) class are deprecated: - [`getCurrentOrientationAnchoredAdaptiveBannerAdSize(Context, int)`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdSize.md.txt#getCurrentOrientationAnchoredAdaptiveBannerAdSize(android.content.Context,%20int)) - [`getLandscapeAnchoredAdaptiveBannerAdSize(Context, int)`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdSize.md.txt#getLandscapeAnchoredAdaptiveBannerAdSize(android.content.Context,%20int)) - [`getPortraitAnchoredAdaptiveBannerAdSize(Context, int)`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdSize.md.txt#getPortraitAnchoredAdaptiveBannerAdSize(android.content.Context,%20int)) |
| 24.9.0 | 2025‑12‑11 | - Bug fixes and performance improvements. |
| 24.8.0 | 2025‑11‑20 | - Fixed missing translations for SDK resources in versions 24.6.0 and 24.7.0. - Deprecated `NativeAdViewHolder`. Use `NativeAdView` to render native ads instead. - Deprecated the `AdPreloader.getConfigurations()` and `AdPreloader.getConfiguration(preloadId)` methods. There is no replacement for these methods. |
| 24.7.0 | 2025‑10‑09 | - Corrected a missing nullable annotation on the return type for [`NativeCustomFormatAd.getDisplayOpenMeasurement()`](https://developers.google.com/admob/android/reference/com/google/android/gms/ads/nativead/NativeCustomFormatAd.md.txt#getDisplayOpenMeasurement()). Functionality is unchanged, as the method's ability to return null was already expected. - Downgraded `androidx.webkit:webkit` dependency from 1.14.0 to 1.12.1 to maintain compatibility with Android Gradle plugin 7.3.1. |
| 24.6.0 | 2025‑09‑08 | - Native mediation adapters can now implement `NativeAdMapper.destroy()` to get notified when a native ad is destroyed. |
| 24.5.0 | 2025‑07‑24 | - Publishers with access to the feature now have placement ID support for all ad formats. - Fixed a crash with the error message `Fatal Exception: java.util.ConcurrentModificationException`. |
| 24.4.0 | 2025‑06‑09 | - Added several new APIs for ad preloading and deprecated existing ones. Ad preloading remains a limited alpha feature. |
| 24.3.0 | 2025‑05‑19 | - Updated User Messaging Platform SDK dependency to version 3.2.0. |
| 24.2.0 | 2025‑04‑07 | - Bug fixes and performance improvements. |
| 24.1.0 | 2025‑03‑12 | - Minimum Kotlin version is now 2.1.0. - Bug fixes and performance improvements. - The `play-services-ads-lite` is moving to a reduced release cadence, and is not distributed with this release. For more information, see the [Lite SDK](https://developers.google.com/ad-manager/mobile-ads-sdk/android/lite-sdk.md.txt) documentation. |
| 24.0.0 | 2025‑02‑24 | > [!WARNING] > This release is a MAJOR version update with several breaking changes. See [Migrate to > SDK v24](https://developers.google.com/ad-manager/mobile-ads-sdk/android/migration.md.txt#migrate-to-v24) for more information on how to migrate. - Breaking changes: - Increased the minimum Android API level to 23. - The SDK no longer forwards extra parameters passed through [`addNetworkExtrasBundle()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AbstractAdRequestBuilder.md.txt#addNetworkExtrasBundle(java.lang.Class<?%20extends%20com.google.android.gms.ads.mediation.MediationExtrasReceiver>,android.os.Bundle)) to Ad Manager as [Custom targeting](https://support.google.com/admanager/answer/2884033#custom-targeting) parameters. To set custom targeting, use [`addCustomTargeting()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AbstractAdRequestBuilder.md.txt#addCustomTargeting(java.lang.String,%20java.lang.String)) instead. For more information, see [Custom targeting](https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting.md.txt#custom_targeting). - Removed all APIs related to the interscroller ad format. - Removed deprecated `AppOpenAd` orientation APIs. - Removed `SearchAdView` and `DynamicHeightSearchAdRequest` classes. - Updated User Messaging Platform SDK dependency to version 3.1.0. - [Optimize initialization and ad loading](https://developers.google.com/ad-manager/mobile-ads-sdk/android/optimize-initialization.md.txt) is now in general availability, and is enabled by default. - Added `MediationRewardedAdCallback.onUserEarnedReward()` and deprecated `MediationRewardedAdCallback.onUserEarnedReward(RewardItem)`. Mediation adapters should update to use the new method. - Removed the `android.adservices.AD_SERVICES_CONFIG` property tag from the SDK's manifest file to prevent merge conflicts for apps that [Configure API-specific Ad Services](https://developers.google.com/privacy-sandbox/private-advertising/setup/android/setup-api-access#configure-api-specific). |
| 23.6.0 | 2024‑12‑03 | - Deprecated all APIs related to the interscroller ad format. For example, `AdSize.getCurrentOrientationInterscrollerAdSize()`. |
| 23.5.0 | 2024‑10‑29 | - Updated ad load failure logcat messages introduced in 23.4.0 release from error to info level. - Improved monetization of personalized ads in Custom Tabs for WebView API for ads. |
| 23.4.0 | 2024‑09‑30 | - Ad load failures now invoke a logcat message that says `ad failed to load` in the failure's stack trace. The stack trace logs this message as an error, but doesn't imply a crash. Consult [Debug common error logging messages](https://developers.google.com/ad-manager/mobile-ads-sdk/android/ad-load-errors.md.txt#error_logging_messages) to interpret common ad loading failures. If you see a recurring error related to ad serving that's not documented, share the stack trace with [Google Mobile Ads SDK (Legacy) support](https://developers.google.com/admob/support). - Added `addCustomTargeting()` methods to `AdRequest`. |
| 23.3.0 | 2024‑08‑12 | - Updated User Messaging Platform SDK dependency to version 3.0.0. |
| 23.2.0 | 2024‑06‑27 | - Added `AdView.isCollapsible()` to indicate whether the last loaded banner is collapsible. |
| 23.1.0 | 2024‑05‑09 | - Requires a minimum `compileSdkVersion` of 34. - **Native Mediation adapters** : Deprecated `loadNativeAd` and `loadRtbNativeAd()` in favor of [`loadNativeAdMapper()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/Adapter.md.txt#public-void-loadnativeadmapper-mediationnativeadconfiguration-adconfiguration,-mediationadloadcallbacknativeadmapper,-mediationnativeadcallback-callback) and [`loadRtbNativeAdMapper()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/rtb/RtbAdapter.md.txt#public-void-loadrtbnativeadmapper-mediationnativeadconfiguration-adconfiguration,-mediationadloadcallbacknativeadmapper,-mediationnativeadcallback-callback). Adapters should migrate to using these new load methods and related objects. |
| 23.0.0 | 2024‑03‑07 | > [!WARNING] > This release is a MAJOR version update with several breaking changes. See [Migrate to > SDK v23](https://developers.google.com/ad-manager/mobile-ads-sdk/android/migration.md.txt#migrate-to-v23) for more information on how to migrate. - Breaking changes: - Increased the minimum Android API level to 21. - To [continue collecting user metrics in AdMob](https://support.google.com/admob/answer/15273207), link your AdMob app to Firebase and integrate the Google Analytics for Firebase SDK into your app. - Removed the deprecated `MobileAds.enableSameAppKey()` API and updated the alternative method `MobileAds.putPublisherFirstPartyIdEnabled()` to return a boolean about whether the control persistence is successful or not. - `Native Ads`: - Removed `AdLoader.forUnifiedNativeAd()`. Use `AdLoader.forNativeAd()` instead. - Removed `AdLoader.forCustomTemplateAd()`. Use `AdLoader.forCustomFormatAd()` instead. - Removed `AdFormat.UNKNOWN` with no replacement. Apps using `QueryInfo.generate()` must pass an ad format. - `AdManagerAdRequest.Builder` methods inherited from its parent can now be chained together to build an object from a single call. This required a change in the inheritance structure such that `AdManagerAdRequest.Builder` no longer inherits from `AdRequest.Builder`. - Adds [MobileAds.registerCustomTabsSession()](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#registerCustomTabsSession(android.content.Context,%20androidx.browser.customtabs.CustomTabsClient,%20java.lang.String,%20androidx.browser.customtabs.CustomTabsCallback)) to improve monetization for ads in Custom Tabs. See [Optimize Custom Tabs](https://developers.google.com/ad-manager/mobile-ads-sdk/android/webview/custom-tabs) for more information. - Updated User Messaging Platform SDK dependency to version 2.2.0. |
| 22.6.0 | 2023‑12‑06 | - Deprecated `MobileAds.setSameAppKeyEnabled()` and renamed the method to `MobileAds.putPublisherFirstPartyIdEnabled()`. - Deprecated `AdFormat.UNKNOWN` with no replacement. Apps using `QueryInfo.generate()` must pass an ad format. |
| 22.5.0 | 2023‑10‑30 | - Updated User Messaging Platform SDK dependency to version 2.1.0. - Added the `setPublisherPrivacyPersonalizationState()` method for the [Publisher Privacy Treatment API (Beta)](https://support.google.com/admanager/answer/14323214). |
| 22.4.0 | 2023‑09‑13 | - Requires a minimum `compileSdkVersion` of `33`. - **Ad inspector:** Added SDK support for requesting and showing ads requested through Ad Inspector UI. - Added a new `QueryInfo.generate()` method that takes an ad unit ID. - Enables initial testing of the Attribution Reporting Beta and Topics Beta [privacy-preserving APIs](https://developer.android.com/design-for-safety/privacy-sandbox/introduction#privacy-preserving-apis). See the Ad Manager [Privacy Sandbox on Android](https://developers.google.com/ad-manager/mobile-ads-sdk/android/privacy/sandbox.md.txt) guide for more information. |
| 22.3.0 | 2023‑08‑22 | - Added support for creating adaptive sizes using `AdSize.FULL_WIDTH` as the width. Previously, ad sizes created using `AdSize.FULL_WIDTH` would be treated as `AdSize.SMART_BANNER`. |
| 22.2.0 | 2023‑07‑05 | - **Custom events:** - Deprecated `AdRequest.Builder.addCustomEventExtrasBundle()`. [Extend Adapter](https://developers.google.com/ad-manager/mobile-ads-sdk/android/custom-events/setup.md.txt#initialize_the_adapter) and interact with the extra parameters through `AdRequest.Builder.addNetworkExtrasBundle()` instead. - Deprecated `AdRequest.getCustomEventExtrasBundle()`. [Extend Adapter](https://developers.google.com/ad-manager/mobile-ads-sdk/android/custom-events/setup.md.txt#initialize_the_adapter) and interact with the extra parameters through `AdRequest.getNetworkExtrasBundle()` instead. |
| 22.1.0 | 2023‑05‑18 | - **Ad inspector:** Enabled ability to trigger ad requests from the ad inspector UI on devices that don't have Google Play services. |
| 22.0.0 | 2023‑03‑29 | > [!WARNING] > This release is a MAJOR version update with several breaking changes. See [Migrate to > SDK v22](https://developers.google.com/ad-manager/mobile-ads-sdk/android/migration.md.txt#migrate-to-v22) for more information on how to migrate. - Breaking changes: - Removed `NativeCustomFormatAd.getVideoController()` and `NativeCustomFormatAd.getVideoMediaView()` in favor of `NativeCustomFormatAd.getMediaContent()`. - Removed `MobileAds.getVersionString()` in favor of `MobileAds.getVersion()`. - Removed `AdRequest.Builder.setAdInfo()` in favor of `AdRequest.Builder.setAdString()`. - `AdManager.Builder.setAdString()` now returns an `AdRequest.Builder` type. - Removed `MediationRewardedVideoAdAdapter` and associated APIs in favor of `Adapter`. - Added `AdRequest.getRequestAgent()`. - **Mediation:** The return value for `Adapter.getVersionInfo()` and `Adapter.getSDKVersionInfo()` changed from type `com.google.android.gms.ads.mediation.VersionInfo` to `com.google.android.gms.ads.VersionInfo`. We recommend adapters return the new type since `com.google.android.gms.ads.mediation.VersionInfo` is deprecated. |
| 21.5.0 | 2023‑01‑31 | - **App Open Ads:** Deprecated `AppOpenAd.load()` methods that accept an orientation input parameter and added new methods that don't take an orientation input. The new methods determine the orientation at request time, matching the behavior of other full-screen formats. - **Mediation:** Added mediation support for app open ads. - Removed the `RECEIVE_BOOT_COMPLETED` permission from the `androidx.work:work-runtime` dependency. If you're using Gradle versions earlier than 7.2.0 and require permission for your app, you may need to declare permission explicitly in your Android manifest. |
| 21.4.0 | 2022‑12‑14 | - The Ad Manager App ID is now required for all Ad Manager apps and requires the `ca-app-pub-################~##########` format. See [Configure your app](https://developers.google.com/ad-manager/mobile-ads-sdk/android/quick-start.md.txt#import_the_mobile_ads_sdk) for more details. - **Ad inspector:** Extend SDK support for showing banner ads and native ads requested through the ad inspector UI. - Added support for Publisher first-party ID (formerly known as same app key) to help you deliver more relevant and personalized ads by using data collected from your apps. - Official release version for `QueryInfo` generation. |
| 21.3.0 | 2022‑10‑10 | - **Ad inspector:** Added SDK support for requesting and showing ads requested through the ad inspector UI. - **Native Ads:** - Added `getMediaContent()` to `MediaView`. - **Custom Native Ads:** - Added `getMediaContent()` to `NativeCustomFormatAd`. - Deprecated `getVideoMediaView()`. Create your own `MediaView` and use `NativeCustomFormatAd.getMediaContent()` instead. - Deprecated `getVideoController()`. Use `NativeCustomFormatAd.getMediaContent().getVideoController()` instead. |
| 21.2.0 | 2022‑09‑06 | - **Ad inspector:** Added SDK support for exporting ad request logs through Android Sharesheet. |
| 21.1.0 | 2022‑07‑14 | - Added support for ad monetization within `WebView`. See [Integrate the WebView API for ads](https://developers.google.com/ad-manager/mobile-ads-sdk/android/webview) for more details. - Added `getResponseExtras()` to [`ResponseInfo`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/ResponseInfo.md.txt) which may return extra information about the ad response. > [!WARNING] > **Beta:** The `getResponseExtras()` API is in beta. The return value might change without an SDK release. |
| 21.0.0 | 2022‑05‑25 | > [!WARNING] > This release is a MAJOR version update with several breaking changes. See the [Migrate to SDK v21](https://developers.google.com/ad-manager/mobile-ads-sdk/android/migration.md.txt#migrate-to-v21) guide for more information on how to migrate. - Breaking changes: - Google Mobile Ads SDK (Legacy) now requires all apps to be on a minimum Android API level 19 to run. - Added `@NonNull` annotations in every method that previously did not explicitly define nullability. - Removed `AdRequest.Builder.addNetworkExtras()` method. Use `AdRequest.Builder.addNetworkExtrasBundle()` instead. - Removed the following location methods: - `setLocation()` on `AdRequest.Builder` - `getLocation()` on `AdRequest` - `getLocation()` on `MediationAdConfiguration` - Added manifest flags to optimize initialization and ad loading, see [Optimize initialization and ad loading guide](https://developers.google.com/ad-manager/mobile-ads-sdk/android/optimize-initialization.md.txt) for more details. - Deprecated `MobileAds.getVersionString()`. Use [`MobileAds.getVersion()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#getVersion()) instead. - Added the [`getLoadedAdapterResponseInfo()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/ResponseInfo.md.txt#getLoadedAdapterResponseInfo()) method in `ResponseInfo`. - Added the following methods in [`AdapterResponseInfo`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdapterResponseInfo.md.txt): - `getAdSourceName()` - `getAdSourceId()` - `getAdSourceInstanceName()` - `getAdSourceInstanceId()` > [!WARNING] > **Beta:** These APIs are in beta. The return values might change without an SDK release. - Added support for custom events in ad inspector. |
| 20.6.0 | 2022‑02‑22 | - Deprecated all the [custom event interfaces](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/customevent/package-summary.md.txt#interfaces). Use the [`Adapter`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/Adapter.md.txt) class and [`MediationAdLoadCallback`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/MediationAdLoadCallback.md.txt) interface instead. - Added support for the [SharedPreferences](https://developer.android.com/reference/android/content/SharedPreferences) `gad_has_consent_for_cookies`. Google Mobile Ads SDK (Legacy) will enable [limited ads (LTD)](https://support.google.com/admanager/answer/9882911) when the `gad_has_consent_for_cookies` preference is set to 0. See [setting consent for cookies](https://developers.google.com/ad-manager/mobile-ads-sdk/android/global-settings.md.txt#setting_consent_for_cookies) for more details. - Google Mobile Ads SDK (Legacy) will disable transmission of the Android advertising identifier (AAID) when the `RequestConfiguration.Builder.setTagForChildDirectedTreatment()` is called with `TAG_FOR_CHILD_DIRECTED_TREATMENT_TRUE` (see [child-directed setting](https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting.md.txt#child-directed_setting)), or `RequestConfiguration.Builder.setTagForUnderAgeOfConsent()` is called with `TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE` (see [users under the age of consent setting](https://developers.google.com/ad-manager/mobile-ads-sdk/android/targeting.md.txt#users_under_the_age_of_consent)). |
| 20.5.0 | 2021‑11‑18 | - Added support for Android 12 devices for apps targeting API 31. - Added support for [app set ID](https://developer.android.com/training/articles/app-set-id) for use cases such as reporting and fraud prevention. |
| 20.4.0 | 2021‑09‑22 | This release and all previous versions require an explicit dependency on `androidx.work:work-runtime:2.7.0` to fix a bug causing app crashes on Android S with the following stack trace: ``` Fatal Exception: java.lang.IllegalArgumentException: com.mycompany.myapp: Targeting S+ (version 10000 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles. at android.app.PendingIntent.checkFlags(PendingIntent.java:386) at android.app.PendingIntent.getBroadcastAsUser(PendingIntent.java:657) at android.app.PendingIntent.getBroadcast(PendingIntent.java:644) at androidx.work.impl.utils.ForceStopRunnable.getPendingIntent(ForceStopRunnable.java:174) at androidx.work.impl.utils.ForceStopRunnable.isForceStopped(ForceStopRunnable.java:108) at androidx.work.impl.utils.ForceStopRunnable.run(ForceStopRunnable.java:86) at androidx.work.impl.utils.SerialExecutor$Task.run(SerialExecutor.java:75) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:920) ``` To fix this bug, add the following dependencies for Google Mobile Ads SDK (Legacy) to your module's app-level Gradle file: ``` dependencies { implementation 'com.google.android.gms:play-services-ads:20.4.0' // For apps targeting Android 12, add WorkManager dependency. constraints { implementation('androidx.work:work-runtime:2.7.0') { because '''androidx.work:work-runtime:2.1.0 pulled from play-services-ads has a bug using PendingIntent without FLAG_IMMUTABLE or FLAG_MUTABLE and will fail in Apps targeting S+.''' } } } ``` - Starting from version 20.4.0, Google Mobile Ads SDK (Legacy) includes the `com.google.android.gms.permission.AD_ID` permission in the SDK's manifest that is automatically merged into the app manifest by Android build tools. To learn more about the `AD_ID` permission declaration, including how to disable it, refer to [this Play Console Help article](https://support.google.com/googleplay/android-developer/answer/6048248). - Added the [`onAdClicked()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdListener.md.txt#onAdClicked()) callback to `FullScreenContentCallback`. - Enabled the [`onAdClicked()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdListener.md.txt#onAdClicked()) callback in the `AdListener` class for native ads format. |
| 20.3.0 | 2021‑08‑23 | - Deprecated the [`AdRequest.Builder.addNetworkExtras()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#addNetworkExtras(com.google.android.gms.ads.mediation.NetworkExtras)) method. Use [`AdRequest.Builder.addNetworkExtrasBundle()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#public-adrequest.builder-addnetworkextrasbundle-class-extends-mediationextrasreceiver-adapterclass,-bundle-networkextras) instead. - **Native ads** : [`AdLoader.Builder.forCustomFormatAd()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdLoader.Builder.md.txt#forCustomFormatAd(java.lang.String,%20com.google.android.gms.ads.nativead.NativeCustomFormatAd.OnCustomFormatAdLoadedListener,%20com.google.android.gms.ads.nativead.NativeCustomFormatAd.OnCustomClickListener)) now accepts a nullable `OnCustomClickListener`. - **Mediation adapters** : Fixed nullability annotation for the `mediationExtras` parameter in all mediation adapter load calls. |
| 20.2.0 | 2021‑06‑08 | - Added ad inspector (Beta) support for Google Ad Manager publishers. |
| 20.1.0 | 2021‑04‑29 | - **Adaptive Banner** : Added [`AdSize.getInlineAdaptiveBannerAdSize()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdSize.md.txt#getInlineAdaptiveBannerAdSize(int,%20int)) to request inline adaptive banner ads with a maximum height. - Added [`AdError.toString()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdError.md.txt#toString()) for easier logging. |
| 20.0.0 | 2021‑04‑05 | > [!WARNING] > This release is a MAJOR version update with several breaking changes. See the [prepare for SDK v20](https://developers.google.com/ad-manager/mobile-ads-sdk/android/migration.md.txt#migrate-to-v20) guide for more information on how to migrate. - Breaking changes: - Removed legacy `Interstitial` API. - Removed legacy `RewardedVideoAd` API. - Removed classes prefixed with `Publisher` (e.g.: `PublisherAdView`). - Removed `CustomRenderedAd`. - Removed `InstreamAd`. - Removed `SearchAdRequest`. - Removed `AdListener.onAdLeftApplication()`. - Removed `NativeAppInstallAd`, `NativeContentAd`, and `UnifiedNativeAd`. There is now one native ad format named `NativeAd`. - `RewardedAd` is now an abstract class. Use the `RewardedAd.load()` static method to load a rewarded ad. - Deprecated `AdSize.SMART_BANNER` in favor of [adaptive banner ads](https://developers.google.com/ad-manager/mobile-ads-sdk/android/banner/adaptive). - Added explicit nullability annotations on all public APIs. |
| 19.8.0 | 2021‑03‑15 | - Added a dependency on the [User Messaging Platform SDK](https://developers.google.com/ad-manager/mobile-ads-sdk/android/privacy.md.txt). - Added the `onAdImpression()` callback to `FullScreenContentCallback`. - Deprecated the `InstreamAd` format. - **Mediation Adapters:** - Deprecated `MediationBannerAdapter`, `MediationInterstitialAdapter`, and `MediationNativeAdapter`. New adapters should implement the [`Adapter`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/Adapter.md.txt) class to load these formats. **Note:** These deprecated mediation adapter classes won't be removed in version 20.0.0 in order to give mediation adapters time to transition to the new API. - Bidding adapters can now implement distinct load methods in the [`Adapter`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/Adapter.md.txt) class for RTB-specific formats. |
| 19.7.0 | 2021‑01‑20 | - Major changes to: - `InterstitialAd` - `RewardedAd` - `NativeAd` - `AppOpenAd` - Deprecated `CustomRenderedAd`. - Classes and packages with the prefix `Publisher` have been deprecated and replaced with the prefix `AdManager`. - Last minor release before version 20.0.0. All APIs marked as deprecated in this and prior releases will be removed in version 20.0.0. See [version 20.0.0 migration guide](https://developers.google.com/ad-manager/mobile-ads-sdk/android/migration.md.txt#migrate-to-v20) for more details. |
| 19.6.0 | 2020‑12‑04 | - Deprecated the `onAdLeftApplication() AdListener` method. - Fixed a bug where users on Android 11 devices are asked to select a browser when clicking an ad. |
| 19.5.0 | 2020‑10‑20 | - **Banner Ads:** The `onAdImpression() AdListener` method is now called for banner ads. - Added the `setHttpTimeoutMillis()` method to customize the timeout for HTTPS calls made by the Google Mobile Ads SDK. - Added `setNeighboringContentUrls()` and `getNeighboringContentUrls()` to `PublisherAdRequest`. |
| 19.4.0 | 2020‑09‑10 | - Added support for Android 11 devices for apps targeting API 30. - **App Open Ads:** Changed the `AppOpenAd` format to operate more like a full screen format than a banner view. Added `getResponseInfo()` and `show()` methods to `AppOpenAd`. Deprecated `AppOpenAdView` and `AppOpenAdPresentationCallback` classes. - **Mediation:** Mediation status reporting is now available. Use `ResponseInfo.getAdapterResponses()` to get response information for each ad network that participated in an ad request. - **Legacy Rewarded Ads:** Deprecated `RewardedVideoAd`. - Added the `RewardedInterstitialAd` format, in private beta. - Fixed a bug where `MobileAds.initialize()` only calls back completion handler once. Every call to `MobileAds.initialize()` now invokes the completion callback. |
| 19.3.0 | 2020‑07‑20 | > [!CAUTION] > **Caution:** SDK versions 19.3.0 and lower don't support Android 11 (API 30). We recommend using SDK version 19.4.0 or higher if you plan on setting your [`targetSdkVersion`](https://developer.android.com/guide/topics/manifest/uses-sdk-element#target) to API 30. - Added `getDomain()` and `getCause()` methods to `AdError`. - Added new load failure callbacks to all ad formats that return a `LoadAdError`. E.g., `onAdFailedToLoad(LoadAdError)`. - Deprecated load failure callbacks that return an int. E.g., `onAdFailedToLoad(int)`. - **Rewarded Ads:** Added `onRewardedAdFailedToShow(AdError)` and deprecated `onRewardedAdFailedToShow(int)`. - **Rewarded Mediation:** Added the `MEDIATION_SHOW_ERROR` presentation error code. All presentation errors related to mediated ads now return `MEDIATION_SHOW_ERROR` for `AdError.getCode()` and a NonNull `AdError.getCause()` representing the underlying mediation error. |
| 19.2.0 | 2020‑06‑18 | - **Native Ads:** Added Native Ad Validator UI on test requests to help you catch and fix native ads policy violations. - Added the [`MobileAds.disableMediationAdapterInitialization()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#disableMediationAdapterInitialization()) method. Call this method prior to initializing Google Mobile Ads SDK (Legacy) to disable mediation adapter initialization. > [!WARNING] > **Warning:** Calling this method may negatively impact your Google mediation performance. This method should only be called if you include Google mediation adapters in your app but aren't mediating through Google during a particular app session (for example, you're running an A/B mediation test). |
| 19.1.0 | 2020‑04‑16 | - Deprecated [`MobileAds.initialize(Context, String)`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#initialize(android.content.Context,%20java.lang.String)) in favor of [`MobileAds.initialize(Context, OnInitializationCompleteListener)`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#initialize(android.content.Context,%20com.google.android.gms.ads.initialization.OnInitializationCompleteListener)). - `AdRequest.isTestDevice()` now returns `true` for test devices set through `MobileAds.setRequestConfiguration()`. - Fixed NullPointerException crash in `MobileAds.initialize()` that occurred on some devices on apps using the [Lite SDK](https://developers.google.com/ad-manager/mobile-ads-sdk/android/lite-sdk.md.txt). |
| 19.0.1 | 2020‑03‑18 | - **Native Ads:** Fixed memory leak that occurred when using `NativeCustomTemplateAd`. |
| 19.0.0 | 2020‑03‑02 | - > [!WARNING] > This release is a MAJOR version update with the following breaking changes: > - Updated minimum Android SDK version to API 16 to align with the [Google Play services distribution policy](https://android-developers.googleblog.com/2018/12/google-play-services-discontinuing.html). > - **Native Ads:** Moved `MediaContent` to the `com.google.android.gms.ads` package. - Added support for reading consent parameters from IAB TCF v2.0 and the IAB `us_privacy` string. - Added `setNeighboringContentUrls()` and `getNeighboringContentUrls()` to `AdRequest`. - Added the `ResponseInfo` class which provides information about a loaded ad. - For all ad formats, deprecated `getMediationAdapterClassName()` in favor of `getResponseInfo()`. - **Native Ads:** Added `getDuration()` and `getCurrentTime()` methods to `MediaContent`. - **Native Mediation:** Added `getDuration()` and `getCurrentTime()` methods to `UnifiedNativeAdMapper` for adapters to implement. - Deprecated [`AdRequest.Builder.addTestDevice()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#addTestDevice(java.lang.String)). Use [`RequestConfiguration.Builder.setTestDeviceIds()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/RequestConfiguration.Builder.md.txt#setTestDeviceIds(java.util.List%3Cjava.lang.String%3E)) instead. |
| 18.3.0 | 2019‑11‑05 | - Added APIs for the `InstreamAd` ad format. This feature is in private beta. Reach out to your account manager to request access. - **Adaptive Banner** : Changed adaptive banner creation methods in the [`AdSize`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdSize.md.txt) class. For example, renamed `AdSize.getCurrentOrientationBannerAdSizeWithWidth()` to `AdSize.getCurrentOrientationAnchoredAdaptiveBannerAdSize()`. - **Mediation** : Google Mobile Ads SDK (Legacy) now catches exceptions thrown by mediation adapters. - **Rewarded Mediation**: Fixed a bug where if multiple mediated rewarded ads are cached, only one would show. - Added the [`setTestDeviceIds()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/RequestConfiguration.Builder.md.txt#setTestDeviceIds(java.util.List<java.lang.String>)) method to enable setting test devices once for all ad requests. |
| 18.2.0 | 2019‑08‑29 | - Added APIs for the [`AppOpenAd`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/appopen/AppOpenAd.md.txt) format. This feature is in private beta. Reach out to your account manager to request access. |
| 18.1.1 | 2019‑07‑23 | - **Mediation** : Adapters are now initialized when apps call [`MobileAds.initialize(Context, OnInitializationCompleteListener)`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#initialize(android.content.Context,%20com.google.android.gms.ads.initialization.OnInitializationCompleteListener)). - **Mediation** : Adapter exceptions whose stack traces include Google Mobile Ads SDK (Legacy) are now caught and handled by the Google Mobile Ads SDK (Legacy). |
| 18.1.0 | 2019‑07‑09 | - Official release for App Measurement support. - Added a new initialization method, [`MobileAds.initialize(Context, OnInitializationCompleteListener)`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#initialize(android.content.Context,%20com.google.android.gms.ads.initialization.OnInitializationCompleteListener)), that notifies you when Google Mobile Ads SDK (Legacy) and all configured mediation adapters have completed initialization. - Added [`MobileAds.getInitializationStatus()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#getInitializationStatus()) to provide initialization status of all ad networks configured for your app. - Added [`MobileAds.getRequestConfiguration()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#getRequestConfiguration()). Targeting parameters set on this configuration object are used for all ad requests. - **Native ads** : Added the [`NativeAdOptions.Builder.setMediaAspectRatio()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/formats/NativeAdOptions.Builder.md.txt#setMediaAspectRatio(int)) method to request a specific aspect ratio for a native ad's media asset. This option takes precedence over the now deprecated [`setImageOrientation()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/formats/NativeAdOptions.Builder.md.txt#setImageOrientation(int)) method. - **Native ads** : For non-video ads, the MediaView's image scale type can now be set using [`MediaView.setImageScaleType()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/formats/MediaView.md.txt#setImageScaleType(android.widget.ImageView.ScaleType)). - **Native ads** : Added `UnifiedNativeAd.getMediaContent()`. Publishers who only load images using URLs can now get the ad's media content, supply an image to it, and call [`MediaView.setMediaContent()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/formats/MediaView.md.txt#setMediaContent(com.google.android.gms.ads.formats.UnifiedNativeAd.MediaContent)) to populate image data through `MediaView` for non-video ads. - **Native ads**: Added APIs to enable Open Measurement support for non-video custom native ad formats. - **Native ads Mediation** : Adapters can now provide aspect ratio using [`UnifiedNativeAdMapper.setMediaContentAspectRatio()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/UnifiedNativeAdMapper.md.txt#setMediaContentAspectRatio(float)). - Removed the `Correlator` class and its associated APIs. This feature was previously non-functional. - Added dependencies on `play-services-measurement` and `play-services-measurement-sdk`. Apps no longer need to add these dependencies explicitly. |
| 18.0.0 | 2019‑06‑17 | - Migration from Android Support Libraries to Jetpack (AndroidX) Libraries. Refer to the [Google Play services release notes](https://developers.google.com/android/guides/releases.md.txt#june_17_2019) for more information. - To avoid a crash that occurs on first launch after app install from the play store, this release requires publishers to declare additional dependencies in their build.gradle: ``` com.google.android.gms:play-services-measurement:17.0.0 com.google.android.gms:play-services-measurement-sdk:17.0.0 ``` **Note:** This release is a MAJOR version update and breaking change. |
| 17.2.1 | 2019‑05‑21 | - Fix for ANR originating at `android.media.AudioManager.getStreamVolume`. |
| 17.2.0 | 2019‑03‑11 | - **Rewarded Video:** Added a new set of rewarded APIs (see the [rewarded](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/rewarded/package-summary.md.txt) package) that enable you to load multiple rewarded ads concurrently. - **Mediation:** Added a new set of mediation adapter APIs that support initialization. Adapters implementing the new API implement the [`Adapter`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/Adapter.md.txt) class. - Publishers using `firebase-analytics` along with version `17.2.0` of any of the ads library (e.g., `com.google.android.gms:play-services-ads:17.2.0`) must use `com.google.firebase:firebase-analytics:16.3.0`. |
| 17.1.3 | 2019‑01‑31 | - Publishers using `firebase-analytics` along with version `17.1.3` of any of the ads library (e.g., `com.google.android.gms:play-services-ads:17.1.3`) must use `com.google.firebase:firebase-analytics:16.3.0`. |
| 17.1.2 | 2018‑12‑03 | - Publishers using `firebase-analytics` along with version `17.1.2` of any of the ads library (e.g., `com.google.android.gms:play-services-ads:17.1.2`) must use `com.google.firebase:firebase-analytics:16.0.6`. |
| 17.1.1 | 2018‑11‑12 | - Fixed a bug where certain combinations of `play-services-ads` \& `firebase-analytics` (e.g., `ads:17.1.0` \& `analytics:16.0.5`) resulted in a `duplicate entry` compiler error. Publishers using `firebase-analytics` along with version `17.1.1` of any of the ads library (e.g., `com.google.android.gms:play-services-ads:17.1.1`) must use `com.google.firebase:firebase-analytics:16.0.5`. |
| 17.1.0 | 2018‑11‑02 | - Added the [`setMaxAdContentRating()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#setMaxAdContentRating(java.lang.String)) and [`setTagForUnderAgeOfConsent()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#setTagForUnderAgeOfConsent(int)) methods to [`AdRequest.Builder`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt). - Added the following constants to use with [`AdRequest.Builder.setMaxAdContentRating()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#setMaxAdContentRating(java.lang.String)) and [`AdRequest.Builder.setTagForUnderAgeOfConsent()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#setTagForUnderAgeOfConsent(int)): - `MAX_AD_CONTENT_RATING_G` - `MAX_AD_CONTENT_RATING_PG` - `MAX_AD_CONTENT_RATING_T` - `MAX_AD_CONTENT_RATING_MA` - `TAG_FOR_UNDER_AGE_OF_CONSENT_FALSE` - `TAG_FOR_UNDER_AGE_OF_CONSENT_TRUE` - `TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED` |
| 17.0.0 | 2018‑10‑05 | - Google Ad Manager publishers are required to specify a `<meta-data>` tag with key `com.google.android.gms.ads.AD_MANAGER_APP` in their AndroidManifest.xml. Refer to the [Get Started guide](https://developers.google.com/ad-manager/mobile-ads-sdk/android/quick-start.md.txt#update_your_androidmanifestxml) for more details. - **Native ads:** `NativeAppInstallAd`, `NativeContentAd`, and associated APIs are deprecated in favor of `UnifiedNativeAd`. Refer to [Native Ads Advanced Unified](https://developers.google.com/ad-manager/mobile-ads-sdk/android/native.md.txt) for further instructions on using the new APIs. - **Native ads:** Added the "Mute this Ad" feature. - **Native ads:** The benign warning log: "UnconfirmedClickListener must not be null while ClickConfirmingView is set." has been removed. - **Rewarded Ads:** Added the `setAdMetadataListener` method on `RewardedVideoAd` to listen for ad metadata changes. - **Rewarded ads:** Calling `destroy()` will null out the listener. - Deprecated the following methods on [`AdRequest.Builder`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt). - [`setGender()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#setGender(int)) - [`setBirthday()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#setBirthday(java.util.Date)) - [`setIsDesignedForFamiles()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#setIsDesignedForFamilies(boolean)) - Fixed a bug where `onRewardedVideoCompleted()` wasn't firing on emulators. |
| 16.0.0 | 2018‑10‑02 | - No ads changes. Refer to Google play services [release notes](https://developers.google.com/android/guides/releases.md.txt#october_2nd_2018) for more information. |
| 15.0.0 | 2018‑04‑12 | - MRAID v3 beta version. - **Native ads:** Added the Unified Native Ad API. This combines `NativeAppInstallAds` and `NativeContentAds` into one new type: `UnifiedNativeAd`. - **Note:** When using native ads, there is a benign warning that shows up in the logs when the native ad is clicked: "*UnconfirmedClickListener must not be null while ClickConfirmingView is set.*" This warning can be ignored, and it will be removed in the next release. |
| 12.0.1 | 2018‑03‑28 | - No ads changes. See the Google play services [release notes](https://developers.google.com/android/guides/releases.md.txt#march_28_2018_-_version_1201) for more details. |
| 12.0.0 | 2018‑03‑20 | - Rewarded video: Added the `onRewardedVideoCompleted()` callback method to `RewardedVideoAdListener`. To avoid a compilation error when updating to version 12.0.0, apps need to override this callback in their `RewardedVideoAdListener` implementation. - Native mediation: Added the `trackViews()` method to `NativeAdMapper`, giving adapters access to `View` objects corresponding to individual native ad assets. Deprecated `trackView()` in favor of `trackViews()`. |
| 11.8.0 | 2017‑12‑18 | - Bug fixes and general improvements. |
| 11.6.0 | 2017‑11‑07 | - Added the `NativeAdViewHolder` class and related methods in `NativeAppInstallAd` and `NativeContentAd`. - Deprecated `AdLoader.getMediationAdapterClassName` (publishers should instead use the methods of the same name in `NativeAppInstallAd` and `NativeContentAd`). - Test ads now show a label on top of the ad. See the [testing guide](https://developers.google.com/ad-manager/mobile-ads-sdk/android/test-ads.md.txt) for more details. |
| 11.4.0 | 2017‑09‑19 | - Added `getMediationAdapterClassName()` methods to the `NativeAppInstallAd` and `NativeContentAd` classes. The method of the same name in `AdLoader` will be deprecated. - Added an [`onVideoEnd()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/MediationNativeListener.md.txt#onVideoEnd(com.google.android.gms.ads.mediation.MediationNativeAdapter)) method to the [`MediationNativeListener`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/MediationNativeListener.md.txt) class, `hasVideoContent()`, `setHasVideoContent()`, and `setMediaView()` methods to the `NativeAdMapper` class, and [`getAdVolume()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/NativeMediationAdRequest.md.txt#getAdVolume()) and [`isAdMuted()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/NativeMediationAdRequest.md.txt#isAdMuted()) methods to the [`NativeMediationAdRequest`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/NativeMediationAdRequest.md.txt) class to support native video mediation. - Removed the `SearchAdRequest` class. |
| 11.2.2 | 2017‑09‑05 | - Added a new `loadAd()` method that takes in a `PublisherAdRequest` object to the `RewardedVideoAd` class. |
| 11.2.0 | 2017‑08‑14 | - Added the [`loadAds()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdLoader#loadAds(com.google.android.gms.ads.AdRequest, int)) method to the `AdLoader` class, which allows apps to load multiple unique ads in a single request. - When you upgrade your app to version 11.2.0 or higher of the Google Mobile Ads SDK, your app's `build.gradle` must also be updated to specify a `compileSdkVersion` of at least `26` (Android O). This does not change the way your app runs. You won't be required to update `targetSdkVersion`. - Beginning with version 11.2.0, Google Mobile Ads SDK (Legacy) is available via Google's Maven repository. For more information, see the Google Play services [release notes](https://developers.google.com/android/guides/releases.md.txt). |
| 11.0.0 | 2017‑06‑07 | - Added the [`onAdClicked()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdListener.md.txt#onAdClicked()) and [`onAdImpression()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdListener.md.txt#onAdImpression()) methods to the [`AdListener`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdListener.md.txt) class. These methods are only invoked for native app install and native content ads. - Removed the `getInAppPurchaseListener()` and `setInAppPurchaseListener()` methods from the [`AdView`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdView.md.txt), [`InterstitialAd`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/interstitial/InterstitialAd.md.txt), and `NativeExpressAdView` classes. Also removed related in-app purchase classes. - Added the [`OnVideoMute()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/VideoController.VideoLifecycleCallbacks.md.txt#onVideoMute(boolean)), [`OnVideoPause()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/VideoController.VideoLifecycleCallbacks.md.txt#onVideoPause()), [`OnVideoPlay()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/VideoController.VideoLifecycleCallbacks.md.txt#onVideoPlay()) and [`OnVideoStart()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/VideoController.VideoLifecycleCallbacks.md.txt#onVideoStart()) methods to the [`VideoController.VideoLifecycleCallbacks`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/VideoController.VideoLifecycleCallbacks.md.txt) class. - Added the ability to enable immersive mode on full-screen ads by adding the `setImmersiveMode()` method to the `PublisherInterstitialAd` and `RewardedVideoAd` classes. - Added the `OnPublisherAdViewLoadedListener` interface, `PublisherAdViewOptions` class, and `PublisherAdViewOptions.Builder` class for use with [`AdLoader`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdLoader.md.txt) for native-plus-banner requests. - Added the optional [`OnImmersiveModeUpdatedListener`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/OnImmersiveModeUpdatedListener.md.txt) interface that mediation adapters can implement to be informed of immersive mode updates. - Added the `getMediationAdapterClassName()` method to the `RewardedVideoAd` class. - Added `keep` rules to automatically preserve mediation adapter class names when using [ProGuard](https://developer.android.com/studio/build/shrink-code). |
| 10.2.0 | 2017‑2‑15 | - Google Play services 10.2.x is the first release that no longer includes full support for Android version 2.3.x (Gingerbread). Apps developed using SDK release 10.2.x and later require a minimum Android API level of 14 and cannot be installed on devices that run an API level lower than 14. To learn more about your options, including building multiple APKs to extend your app's support for Android Gingerbread, see the [Android Developers Blog](https://android-developers.blogspot.com/). - Added support for video assets for Native Advanced content and custom template ads. - Added the `getVideoController()`, `setVideoOptions()`, and `getVideoOptions()` methods to the `PublisherAdView` class. - Added the `AdChoicesView` class. - Added the `getAdChoicesContent()` and `setAdChoicesContent()` methods to the `NativeAdMapper` class. - Added the `InitializableMediationRewardedVideoAdAdapter` interface for rewarded video mediation adapters that want to opt in to early initialization before an ad request is made. - Added support for in-app preview and troubleshooting in Google Ad Manager. |
| 10.0.1 | 2016‑11‑21 | - Bug fixes and general improvements. |
| 9.8.0 | 2016‑10‑24 | - [`MobileAds.Initialize(Context)`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#initialize(android.content.Context)) has been un-deprecated. Google Ad Manager publishers should call this method when initializing their apps. AdMob publishers should still use `MobileAds.Initialize(Context, String)` and pass their application code. |
| 9.6.0 | 2016‑09‑22 | - Added the [`MediaView`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/formats/MediaView.md.txt) class for Native Ads Advanced video ads. - Added an [`openDebugMenu()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds#openDebugMenu(android.content.Context, java.lang.String)) method to the [`MobileAds`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt) class for creative preview and troubleshooting of Ad Manager ad units. - Added support for rewarded video custom events. |
| 9.4.0 | 2016‑08‑01 | - Bug fixes and general improvements. |
| 9.2.0 | 2016‑06‑27 | - Added the [`setAdChoicesPlacement()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/formats/NativeAdOptions.Builder.md.txt#setAdChoicesPlacement(int)) method to the [`NativeAdOptions.Builder`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/formats/NativeAdOptions.Builder.md.txt) class, which app publishers can now use to specify the location of their `AdChoices` in native ads. - Video ad playback has been improved with several bug fixes. |
| 9.0.1 | 2016‑05‑26 | - Resolves a ProGuard issue introduced in 9.0.0. Publishers no longer need a `keep` option for `com.google.android.gms.common.util.DynamiteApi`. |
| 9.0.0 | 2016‑05‑18 | - Added auto-population of location information for apps that explicitly grant the location permission. - Added support for Rewarded Video mediation custom events. - Added video options for Native Express ads. - Updated Custom Search Ads API. - Added [`setAppMuted()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#setAppMuted(boolean)) method. - The [`MobileAds.initialize(android.content.Context, java.lang.String)`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#initialize(android.content.Context)) method is no longer deprecated. - The [`MobileAds.initialize(android.content.Context)`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#initialize(android.content.Context)) method is now deprecated. - Added the [`MediationNativeListener.onAdImpression()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/mediation/MediationNativeListener.md.txt#onAdImpression(com.google.android.gms.ads.mediation.MediationNativeAdapter)) method for reporting impressions in mediation adapters. - **For this release only** , apps that use ProGuard to post-process their application need to add the following `keep` option to their ProGuard configuration file: `-keep public @com.google.android.gms.common.util.DynamiteApi class * { *; }` |
| 8.4.0 | 2015‑12‑18 | - Added a public method, [`MobileAds.setAppVolume()`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/MobileAds.md.txt#setAppVolume(float)), to inform Google Mobile Ads SDK (Legacy) of an app's current volume level. - Implemented bug fixes and improvements. |
| 8.3.0 | 2015‑11‑6 | - Added support for rewarded video ads. - Added an `isLoading()` method to `PublisherAdView` and `PublisherInterstitialAd` to check if an ad request is in progress. - Added the `setIsDesignedForFamilies()` method to [`AdRequest.Builder`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt#setIsDesignedForFamilies(boolean)) and `PublisherAdRequest.Builder`. - Added a `destroy()` method to `NativeAdView`. |
| 8.1.0 | 2015‑09‑24 | Various bug fixes. |
| 7.8.0 | 2015‑08‑13 | - MRAID v2 official release version. - Added an `isLoading()` method to [`AdLoader`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdLoader.md.txt#isLoading()), [`AdView`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdView.md.txt#isLoading()), and [`InterstitialAd`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/interstitial/InterstitialAd.md.txt#isLoading()) to check if an ad request is in progress. - Deprecated `PublisherAdRequest.Builder#setManualImpressionsEnabled()`. Use `PublisherAdView#setManualImpressionsEnabled()` instead. |
| 7.5.0 | 2015‑05‑28 | - Added support for app install and content native ad formats across AdMob and Ad Manager. - Added support for custom native ad formats, available for Ad Manager reservations. |
| 7.3.0 | 2015‑04‑28 | Various bug fixes. |
| 7.0.0 | 2015‑03‑19 | - Added `addCustomTargeting()` and `addCategoryExclusion()` methods to `PublisherAdRequest.Builder`. - Fixed an issue causing `PublisherAdView.recordManualImpression()` to record multiple impressions in Ad Manager when using manual impression counting. - Fixed an issue causing ads to render improperly when using the [`android:largestWidthLimitDp`](https://developer.android.com/guide/topics/manifest/supports-screens-element#largestWidth) attribute on the [`<supports-screens>`](https://developer.android.com/guide/topics/manifest/supports-screens-element) tag. - Added the `setRequestAgent()` method to [`AdRequest.Builder`](https://developers.google.com/ad-manager/mobile-ads-sdk/android/reference/com/google/android/gms/ads/AdRequest.Builder.md.txt) and `PublisherAdRequest.Builder`. This method should be used to denote ad request origins by third parties that mediate to Google Mobile Ads SDK (Legacy). |
| 6.5.87 | 2014‑12‑08 | - Introduced split JAR architecture--Android Studio developers can now just include the ads portion of Google Play services by depending on `com.google.android.gms:play‑services‑ads:6.+`. **Note:** Apps that create banner ads in XML must still reference the entire library `com.google.android.gms:play‑services:6.+`. - Various bug fixes. |
| 6.1 | 2014‑10‑08 | - Added a `getLocation()` method to `com.google.android.gms.ads.MediationAdRequest`. - Added a content description to the interstitial close button for accessibility. - Removed logging of "Google Play resources not found" when the library project is linked correctly. - Added `getMediationAdapterClassName()` to `AdView` to get the class name of the ad network mediation adapter showing an ad. |
| 17.0.0 | 2018‑10‑05 | - Added new APIs to implement Custom Events. - Added default purchase flow for In-App Purchase, using the Google Play Billing API. |
| 4.4 | 2014‑05‑07 | - Added new Mediation Adapter APIs. - Added new 320x100 `LARGE_BANNER` ad format for both phones and tablets. - Added new interstitial format for In-App Purchase. Set an `InAppPurchaseListener` on `InterstitialAd` to listen for in-app purchase events. - Bug fix for `SecurityException` crash due to reading gservices without permission. |
| 4.3 | 2014‑03‑17 | - `InterstitialAd` now functions if passed an application context. - Added the `setContentUrl()` method to `PublisherAdRequest.Builder`. - Fix for exception when *Service not registered*. |
| 4.2 | 2014‑02‑03 | Various bug fixes. |
| 4.1 | 2014‑01‑16 | - Added support for Ad Manager and Search Ads for Mobile Apps. - `AdRequest.Builder` now has a `setLocation()` method. - Fixed a crash that occurred if an interstitial ad was requested but `AdActivity` wasn't specified in the manifest. |
| 4.0 | 2013‑10‑31 | - Google Mobile Ads APIs are now part of [Google Play services](https://developers.google.com/android/guides/setup.md.txt). - Future updates to the Google Mobile Ads APIs get automatically pushed to devices through Google Play services. - Ad Manager and Search Ads for Mobile Apps not yet supported. |