AI 도구로 이전하기 (베타)

Android 스튜디오의 Gemini를 사용하여 Google Mobile Ads SDK에서 GMA Next-Gen SDK로의 이전을 최적화하려면 프로젝트에서 AGENTS.md 파일을 사용하세요. 프로젝트에 AGENTS.md 파일을 추가하면 Gemini에 GMA Next-Gen SDK와 관련된 컨텍스트를 제공하고 AI 지원 코드 생성의 출력을 개선할 수 있습니다. 자세한 내용은 파일을 사용하여 Gemini 맞춤설정을 참고하세요.AGENTS.md

이 가이드에서는 Google Mobile Ads SDK에서 GMA Next-Gen SDK로 이전하는 데 도움이 되도록 Android 스튜디오의 Gemini를 최적화하는 방법을 설명합니다.

시작하기 전에

계속하기 전에 다음을 수행하세요.

프로젝트에 AGENTS.md 파일 추가

Google은 이전 단계를 지원하기 위해 Gemini의 안내가 포함된 AGENTS.md 파일을 제공합니다.

AI 코드 지원에서 GMA Next-Gen SDK와 관련된 안내를 사용하려면 다음 단계를 따르세요.

  1. 프로젝트의 파일 시스템에서 원하는 위치에 AGENTS.md라는 새 파일을 만듭니다.

  2. AGENTS.md 파일에 다음 안내를 추가합니다.

# AI Migration Agent Instructions for the Google Mobile Ads SDK

## Migrate to the GMA Next-Gen SDK

* When I ask to migrate to the "Next-Gen" SDK, **ALWAYS** look up the latest
  stable version for
  `com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk`.
* Make sure the project meets the SDK requirements of `minSdk` 24 or higher
  and `compileSdk` of 35 or higher.
* Replace the `com.google.android.gms:play-services-ads` dependency with the
  Next-Gen `com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk`
  dependency.
* Resolve each `com.google.android.gms.ads.*` class to its specific
  counterpart in `com.google.android.libraries.ads.mobile.sdk.*`.
    * If the change involves the
      `com.google.android.gms.ads.mediation.Adapter` class, ask me if I'm
      sure I want to migrate this class before making the change.
* **Important:** Make sure `MobileAds.initialize` is called **before** any
  other SDK methods (e.g., `MobileAds.getVersion()`,
  `MobileAds.openAdInspector()`). Move any such calls to the initialization
  callback or after initialization is complete.
* If `RequestConfiguration` is used, configure it using
  `InitializationConfig.Builder.setRequestConfiguration()` and pass the
  config to `MobileAds.initialize()`. Do not call
  `MobileAds.setRequestConfiguration()` separately before initialization.
* **ALWAYS** use the value of the `com.google.android.gms.ads.APPLICATION_ID`
  meta-data tag from `AndroidManifest.xml` for `applicationId`. If you can't
  find it, ask me what the AdMob application ID is.
* **CRITICAL:** **Always** dispatch UI-related operations (e.g., view
  updates, Toasts) within GMA Next-Gen SDK callbacks to the UI thread (e.g.,
  using `runOnUiThread` or `Main` dispatcher). This is MANDATORY as the GMA
  Next-Gen SDK callbacks are not guaranteed to be on the main thread.
* Preserve the `com.google.android.gms.ads.APPLICATION_ID` `<meta-data>` tag
  in the `AndroidManifest.xml` file.
* Run a build/compile check. If there are **0 errors** related to the files
  you modified, no more references to `com.google.android.gms.ads`, and
  you've verified every step in the instructions, consider the migration
  complete.

### Banner ads

* Declare the preferred
  `com.google.android.libraries.ads.mobile.sdk.banner.AdView` class to load
  a "Next-Gen" banner ad instead of the deprecated `BannerAd` APIs.

### API mapping

This table covers the main classes and their GMA Next-Gen SDK equivalents.

