Add binding for com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk (GMA Next-Gen SDK)#1436
Add binding for com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk (GMA Next-Gen SDK)#1436Copilot wants to merge 6 commits into
Conversation
Co-authored-by: jonathanpeppers <840039+jonathanpeppers@users.noreply.github.com>
Co-authored-by: jonathanpeppers <840039+jonathanpeppers@users.noreply.github.com>
|
@copilot why are there merge conflicts? |
…gen-sdk-binding # Conflicts: # docs/artifact-list-with-versions.md Co-authored-by: jonathanpeppers <840039+jonathanpeppers@users.noreply.github.com>
The conflict was entirely in the generated
Both sides therefore touched almost every line in that region, so Git couldn't auto-merge it. I merged |
There was a problem hiding this comment.
Pull request overview
Adds a new config-driven .NET for Android binding for Google’s GMA Next‑Gen SDK (com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.1.1) under the com.google.android.libraries.* ecosystem, including the required transforms and repo tracking/registration updates so it can be built, packaged, and published like the other bindings in this repository.
Changes:
- Registers the new Maven artifact in
config.json(NuGet IDXamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk) and wires up license mapping + CG manifest entry. - Introduces binding transforms for namespace mapping and for resolving binding-generation issues (member renames + removal of problematic generic-erasure members).
- Regenerates/updates repository tracking outputs (PublicAPI files, published namespaces list, and artifact list docs).
Reviewed changes
Copilot reviewed 10 out of 11 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| utilities.cake | Adds the new groupId prefix to the license mapping logic. |
| build/scripts/utilities.csx | Keeps the build script license mapping logic in sync with utilities.cake. |
| config.json | Adds the new ads-mobile-sdk artifact entry and extra dependencies. |
| cgmanifest.json | Registers the new Maven component for compliance tracking. |
| source/com.google.android.libraries.ads.mobile.sdk/ads-mobile-sdk/Transforms/Metadata.xml | Applies binding fixes (method renames for listener collisions, removes problematic members). |
| source/com.google.android.libraries.ads.mobile.sdk/ads-mobile-sdk/Transforms/Metadata.Namespaces.xml | Maps SDK packages into Xamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.* namespaces. |
| source/com.google.android.libraries.ads.mobile.sdk/ads-mobile-sdk/PublicAPI/PublicAPI.Shipped.txt | Initializes the shipped API tracking file for the new binding. |
| published-namespaces.txt | Adds newly produced namespaces from the new binding. |
| docs/artifact-list.md | Adds the new artifact to the Maven→NuGet mapping list (regenerated). |
| docs/artifact-list-with-versions.md | Adds the new artifact with versions to the mapping list (regenerated). |
| path="/api/package[@name='com.google.android.libraries.ads.mobile.sdk.appopen']" | ||
| name="managedName" | ||
| > | ||
| Xamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.Appopen | ||
| </attr> |
| path="/api/package[@name='com.google.android.libraries.ads.mobile.sdk.iconad']" | ||
| name="managedName" | ||
| > | ||
| Xamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.Iconad | ||
| </attr> |
| path="/api/package[@name='com.google.android.libraries.ads.mobile.sdk.internal.nativead']" | ||
| name="managedName" | ||
| > | ||
| Xamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.Internal.Nativead | ||
| </attr> |
| path="/api/package[@name='com.google.android.libraries.ads.mobile.sdk.internal.webview']" | ||
| name="managedName" | ||
| > | ||
| Xamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.Internal.Webview | ||
| </attr> |
| path="/api/package[@name='com.google.android.libraries.ads.mobile.sdk.nativead']" | ||
| name="managedName" | ||
| > | ||
| Xamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.Nativead | ||
| </attr> |
| path="/api/package[@name='com.google.android.libraries.ads.mobile.sdk.rewardedinterstitial']" | ||
| name="managedName" | ||
| > | ||
| Xamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.Rewardedinterstitial | ||
| </attr> |
| path="/api/package[@name='com.google.android.libraries.ads.mobile.sdk.swipeableinterstitial']" | ||
| name="managedName" | ||
| > | ||
| Xamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.Swipeableinterstitial | ||
| </attr> |
| <attr | ||
| path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationBannerListener']/method[@name='onAdClicked' and count(parameter)=1 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationBannerAdapter']]" | ||
| name="managedName" | ||
| > | ||
| OnBannerAdClicked |
Addresses review feedback on PR #1436. Renames namespace segments to follow PascalCase conventions used elsewhere in the repo (e.g. play-services-ads-lite remaps appopen -> AppOpen, nativead -> NativeAd, rewardedinterstitial -> RewardedInterstitial): - Appopen -> AppOpen - Iconad -> IconAd - Internal.Nativead -> Internal.NativeAd - Internal.Webview -> Internal.WebView - Nativead -> NativeAd - Rewardedinterstitial -> RewardedInterstitial - Swipeableinterstitial -> SwipeableInterstitial published-namespaces.txt updated to match. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
jonathanpeppers
left a comment
There was a problem hiding this comment.
@copilot should we not bind Xamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.Internal.*?
Can you <remove-node/> these if we shouldn't have them? Also update any namespace or PublicApi.txt files with your changes.
Co-authored-by: jonathanpeppers <840039+jonathanpeppers@users.noreply.github.com>
Done in f4843d1. I removed binding exposure for |
Adds a new binding for Google's GMA Next-Gen SDK (
com.google.android.libraries.ads.mobile.sdk:ads-mobile-sdk:1.1.1), the documented migration target from the legacy Google Mobile Ads SDK. This is a new groupId, distinct fromcom.google.android.gms:play-services-ads*, so it gets its ownconfig.jsonentry and source folder.Binding registration
config.json: new artifact entry, nugetIdXamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdkv1.1.1 (following thecom.google.android.libraries.*→Xamarin.GoogleAndroid.Libraries.*convention). IncludesextraDependenciesfor the androidx lifecycle / savedstate / navigationevent split assemblies thatAdActivity'sComponentActivitybase requires transitively.Metadata transforms
Transforms/Metadata.Namespaces.xml: maps the public SDK packages toXamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.*namespaces (internal packages are not exposed).Transforms/Metadata.xml: resolves generated binding errors and trims surface area:EventArgscollisions (CS0102) via per-interface method renames.self(),getCode(),pollAd(String),getAdSizes(). Concrete subclasses retain their typed equivalents.com.google.android.libraries.ads.mobile.sdk.internal*packages via<remove-node/>soXamarin.GoogleAndroid.Libraries.Ads.Mobile.Sdk.Internal.*is not bound.Generated / tracking files
PublicAPI.Shipped.txt/PublicAPI.Unshipped.txtfor the new binding (updated to remove internal APIs).published-namespaces.txt: new namespaces added for this binding (excluding*.Internal.*).docs/artifact-list.md,docs/artifact-list-with-versions.md, andcgmanifest.jsonregenerated; the groupId added to the license mapping (Android Software Development Kit License) inutilities.cakeandbuild/scripts/utilities.csx.Notes for reviewers
com.google.android.gms.ads.*mediation SPI packages that map toGoogle.Android.Gms.Ads.*, overlapping the existingplay-services-ads-apibinding. This is acceptable as the two are mutually-exclusive migration targets.