-
Notifications
You must be signed in to change notification settings - Fork 69
Expand file tree
/
Copy pathMetadata.xml
More file actions
187 lines (174 loc) · 10.6 KB
/
Copy pathMetadata.xml
File metadata and controls
187 lines (174 loc) · 10.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
<metadata>
<!-- Rename Namespaces -->
<attr path="/api/package[@name='com.google.ads']" name="managedName">Google.Ads</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation.customevent']"
name="managedName"
>
Google.Android.Gms.Ads.Mediation.CustomEvent
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdFailedToLoad' and count(parameter)=2 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter'] and parameter[2][@type='int']]"
name="managedName"
>
OnAdFailedToLoadWithErrorCode
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdFailedToLoad' and count(parameter)=2 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter'] and parameter[2][@type='com.google.android.gms.ads.AdError']]"
name="managedName"
>
OnAdFailedToLoadWithErrorType
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationBannerListener']/method[@name='onAdFailedToLoad' and count(parameter)=2 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationBannerAdapter'] and parameter[2][@type='com.google.android.gms.ads.AdError']]"
name="managedName"
>
OnAdFailedToLoadWithErrorType
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationBannerListener']/method[@name='onAdFailedToLoad' and count(parameter)=2 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationBannerAdapter'] and parameter[2][@type='int']]"
name="managedName"
>
OnAdFailedToLoadWithErrorCode
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdLeftApplication' and count(parameter)=1 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter']]/parameter[1]"
name="managedName"
>
adapterLeftApplication
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdLoaded' and count(parameter)=1 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter']]/parameter[1]"
name="managedName"
>
adapterLoaded
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdClosed' and count(parameter)=1 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter']]/parameter[1]"
name="managedName"
>
adapterClosed
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdClicked' and count(parameter)=1 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter']]/parameter[1]"
name="managedName"
>
adapterClicked
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdOpened' and count(parameter)=1 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter']]/parameter[1]"
name="managedName"
>
adapterOpened
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdFailedToLoad' and count(parameter)=2 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter'] and parameter[2][@type='int']]/parameter[1]"
name="managedName"
>
adapterAdFailedToLoadErrorCode
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdFailedToLoad' and count(parameter)=2 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter'] and parameter[2][@type='int']]/parameter[2]"
name="managedName"
>
errorCode
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdFailedToLoad' and count(parameter)=2 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter'] and parameter[2][@type='com.google.android.gms.ads.AdError']]/parameter[1]"
name="managedName"
>
adapterAdFailedToLoadErrorType
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation']/interface[@name='MediationInterstitialListener']/method[@name='onAdFailedToLoad' and count(parameter)=2 and parameter[1][@type='com.google.android.gms.ads.mediation.MediationInterstitialAdapter'] and parameter[2][@type='com.google.android.gms.ads.AdError']]/parameter[2]"
name="managedName"
>
errorType
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads']/interface[@name='AdValue.PrecisionType']"
name="managedName"
>
PrecisionTypeInterface
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads']/class[@name='AdActivity']/method[@name='onRequestPermissionsResult' and count(parameter)=3 and parameter[1][@type='int'] and parameter[2][@type='java.lang.String[]'] and parameter[3][@type='int[]']]/parameter[3]"
name="managedType"
>
Android.Content.PM.Permission[]
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.admanager']/class[@name='AdManagerAdRequest.Builder']/method[@name='self' and count(parameter)=0]"
name="managedOverride"
>
override
</attr>
<remove-node
path="/api/package[@name='com.google.android.gms.ads']/class[@name='AbstractAdRequestBuilder']/method[@name='self' and count(parameter)=0]"
/>
<remove-node
path="/api/package[@name='com.google.android.gms.ads.admanager']/class[@name='AdManagerAdRequest.Builder']/method[@name='self' and count(parameter)=0]"
/>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation.customevent']/interface[@name='CustomEventListener']/method[@name='onAdFailedToLoad' and count(parameter)=1 and parameter[1][@type='com.google.android.gms.ads.AdError']]"
name="managedName"
>
OnAdFailedToLoadWithErrorType
</attr>
<attr
path="/api/package[@name='com.google.android.gms.ads.mediation.customevent']/interface[@name='CustomEventListener']/method[@name='onAdFailedToLoad' and count(parameter)=1 and parameter[1][@type='int']]"
name="managedName"
>
OnAdFailedToLoadWithErrorCode
</attr>
<!--
Java-generics erasure fix for AdLoadCallback<AdT> subclasses (issue #1491).
The base class:
public abstract class AdLoadCallback<AdT> {
public void onAdLoaded(AdT ad) { }
}
only declares the erased onAdLoaded(Object) in bytecode, so the binding
generator exposes it as `virtual OnAdLoaded(Java.Lang.Object p0)` on every
concrete subclass (AdManagerInterstitialAdLoadCallback,
InterstitialAdLoadCallback, etc.).
When a user overrides that in C#, the generated Java ACW stub emits
`public void onAdLoaded(java.lang.Object p0)`. From javac's point of view
the parent (after generic substitution) declares
`onAdLoaded(AdManagerInterstitialAd)`, and the two methods have the same
erasure but neither overrides the other; javac reports a name-clash and
the app fails to build.
Fix: for each concrete subclass, add a specialized onAdLoaded(SpecificAd)
method via add-node. That surfaces a properly-typed
`virtual OnAdLoaded(SpecificAd p0)` in C# with a specialized JNI
registration, so users' ACW stubs emit the specialized signature that
correctly overrides the parent.
Note: play-services-ads-lite also ships bindings for the same types
(under the Android.Gms.Ads.* namespace); the equivalent fix lives in
that project's Metadata.xml.
-->
<add-node path="/api/package[@name='com.google.android.gms.ads.admanager']/class[@name='AdManagerInterstitialAdLoadCallback']">
<method abstract="false" deprecated="not deprecated" final="false" name="onAdLoaded" native="false" return="void" static="false" synchronized="false" visibility="public" bridge="false" synthetic="false" jni-signature="(Lcom/google/android/gms/ads/admanager/AdManagerInterstitialAd;)V" jni-return="V">
<parameter name="p0" type="com.google.android.gms.ads.admanager.AdManagerInterstitialAd" not-null="true"></parameter>
</method>
</add-node>
<add-node path="/api/package[@name='com.google.android.gms.ads.interstitial']/class[@name='InterstitialAdLoadCallback']">
<method abstract="false" deprecated="not deprecated" final="false" name="onAdLoaded" native="false" return="void" static="false" synchronized="false" visibility="public" bridge="false" synthetic="false" jni-signature="(Lcom/google/android/gms/ads/interstitial/InterstitialAd;)V" jni-return="V">
<parameter name="p0" type="com.google.android.gms.ads.interstitial.InterstitialAd" not-null="true"></parameter>
</method>
</add-node>
<add-node path="/api/package[@name='com.google.android.gms.ads.rewarded']/class[@name='RewardedAdLoadCallback']">
<method abstract="false" deprecated="not deprecated" final="false" name="onAdLoaded" native="false" return="void" static="false" synchronized="false" visibility="public" bridge="false" synthetic="false" jni-signature="(Lcom/google/android/gms/ads/rewarded/RewardedAd;)V" jni-return="V">
<parameter name="p0" type="com.google.android.gms.ads.rewarded.RewardedAd" not-null="true"></parameter>
</method>
</add-node>
<add-node path="/api/package[@name='com.google.android.gms.ads.rewardedinterstitial']/class[@name='RewardedInterstitialAdLoadCallback']">
<method abstract="false" deprecated="not deprecated" final="false" name="onAdLoaded" native="false" return="void" static="false" synchronized="false" visibility="public" bridge="false" synthetic="false" jni-signature="(Lcom/google/android/gms/ads/rewardedinterstitial/RewardedInterstitialAd;)V" jni-return="V">
<parameter name="p0" type="com.google.android.gms.ads.rewardedinterstitial.RewardedInterstitialAd" not-null="true"></parameter>
</method>
</add-node>
<add-node path="/api/package[@name='com.google.android.gms.ads.appopen']/class[@name='AppOpenAd.AppOpenAdLoadCallback']">
<method abstract="false" deprecated="not deprecated" final="false" name="onAdLoaded" native="false" return="void" static="false" synchronized="false" visibility="public" bridge="false" synthetic="false" jni-signature="(Lcom/google/android/gms/ads/appopen/AppOpenAd;)V" jni-return="V">
<parameter name="p0" type="com.google.android.gms.ads.appopen.AppOpenAd" not-null="true"></parameter>
</method>
</add-node>
</metadata>