| Feature                    | Old SDK Import (`com.google.android.gms.ads...`)                                     | GMA Next-Gen SDK Import (`com.google.android.libraries.ads.mobile.sdk...` )                                                                                                           |
|:---------------------------|:-------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Core**                   |                                                                                      |                                                                                                                                                                                       |
| Initialization             | `MobileAds`                                                                          | `MobileAds`, `initialization.InitializationConfig`                                                                                                                                    |
| Ad Request                 | `AdRequest`                                                                          | *Format specific* (e.g. `common.AdRequest`, `banner.BannerAdRequest`, `nativead.NativeAdRequest`) (Ad Unit ID is declared in `Builder`. Load() no longer takes an activity)           |
| Load Error                 | `LoadAdError`                                                                        | `common.LoadAdError` (`LoadAdError` no longer has a domain variable)                                                                                                                  |
| Full Screen Show Error     | `AdError` (within `FullScreenContentCallback`)                                       | `common.FullScreenContentError` (within format-specific `AdEventCallback`)                                                                                                            |
| Request Configuration      | `RequestConfiguration`                                                               | `common.RequestConfiguration`                                                                                                                                                         |
| Event Callbacks            | `FullScreenContentCallback` (for full screen formats), `AdListener` (Banner, Native) | *Format Specific* (e.g., `interstitial.InterstitialAdEventCallback`, `banner.BannerAdEventCallback`, `native.NativeAdEventCallback`). Variable on the ad format is `adEventCallback`. |
| **Tools**                  |                                                                                      |                                                                                                                                                                                       |
| Ad Inspector               | `MobileAds.openAdInspector()`                                                        | `MobileAds.openAdInspector()` (`openAdInspector` no longer takes an activity)                                                                                                         |
| Ad Inspector Listener      | `OnAdInspectorClosedListener`                                                        | `common.OnAdInspectorClosedListener`                                                                                                                                                  |
| **Formats**                |                                                                                      |                                                                                                                                                                                       |
| App Open                   | `appopen.AppOpenAd`                                                                  | `appopen.AppOpenAd`                                                                                                                                                                   |
| App Open Load              | `appopen.AppOpenAd.AppOpenAdLoadCallback`                                            | `common.AdLoadCallback<appopen.AppOpenAd>`                                                                                                                                            |
| Banner                     | `AdView`, `AdSize`                                                                   | `banner.AdView`, `banner.AdSize` (`AdView` no longer has `pause()`, `resume()`, `setAdSize()`). `AdSize` is declared in `BannerAdRequest`.                                            |
| Banner Load                | `AdListener`                                                                         | `common.AdLoadCallback<banner.BannerAd>`                                                                                                                                              |
| Banner Events              | `AdListener`                                                                         | `banner.BannerAdEventCallback`, `banner.BannerAdRefreshCallback`                                                                                                                      |
| Interstitial               | `interstitial.InterstitialAd`                                                        | `interstitial.InterstitialAd`                                                                                                                                                         |
| Interstitial Load          | `interstitial.InterstitialAd.InterstitialAdLoadCallback`                             | `common.AdLoadCallback<interstitial.InterstitialAd>`                                                                                                                                  |
| Ad Loader                  | `AdLoader`                                                                           | `nativead.NativeAdLoader`                                                                                                                                                             |
| Native                     | `nativead.NativeAd`                                                                  | `nativead.NativeAd` (No longer has a `mediaView` variable), Native ad types are imported in `NativeAd.NativeAdType`                                                                   |
| Native Load                | `nativead.NativeAd.OnNativeAdLoadedListener`                                         | `nativead.NativeAdLoaderCallback`                                                                                                                                                     |
| Native Ad View             | `nativead.NativeAdView`                                                              | `nativead.NativeAdView`                                                                                                                                                               |
| Media Content              | `MediaContent`                                                                       | `nativeAd.MediaContent` (hasVideoContent is declared as a `val`)                                                                                                                      |
| Video Options              | `VideoOptions`                                                                       | `common.VideoOptions` (VideoOptions (e.g., `setStartMuted()`) are declared in `VideoOptions.Builder()` and videoOptions is set on `NativeAdRequest`)                                  |
| Video Controller           | `VideoController`                                                                    | `common.VideoController` (VideoLifecycleCallbacks is now an interface, so instantiate with `object : VideoLifecycleCallbacks { ... }`)                                                |
| Rewarded                   | `rewarded.RewardedAd`                                                                | `rewarded.RewardedAd`                                                                                                                                                                 |
| Rewarded Load              | `rewarded.RewardedAd.RewardedAdLoadCallback`                                         | `common.AdLoadCallback<rewarded.RewardedAd>`                                                                                                                                          |
| Rewarded Interstitial      | `rewardedinterstitial.RewardedInterstitialAd`                                        | `rewardedinterstitial.RewardedInterstitialAd`                                                                                                                                         |
| Rewarded Interstitial Load | `rewardedinterstitial.RewardedInterstitialAd.RewardedInterstitialAdLoadCallback`     | `common.AdLoadCallback<rewardedinterstitial.RewardedInterstitialAd>`                                                                                                                  |
| **Rewards**                |                                                                                      |                                                                                                                                                                                       |
| Reward Listener            | `OnUserEarnedRewardListener`                                                         | `rewarded.OnUserEarnedRewardListener`                                                                                                                                                 |
| Reward Item                | `rewarded.RewardItem`                                                                | `rewarded.RewardItem` (property access on `RewardedAd` and `RewardedInterstitialAd` is now `getRewardItem()`)                                                                         |

## Method mapping

This table covers the main methods and their GMA Next-Gen SDK equivalents.

