অ্যান্ড্রয়েড স্টুডিওতে Gemini ব্যবহার করে Google Mobile Ads SDK থেকে GMA Next-Gen SDK তে স্থানান্তর অপ্টিমাইজ করতে, আপনার প্রকল্পে একটি AGENTS.md ফাইল ব্যবহার করুন। আপনার প্রকল্পে একটি AGENTS.md ফাইল যোগ করে, আপনি Gemini-কে GMA Next-Gen SDK এর জন্য নির্দিষ্ট প্রসঙ্গ প্রদান করেন এবং AI-সহায়তাপ্রাপ্ত কোড জেনারেশনের আউটপুট উন্নত করেন। বিস্তারিত জানার জন্য, AGENTS.md ফাইল ব্যবহার করে Gemini কাস্টমাইজ করুন দেখুন।
এই নির্দেশিকাটিতে Android Studio-তে Gemini অপ্টিমাইজ করার পদ্ধতি অন্তর্ভুক্ত রয়েছে যাতে Google Mobile Ads SDK থেকে GMA Next-Gen SDK তে স্থানান্তরিত হতে পারে।
শুরু করার আগে
চালিয়ে যাওয়ার আগে, নিম্নলিখিতগুলি করুন:
- অ্যান্ড্রয়েড স্টুডিওতে জেমিনি সম্পর্কে জানুন।
- অ্যান্ড্রয়েড স্টুডিওর একটি সামঞ্জস্যপূর্ণ সংস্করণ ব্যবহার করে অ্যান্ড্রয়েড স্টুডিওতে জেমিনি সেট আপ করুন ।
আপনার প্রকল্পে AGENTS.md ফাইল যোগ করুন।
গুগল আপনাকে মাইগ্রেশন ধাপগুলিতে সাহায্য করার জন্য জেমিনির জন্য নির্দেশাবলী সহ একটি AGENTS.md ফাইল সরবরাহ করে।
AI কোড সহায়তায় GMA Next-Gen SDK এর জন্য নির্দিষ্ট নির্দেশাবলী ব্যবহার করতে, এই পদক্ষেপগুলি অনুসরণ করুন:
আপনার প্রোজেক্টের ফাইল সিস্টেমের যেকোনো জায়গায়
AGENTS.mdনামে একটি নতুন ফাইল তৈরি করুন।আপনার
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)` |
এজেন্ট মোডে জেমিনিকে প্রম্পট করুন
আপনার AGENTS.md ফাইলটি কনফিগার করার পরে, আপনি Android Studio-তে Agent Mode- এ Gemini প্রম্পট করতে পারেন।
এজেন্ট মোডে, আপনি নিম্নলিখিত উদাহরণ প্রম্পটগুলি ব্যবহার করতে পারেন:
Migrate my app to GMA Next-Gen SDK
মতামত দিন
আমরা GMA Next-Gen SDK বিষয়গুলিতে তাদের প্রতিক্রিয়া উন্নত করার জন্য AI কোড সহায়তা সরঞ্জামগুলিতে প্রদত্ত প্রেক্ষাপট মূল্যায়ন এবং অপ্টিমাইজ করার কাজ চালিয়ে যাচ্ছি।
GMA Next-Gen SDK এর জন্য Gemini-কে অপ্টিমাইজ করার বিষয়ে আপনার যদি কোন মতামত থাকে, তাহলে GMA Next-Gen SDK Discord চ্যানেলে যোগদান করুন।