| Feature                         | Old SDK Method Signature                                                                                                                     | GMA Next-Gen SDK Method Signature                                                                                                                                                                                                                                                          |
|:--------------------------------|:---------------------------------------------------------------------------------------------------------------------------------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| **Core**                        |                                                                                                                                              |                                                                                                                                                                                                                                                                                            |
| MobileAds Initialization        | `MobileAds.initialize(Context context, OnInitializationCompleteListener listener)`                                                           | `MobileAds.initialize(Context context, InitializationConfig config, OnInitializationCompleteListener listener)`                                                                                                                                                                            |
| InitializationConfig Builder    | N/A                                                                                                                                          | `InitializationConfig.Builder(String applicationId)`                                                                                                                                                                                                                                       |
| Ad Request Builder              | `AdRequest.Builder().build()`                                                                                                                | `AdRequest.Builder(String adUnitId).build()` (for App Open, Interstitial, Rewarded, Rewarded Interstitial) **Banner:** `BannerAdRequest.Builder(String adUnitId, AdSize adSize).build()` **Native:** `NativeAdRequest.Builder(String adUnitId, nativeAdTypes: List<NativeAdType>).build()` |
| **Formats**                     |                                                                                                                                              |                                                                                                                                                                                                                                                                                            |
| App Open                        | `AppOpenAd.load(Context context, String adUnitId, AdRequest request, AppOpenAdLoadCallback loadCallback)`                                    | `AppOpenAd.load(AdRequest request, AdLoadCallback<AppOpenAd> loadCallback)`                                                                                                                                                                                                                |
| Banner                          | `AdView.loadAd(AdRequest request)`                                                                                                           | `AdView.loadAd(BannerAdRequest request, AdLoadCallback<BannerAd> loadCallback)`                                                                                                                                                                                                            |
| Interstitial                    | `InterstitialAd.load(Context context, String adUnitId, AdRequest request, InterstitialAdLoadCallback loadCallback)`                          | `InterstitialAd.load(AdRequest request, AdLoadCallback<InterstitialAd> loadCallback)`                                                                                                                                                                                                      |
| Rewarded                        | `RewardedAd.load(Context context, String adUnitId, AdRequest request, RewardedAdLoadCallback loadCallback)`                                  | `RewardedAd.load(AdRequest request, AdLoadCallback<RewardedAd> loadCallback)`                                                                                                                                                                                                              |
| Rewarded Interstitial           | `RewardedInterstitialAd.load(Context context, String adUnitId, AdRequest request, RewardedInterstitialAdLoadCallback loadCallback)`          | `RewardedInterstitialAd.load(AdRequest request, AdLoadCallback<RewardedInterstitialAd> loadCallback)`                                                                                                                                                                                      |
| Native                          | `AdLoader.Builder(Context context, String adUnitId).forNativeAd(...).build().loadAd(AdRequest request)`                                      | `NativeAdLoader.load(NativeAdRequest request, NativeAdLoaderCallback callback)`                                                                                                                                                                                                            |
| Native Ad Register              | `NativeAdView.setNativeAd(NativeAd nativeAd)`                                                                                                | `NativeAdView.registerNativeAd(NativeAd nativeAd, mediaView: MediaView?)`                                                                                                                                                                                                                  |
| **Callbacks**                   |                                                                                                                                              |                                                                                                                                                                                                                                                                                            |
| onFailedToShowFullScreenContent | `onAdFailedToShowFullScreenContent(adError: AdError)`                                                                                        | `onAdFailedToShowFullScreenContent(fullScreenContentError: FullScreenContentError)`                                                                                                                                                                                                        |
| onAdLoaded                      | **AdLoadCallback**: `onAdLoaded(ad: T)` (e.g., `InterstitialAdLoadCallback`, `RewardedAdLoadCallback`, `RewardedInterstitialAdLoadCallback`) | Parameter name is always `ad` **Format specific**: `onAdLoaded(ad: InterstitialAd)`, `onAdLoaded(ad: RewardedAd)`, `onAdLoaded(ad: RewardedInterstitialAd)`                                                                                                                                |
| onAdFailedToLoad                | `onAdFailedToLoad(loadAdError: LoadAdError)`                                                                                                 | `onAdFailedToLoad(adError: LoadAdError)`                                                                                                                                                                                                                                                   |

에이전트 모드에서 Gemini에 프롬프트 입력

AGENTS.md 파일을 구성한 후 Android 스튜디오의 Gemini에 에이전트 모드로 프롬프트를 입력할 수 있습니다.

에이전트 모드에서는 다음 예시 프롬프트를 사용할 수 있습니다.

Migrate my app to GMA Next-Gen SDK

의견 남기기

Google은 GMA Next-Gen SDK 주제에 대한 응답을 개선하기 위해 AI 코드 지원 도구에 제공되는 컨텍스트를 계속 평가하고 최적화하고 있습니다.

GMA Next-Gen SDK용 Gemini 최적화에 관한 의견이 있다면 GMA Next-Gen SDK Discord 채널에 참여하세요.