Skip to content

Commit 2a7d1ed

Browse files
Stable Updates 20250618 (#1159)
Updates latest stable packages, writing down each issue in `development-tips.md`. 1. `androidx.appcompat:appcompat` - 1.7.0 -> 1.7.1 2. `androidx.appcompat:appcompatresources` - 1.7.0 -> 1.7.1 3. `androidx.autofill:autofill` - 1.1.0 -> 1.3.0 4. `androidx.compose.animation:animation` - 1.7.8 -> 1.8.3 5. `androidx.compose.animation:animationandroid` - 1.7.8 -> 1.8.3 6. `androidx.compose.animation:animationcore` - 1.7.8 -> 1.8.3 7. `androidx.compose.animation:animationcoreandroid` - 1.7.8 -> 1.8.3 8. `androidx.compose.animation:animationgraphics` - 1.7.8 -> 1.8.3 9. `androidx.compose.animation:animationgraphicsandroid` - 1.7.8 -> 1.8.3 10. `androidx.compose.foundation:foundation` - 1.7.8 -> 1.8.3 11. `androidx.compose.foundation:foundationandroid` - 1.7.8 -> 1.8.3 12. `androidx.compose.foundation:foundationlayout` - 1.7.8 -> 1.8.3 13. `androidx.compose.foundation:foundationlayoutandroid` - 1.7.8 -> 1.8.3 14. `androidx.compose.material:material` - 1.7.8 -> 1.8.3 15. `androidx.compose.material:materialandroid` - 1.7.8 -> 1.8.3 16. `androidx.compose.material:materialripple` - 1.7.8 -> 1.8.3 17. `androidx.compose.material:materialrippleandroid` - 1.7.8 -> 1.8.3 18. `androidx.compose.runtime:runtime` - 1.7.8 -> 1.8.3 19. `androidx.compose.runtime:runtimeandroid` - 1.7.8 -> 1.8.3 20. `androidx.compose.runtime:runtimelivedata` - 1.7.8 -> 1.8.3 21. `androidx.compose.runtime:runtimerxjava2` - 1.7.8 -> 1.8.3 22. `androidx.compose.runtime:runtimerxjava3` - 1.7.8 -> 1.8.3 23. `androidx.compose.runtime:runtimesaveable` - 1.7.8 -> 1.8.3 24. `androidx.compose.runtime:runtimesaveableandroid` - 1.7.8 -> 1.8.3 25. `androidx.compose.ui:ui` - 1.7.8 -> 1.8.3 26. `androidx.compose.ui:uiandroid` - 1.7.8 -> 1.8.3 27. `androidx.compose.ui:uigeometry` - 1.7.8 -> 1.8.3 28. `androidx.compose.ui:uigeometryandroid` - 1.7.8 -> 1.8.3 29. `androidx.compose.ui:uigraphics` - 1.7.8 -> 1.8.3 30. `androidx.compose.ui:uigraphicsandroid` - 1.7.8 -> 1.8.3 31. `androidx.compose.ui:uitext` - 1.7.8 -> 1.8.3 32. `androidx.compose.ui:uitextandroid` - 1.7.8 -> 1.8.3 33. `androidx.compose.ui:uitooling` - 1.7.8 -> 1.8.3 34. `androidx.compose.ui:uitoolingandroid` - 1.7.8 -> 1.8.3 35. `androidx.compose.ui:uitoolingdata` - 1.7.8 -> 1.8.3 36. `androidx.compose.ui:uitoolingdataandroid` - 1.7.8 -> 1.8.3 37. `androidx.compose.ui:uitoolingpreview` - 1.7.8 -> 1.8.3 38. `androidx.compose.ui:uitoolingpreviewandroid` - 1.7.8 -> 1.8.3 39. `androidx.compose.ui:uiunit` - 1.7.8 -> 1.8.3 40. `androidx.compose.ui:uiunitandroid` - 1.7.8 -> 1.8.3 41. `androidx.compose.ui:uiutil` - 1.7.8 -> 1.8.3 42. `androidx.compose.ui:uiutilandroid` - 1.7.8 -> 1.8.3 43. `androidx.compose.ui:uiviewbinding` - 1.7.8 -> 1.8.3 44. `androidx.databinding:databindingadapters` - 8.10.0 -> 8.10.1 45. `androidx.databinding:databindingcommon` - 8.10.0 -> 8.10.1 46. `androidx.databinding:databindingruntime` - 8.10.0 -> 8.10.1 47. `androidx.databinding:viewbinding` - 8.10.0 -> 8.10.1 48. `androidx.datastore:datastore` - 1.1.6 -> 1.1.7 49. `androidx.datastore:datastoreandroid` - 1.1.6 -> 1.1.7 50. `androidx.datastore:datastorecore` - 1.1.6 -> 1.1.7 51. `androidx.datastore:datastorecoreandroid` - 1.1.6 -> 1.1.7 52. `androidx.datastore:datastorecorejvm` - 1.1.6 -> 1.1.7 53. `androidx.datastore:datastorecoreokio` - 1.1.6 -> 1.1.7 54. `androidx.datastore:datastorecoreokiojvm` - 1.1.6 -> 1.1.7 55. `androidx.datastore:datastorepreferences` - 1.1.6 -> 1.1.7 56. `androidx.datastore:datastorepreferencesandroid` - 1.1.6 -> 1.1.7 57. `androidx.datastore:datastorepreferencescore` - 1.1.6 -> 1.1.7 58. `androidx.datastore:datastorepreferencescorejvm` - 1.1.6 -> 1.1.7 59. `androidx.datastore:datastorepreferencesexternalprotobuf` - 1.1.6 -> 1.1.7 60. `androidx.datastore:datastorepreferencesproto` - 1.1.6 -> 1.1.7 61. `androidx.datastore:datastorerxjava2` - 1.1.6 -> 1.1.7 62. `androidx.datastore:datastorerxjava3` - 1.1.6 -> 1.1.7 63. `androidx.fragment:fragment` - 1.8.6 -> 1.8.8 64. `androidx.fragment:fragmentktx` - 1.8.6 -> 1.8.8 65. `androidx.lifecycle:lifecyclecommon` - 2.9.0 -> 2.9.1 66. `androidx.lifecycle:lifecyclecommonjava8` - 2.9.0 -> 2.9.1 67. `androidx.lifecycle:lifecyclecommonjvm` - 2.9.0 -> 2.9.1 68. `androidx.lifecycle:lifecyclelivedata` - 2.9.0 -> 2.9.1 69. `androidx.lifecycle:lifecyclelivedatacore` - 2.9.0 -> 2.9.1 70. `androidx.lifecycle:lifecyclelivedatacorektx` - 2.9.0 -> 2.9.1 71. `androidx.lifecycle:lifecyclelivedataktx` - 2.9.0 -> 2.9.1 72. `androidx.lifecycle:lifecycleprocess` - 2.9.0 -> 2.9.1 73. `androidx.lifecycle:lifecyclereactivestreams` - 2.9.0 -> 2.9.1 74. `androidx.lifecycle:lifecycleruntime` - 2.9.0 -> 2.9.1 75. `androidx.lifecycle:lifecycleruntimeandroid` - 2.9.0 -> 2.9.1 76. `androidx.lifecycle:lifecycleruntimecompose` - 2.9.0 -> 2.9.1 77. `androidx.lifecycle:lifecycleruntimecomposeandroid` - 2.9.0 -> 2.9.1 78. `androidx.lifecycle:lifecycleruntimektx` - 2.9.0 -> 2.9.1 79. `androidx.lifecycle:lifecycleruntimektxandroid` - 2.9.0 -> 2.9.1 80. `androidx.lifecycle:lifecycleservice` - 2.9.0 -> 2.9.1 81. `androidx.lifecycle:lifecycleviewmodel` - 2.9.0 -> 2.9.1 82. `androidx.lifecycle:lifecycleviewmodelandroid` - 2.9.0 -> 2.9.1 83. `androidx.lifecycle:lifecycleviewmodelcompose` - 2.9.0 -> 2.9.1 84. `androidx.lifecycle:lifecycleviewmodelcomposeandroid` - 2.9.0 -> 2.9.1 85. `androidx.lifecycle:lifecycleviewmodelktx` - 2.9.0 -> 2.9.1 86. `androidx.lifecycle:lifecycleviewmodelsavedstate` - 2.9.0 -> 2.9.1 87. `androidx.lifecycle:lifecycleviewmodelsavedstateandroid` - 2.9.0 -> 2.9.1 88. `androidx.mediarouter:mediarouter` - 1.8.0beta01 -> 1.8.0 89. `androidx.recyclerview:recyclerviewselection` - 1.1.0 -> 1.2.0 90. `androidx.room:roomcommon` - 2.7.1 -> 2.7.2 91. `androidx.room:roomcommonjvm` - 2.7.1 -> 2.7.2 92. `androidx.room:roomguava` - 2.7.1 -> 2.7.2 93. `androidx.room:roomktx` - 2.7.1 -> 2.7.2 94. `androidx.room:roomruntime` - 2.7.1 -> 2.7.2 95. `androidx.room:roomruntimeandroid` - 2.7.1 -> 2.7.2 96. `androidx.room:roomrxjava2` - 2.7.1 -> 2.7.2 97. `androidx.room:roomrxjava3` - 2.7.1 -> 2.7.2 98. `androidx.sqlite:sqlite` - 2.5.1 -> 2.5.2 99. `androidx.sqlite:sqliteandroid` - 2.5.1 -> 2.5.2 100. `androidx.sqlite:sqliteframework` - 2.5.1 -> 2.5.2 101. `androidx.sqlite:sqliteframeworkandroid` - 2.5.1 -> 2.5.2 102. `androidx.wear.protolayout:protolayout` - 1.2.1 -> 1.3.0 103. `androidx.wear.protolayout:protolayoutexpression` - 1.2.1 -> 1.3.0 104. `androidx.wear.protolayout:protolayoutexpressionpipeline` - 1.2.1 -> 1.3.0 105. `androidx.wear.protolayout:protolayoutexternalprotobuf` - 1.2.1 -> 1.3.0 106. `androidx.wear.protolayout:protolayoutproto` - 1.2.1 -> 1.3.0 107. `androidx.wear.tiles:tiles` - 1.4.1 -> 1.5.0 108. `androidx.wear.tiles:tilesmaterial` - 1.4.1 -> 1.5.0 109. `androidx.wear.tiles:tilesproto` - 1.4.1 -> 1.5.0 110. `androidx.webkit:webkit` - 1.13.0 -> 1.14.0 111. `androidx.window:window` - 1.3.0 -> 1.4.0 112. `androidx.window:windowjava` - 1.3.0 -> 1.4.0 113. `androidx.window:windowrxjava2` - 1.3.0 -> 1.4.0 114. `androidx.window:windowrxjava3` - 1.3.0 -> 1.4.0 115. `androidx.work:workgcm` - 2.10.1 -> 2.10.2 116. `androidx.work:workmultiprocess` - 2.10.1 -> 2.10.2 117. `androidx.work:workruntime` - 2.10.1 -> 2.10.2 118. `androidx.work:workruntimektx` - 2.10.1 -> 2.10.2 119. `androidx.work:workrxjava2` - 2.10.1 -> 2.10.2 120. `androidx.work:workrxjava3` - 2.10.1 -> 2.10.2 121. `com.google.ai.edge.litert:litert` - 1.2.0 -> 1.3.0 122. `com.google.ai.edge.litert:litertapi` - 1.2.0 -> 1.3.0 123. `com.google.ai.edge.litert:litertgpu` - 1.2.0 -> 1.3.0 124. `com.google.ai.edge.litert:litertgpuapi` - 1.2.0 -> 1.3.0 125. `com.google.ai.edge.litert:litertmetadata` - 1.2.0 -> 1.3.0 126. `com.google.ai.edge.litert:litertsupport` - 1.2.0 -> 1.3.0 127. `com.google.ai.edge.litert:litertsupportapi` - 1.2.0 -> 1.3.0 128. `com.google.android.gms:playservicesads` - 24.2.0 -> 24.4.0 129. `com.google.android.gms:playservicesadsapi` - 24.2.0 -> 24.4.0 130. `com.google.android.gms:playservicesthreadnetwork` - 16.2.1 -> 16.3.0 131. `com.google.android.libraries.places:places` - 4.2.0 -> 4.3.1 132. `com.google.crypto.tink:tinkandroid` - 1.17.0 -> 1.18.0 133. `com.google.firebase:firebaseauth` - 23.2.0 -> 23.2.1 134. `com.google.firebase:firebaseconfig` - 22.1.1 -> 22.1.2 135. `com.google.firebase:firebasecrashlytics` - 19.4.3 -> 19.4.4 136. `com.google.firebase:firebasecrashlyticsndk` - 19.4.3 -> 19.4.4 137. `com.google.firebase:firebasesessions` - 2.1.1 -> 2.1.2 138. `com.google.firebase:firebasestorage` - 21.0.1 -> 21.0.2 139. `com.google.protobuf:protobufjavalite` - 4.31.0 -> 4.31.1 140. `com.squareup.okio:okio` - 3.10.2 -> 3.13.0 141. `com.squareup.okio:okiojvm` - 3.10.2 -> 3.13.0 142. `io.grpc:grpcandroid` - 1.63.2 -> 1.73.0 143. `io.grpc:grpcapi` - 1.63.2 -> 1.73.0 144. `io.grpc:grpccontext` - 1.63.2 -> 1.73.0 145. `io.grpc:grpccore` - 1.63.2 -> 1.73.0 146. `io.grpc:grpcokhttp` - 1.63.2 -> 1.73.0 147. `io.grpc:grpcprotobuflite` - 1.63.2 -> 1.73.0 148. `io.grpc:grpcstub` - 1.63.2 -> 1.73.0 149. `io.grpc:grpcutil` - 1.63.2 -> 1.73.0 150. `org.checkerframework:checkerqual` - 3.49.3 -> 3.49.4 151. `org.jetbrains.kotlinx:atomicfu` - 0.27.0 -> 0.28.0 152. `org.jetbrains.kotlinx:atomicfujvm` - 0.27.0 -> 0.28.0 Includes @DevronB's changes from: * #1172 Co-authored-by: DevronB <[email protected]>
1 parent 9eb6af7 commit 2a7d1ed

File tree

13 files changed

+2508
-2570
lines changed

13 files changed

+2508
-2570
lines changed

cgmanifest.json

Lines changed: 749 additions & 1034 deletions
Large diffs are not rendered by default.

config.json

Lines changed: 326 additions & 309 deletions
Large diffs are not rendered by default.

docs/artifact-list-with-versions.md

Lines changed: 642 additions & 664 deletions
Large diffs are not rendered by default.

docs/artifact-list.md

Lines changed: 495 additions & 517 deletions
Large diffs are not rendered by default.

docs/development-tips.md

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,43 @@
22

33
This is a collection of tasks you might want to do in this repository, and how to do them.
44

5+
## Updating Packages
6+
7+
Initially, run:
8+
9+
```bash
10+
dotnet cake -t:update-config
11+
```
12+
13+
Which will lookup Java Maven dependencies and update the `config.json` file
14+
with the latest versions.
15+
16+
To update other files in the repo, run:
17+
18+
```bash
19+
dotnet cake utilities.cake -t=generate-component-governance
20+
dotnet cake utilities.cake -t=generate-namespace-file
21+
dotnet cake utilities.cake -t=list-artifacts
22+
```
23+
24+
For PR descriptions, run:
25+
26+
```bash
27+
dotnet cake utilities.cake -t=api-diff-markdown-info-pr
28+
```
29+
30+
This outputs a bunch of lines like this, you can copy/paste into your PR description:
31+
32+
```md
33+
========================================
34+
api-diff-markdown-info-pr
35+
========================================
36+
1. `androidx.appcompat:appcompat` - 1.7.0 -> 1.7.1
37+
2. `androidx.appcompat:appcompatresources` - 1.7.0 -> 1.7.1
38+
3. `androidx.autofill:autofill` - 1.1.0 -> 1.3.0
39+
4. `androidx.compose.animation:animation` - 1.7.8 -> 1.8.3
40+
```
41+
542
## Tagging and Releasing
643

744
When ready to release, tag a commit such as:
@@ -55,6 +92,156 @@ Then I released the package using the [AndroidX Push NuGet.org
5592
pipeline][androidx-pipeline] and selected the appropriate branch by
5693
selecting a specific build via `Resources > AndroidX`.
5794

95+
## Troubleshooting
96+
97+
This is an example list of problems and how to fix them.
98+
99+
### Example 1
100+
101+
```log
102+
generated\androidx.webkit.webkit\obj\Debug\net8.0-android\generated\src\AndroidX.WebKit.ChromiumLibBoundary.IWebViewBuilderBoundaryInterface.cs(202,89):
103+
error CS0535: 'WebViewBuilderBoundaryInterfaceConfig' does not implement interface member 'IConsumer.Accept(Object?)'
104+
[generated\androidx.webkit.webkit\androidx.webkit.webkit.csproj]
105+
```
106+
107+
In this case, the `WebViewBuilderBoundaryInterfaceConfig` class has:
108+
109+
```csharp
110+
// Metadata.xml XPath method reference: path="/api/package[@name='org.chromium.support_lib_boundary']/class[@name='WebViewBuilderBoundaryInterface.Config']/method[@name='accept' and count(parameter)=1 and parameter[1][@type='java.util.function.BiConsumer&lt;java.lang.Integer, java.lang.Object&gt;']]"
111+
[Register ("accept", "(Ljava/util/function/BiConsumer;)V", "GetAccept_Ljava_util_function_BiConsumer_Handler")]
112+
public virtual unsafe void Accept (global::Java.Util.Functions.IBiConsumer? chromiumConfig)
113+
```
114+
115+
Java can change the type of parameters on methods in type inheritance, while C# does *not* allow this.
116+
117+
In C#, the `IConsumer` interface requires:
118+
119+
```csharp
120+
public virtual unsafe void Accept (global::Java.Lang.Object? chromiumConfig)
121+
```
122+
123+
To fix this, I added `source\androidx.webkit\webkit\Additions\AndroidX.WebKit.ChromiumLibBoundary.IWebViewBuilderBoundaryInterface.cs`:
124+
125+
```csharp
126+
namespace AndroidX.WebKit.ChromiumLibBoundary;
127+
128+
public partial class WebViewBuilderBoundaryInterfaceConfig
129+
{
130+
public virtual unsafe void Accept (Java.Lang.Object? chromiumConfig)
131+
{
132+
this.Accept ((Java.Util.Functions.IBiConsumer?) chromiumConfig);
133+
}
134+
}
135+
```
136+
137+
### Example 2
138+
139+
```log
140+
generated\androidx.wear.protolayout.protolayout-expression\obj\Release\net8.0-android\generated\src\AndroidX.Wear.ProtoLayout.Expression.DynamicDataMap.cs(136,44): error CS0111: Type 'DynamicDataMap' already defines a member called 'Get' with the same parameter types
141+
generated\androidx.wear.protolayout.protolayout-expression\obj\Release\net8.0-android\generated\src\AndroidX.Wear.ProtoLayout.Expression.DynamicDataMap.cs(151,42): error CS0111: Type 'DynamicDataMap' already defines a member called 'Get' with the same parameter types
142+
generated\androidx.wear.protolayout.protolayout-expression\obj\Release\net8.0-android\generated\src\AndroidX.Wear.ProtoLayout.Expression.DynamicDataMap.cs(166,44): error CS0111: Type 'DynamicDataMap' already defines a member called 'Get' with the same parameter types
143+
generated\androidx.wear.protolayout.protolayout-expression\obj\Release\net8.0-android\generated\src\AndroidX.Wear.ProtoLayout.Expression.DynamicDataMap.cs(181,25): error CS0111: Type 'DynamicDataMap' already defines a member called 'Get' with the same parameter types
144+
generated\androidx.wear.protolayout.protolayout-expression\obj\Release\net8.0-android\generated\src\AndroidX.Wear.ProtoLayout.Expression.DynamicDataMap.cs(196,45): error CS0111: Type 'DynamicDataMap' already defines a member called 'Get' with the same parameter types
145+
generated\androidx.wear.protolayout.protolayout-expression\obj\Release\net8.0-android\generated\src\AndroidX.Wear.ProtoLayout.Expression.DynamicDataMap.cs(211,44): error CS0111: Type 'DynamicDataMap' already defines a member called 'Get' with the same parameter types
146+
```
147+
148+
Java you can have multiple methods with the same name, parameters, and *different* return type. C# does not allow this.
149+
150+
So, in this case, I renamed the five methods in C#, so for example:
151+
152+
```csharp
153+
// Metadata.xml XPath method reference: path="/api/package[@name='androidx.wear.protolayout.expression']/class[@name='DynamicDataMap']/method[@name='get' and count(parameter)=1 and parameter[1][@type='androidx.wear.protolayout.expression.DynamicDataKey&lt;androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool&gt;']]"
154+
[Register ("get", "(Landroidx/wear/protolayout/expression/DynamicDataKey;)Ljava/lang/Boolean;", "")]
155+
public unsafe global::Java.Lang.Boolean? Get (global::AndroidX.Wear.ProtoLayout.Expression.DynamicDataKey key)
156+
{
157+
const string __id = "get.(Landroidx/wear/protolayout/expression/DynamicDataKey;)Ljava/lang/Boolean;";
158+
try {
159+
JniArgumentValue* __args = stackalloc JniArgumentValue [1];
160+
__args [0] = new JniArgumentValue ((key == null) ? IntPtr.Zero : ((global::Java.Lang.Object) key).Handle);
161+
var __rm = _members.InstanceMethods.InvokeNonvirtualObjectMethod (__id, this, __args);
162+
return global::Java.Lang.Object.GetObject<global::Java.Lang.Boolean> (__rm.Handle, JniHandleOwnership.TransferLocalRef);
163+
} finally {
164+
global::System.GC.KeepAlive (key);
165+
}
166+
}
167+
```
168+
169+
You can rename this to `GetBoolean` in `source\androidx.wear.protolayout\protolayout-expression\Transforms\Metadata.xml`, such as:
170+
171+
```xml
172+
<attr
173+
path="/api/package[@name='androidx.wear.protolayout.expression']/class[@name='DynamicDataMap']/method[@name='get' and count(parameter)=1 and parameter[1][@type='androidx.wear.protolayout.expression.DynamicDataKey&lt;androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool&gt;']]"
174+
name="managedName"
175+
>
176+
GetBoolean
177+
</attr>
178+
```
179+
180+
I did this for all five methods.
181+
182+
### Example 3
183+
184+
```log
185+
generated\com.google.android.libraries.places.places\obj\Release\net8.0-android\generated\src\Xamarin.GoogleAndroid.Libraries.Places.Widget.Listener.IPredictionSelectionListener.cs(136,10): error CS0111: Type 'ErrorEventArgs' already defines a member called 'ErrorEventArgs' with the same parameter types
186+
```
187+
188+
This means that more than C# `EventArgs` type is being generated for
189+
two Java callback methods with the same name, in the same namespace.
190+
191+
To solve this, I added to `source\com.google.android.libraries.places\places\Transforms\Metadata.xml`:
192+
193+
```xml
194+
<attr
195+
path="/api/package[@name='com.google.android.libraries.places.widget.listener']/interface[@name='PredictionSelectionListener']/method[@name='onError' and count(parameter)=1 and parameter[1][@type='com.google.android.gms.common.api.Status']]"
196+
name="argsType"
197+
>
198+
PredictionSelectionEventArgs
199+
</attr>
200+
```
201+
202+
### Example 4
203+
204+
```log
205+
generated\io.grpc.grpc-api\obj\Debug\net8.0-android\generated\src\Xamarin.Grpc.LongGaugeMetricInstrument.cs(20,84):
206+
error CS0738: 'LongGaugeMetricInstrument' does not implement interface member 'IMetricInstrument.OptionalLabelKeys'. 'LongGaugeMetricInstrument.OptionalLabelKeys' cannot implement 'IMetricInstrument.OptionalLabelKeys' because it does not have the matching return type of 'IList<string>'.
207+
generated\io.grpc.grpc-api\obj\Debug\net8.0-android\generated\src\Xamarin.Grpc.LongGaugeMetricInstrument.cs(20,84):
208+
error CS0738: 'LongGaugeMetricInstrument' does not implement interface member 'IMetricInstrument.RequiredLabelKeys'. 'LongGaugeMetricInstrument.RequiredLabelKeys' cannot implement 'IMetricInstrument.RequiredLabelKeys' because it does not have the matching return type of 'IList<string>'.
209+
```
210+
211+
At first, I thought I could do something like:
212+
213+
```xml
214+
<attr
215+
path="/api/package[@name='io.grpc']/class[@name='LongGaugeMetricInstrument']/method[@name='getOptionalLabelKeys' and count(parameter)=0]"
216+
name="managedReturn"
217+
>
218+
System.Collections.IList&gt;System.String&lt;
219+
</attr>
220+
```
221+
222+
But this results in the error:
223+
224+
```log
225+
BINDINGSGENERATOR : error BG0000: System.ArgumentOutOfRangeException: length ('-15') must be a non-negative value. (Parameter 'length')
226+
```
227+
228+
So, I'm not sure we support putting generic types in the `managedReturn` value.
229+
230+
So instead, I used a C# additions and an explicit interface implementation:
231+
232+
```csharp
233+
using System.Collections.Generic;
234+
235+
namespace Xamarin.Grpc;
236+
237+
public partial class LongGaugeMetricInstrument
238+
{
239+
IList<string>? IMetricInstrument.OptionalLabelKeys => (IList<string>?) OptionalLabelKeys;
240+
241+
IList<string>? IMetricInstrument.RequiredLabelKeys => (IList<string>?) RequiredLabelKeys;
242+
}
243+
```
244+
58245
[1118]: https://github.com/dotnet/android-libraries/pull/1118
59246
[androidx.security]: https://github.com/dotnet/android-libraries/tree/androidx.security
60247
[androidx-pipeline]: https://devdiv.visualstudio.com/DevDiv/_build?definitionId=25324

published-namespaces.txt

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ Android.Gms.Ads.Preload
2222
Android.Gms.Ads.Query
2323
Android.Gms.Ads.Rewarded
2424
Android.Gms.Ads.RewardedInterstitial
25+
Android.Gms.Ads.Search
2526
Android.Gms.Analytics
2627
Android.Gms.Analytics.Ecommerce
2728
Android.Gms.AppIndex
@@ -490,8 +491,6 @@ AndroidX.Legacy.Content
490491
AndroidX.Legacy.Widget
491492
AndroidX.Lifecycle
492493
AndroidX.Lifecycle.Compose
493-
AndroidX.Lifecycle.Internal
494-
AndroidX.Lifecycle.Serialization
495494
AndroidX.Lifecycle.ViewModels
496495
AndroidX.Lifecycle.ViewModels.Compose
497496
AndroidX.Lifecycle.ViewModels.Internal
@@ -597,9 +596,7 @@ AndroidX.MediaRouter.App
597596
AndroidX.MediaRouter.Media
598597
AndroidX.Navigation
599598
AndroidX.Navigation.Compose
600-
AndroidX.Navigation.Compose.Internal
601599
AndroidX.Navigation.Fragment
602-
AndroidX.Navigation.Internal
603600
AndroidX.Navigation.Serialization
604601
AndroidX.Navigation.UI
605602
AndroidX.Paging
@@ -632,31 +629,20 @@ AndroidX.RecyclerView.Selection
632629
AndroidX.RecyclerView.Widget
633630
AndroidX.ResourceInspection.Annotation
634631
AndroidX.Room
635-
AndroidX.Room.Concurrent
636-
AndroidX.Room.Coroutines
637-
AndroidX.Room.Driver
638632
AndroidX.Room.Guava
639633
AndroidX.Room.Migration
640-
AndroidX.Room.Paging
641634
AndroidX.Room.RxJava3
642635
AndroidX.Room.Util
643636
AndroidX.SavedState
644-
AndroidX.SavedState.Compose
645-
AndroidX.SavedState.Compose.Serialization.Serializers
646-
AndroidX.SavedState.Internal
647-
AndroidX.SavedState.Serialization
648-
AndroidX.SavedState.Serialization.Serializers
649637
AndroidX.Security.Crypto
650638
AndroidX.Slice
651639
AndroidX.Slice.Builders
652640
AndroidX.Slice.Compat
653641
AndroidX.Slice.Core
654642
AndroidX.Slice.Widget
655643
AndroidX.SlidingPaneLayout.Widget
656-
AndroidX.Sqlite
657644
AndroidX.Sqlite.Db
658645
AndroidX.Sqlite.Db.Framework
659-
AndroidX.Sqlite.Driver
660646
AndroidX.Sqlite.Util
661647
AndroidX.Startup
662648
AndroidX.SwipeRefreshLayout.Widget
@@ -1000,33 +986,15 @@ Google.Ads.InteractiveMedia.V3.Impl.Data
1000986
Google.Ads.Mediation
1001987
Google.Ads.Mediation.Admob
1002988
Google.Ads.Nonagon.Util.Logging.Csi
1003-
Google.Android.Gms.Ads
1004-
Google.Android.Gms.Ads.AdManager
1005-
Google.Android.Gms.Ads.AppOpen
1006-
Google.Android.Gms.Ads.Formats
1007-
Google.Android.Gms.Ads.H5
1008-
Google.Android.Gms.Ads.Initialization
1009989
Google.Android.Gms.Ads.Internal.Offline.Buffering
1010-
Google.Android.Gms.Ads.Internal.Util.Client
1011-
Google.Android.Gms.Ads.Interstitial
1012-
Google.Android.Gms.Ads.Mediation
1013-
Google.Android.Gms.Ads.Mediation.CustomEvent
1014-
Google.Android.Gms.Ads.Mediation.Rtb
1015-
Google.Android.Gms.Ads.NativeAd
1016990
Google.Android.Gms.Ads.Nonagon.SignalGeneration
1017-
Google.Android.Gms.Ads.Preload
1018-
Google.Android.Gms.Ads.Query
1019-
Google.Android.Gms.Ads.Rewarded
1020-
Google.Android.Gms.Ads.RewardedInterstitial
1021991
Google.Android.Gms.Common.SignatureVerification
1022992
Google.Android.Gms.IdentityCredentials
1023993
Google.Android.Gms.IdentityCredentials.Internal
1024994
Google.Android.Gms.IdentityCredentials.Provider
1025-
Google.Android.Gms.Maps.Internal
1026995
Google.Android.Gms.RecaptchaBase
1027996
Google.Android.Libraries.AppActions.Service
1028997
Google.Android.Libraries.Places.Api.Auth
1029-
Google.Android.Libraries.Places.Widget.Internal.AutoComplete.UI
1030998
Google.Android.Material.Animation
1031999
Google.Android.Material.AppBar
10321000
Google.Android.Material.Badge
@@ -1085,23 +1053,13 @@ Google.Android.Material.Transition
10851053
Google.Android.Material.Transition.Platform
10861054
Google.AndroidLibraries.BarHopper
10871055
Google.Api
1088-
Google.Apphosting.DataStore.Testing
10891056
Google.Assistant.AppActions.Suggestions
10901057
Google.Assistant.AppActions.Suggestions.Client
10911058
Google.Assistant.AppActions.Widgets
10921059
Google.Assistant.AppActions.Widgets.PinAppWidget
10931060
Google.AutoValue.Annotations
1094-
Google.AutoValue.Extension
1095-
Google.AutoValue.Extension.Memoized.Processor
10961061
Google.AutoValue.Extension.Serializable
1097-
Google.AutoValue.Extension.Serializable.Processor
1098-
Google.AutoValue.Extension.Serializable.Serializer
1099-
Google.AutoValue.Extension.Serializable.Serializer.Impl
1100-
Google.AutoValue.Extension.Serializable.Serializer.Interfaces
1101-
Google.AutoValue.Extension.Serializable.Serializer.Runtime
11021062
Google.AutoValue.Extension.ToPrettyString
1103-
Google.AutoValue.Extension.ToPrettyString.Processor
1104-
Google.AutoValue.Processor
11051063
Google.Cloud.Audit
11061064
Google.Cloud.Datastore.Core.Number
11071065
Google.Common.Util.Concurrent
@@ -1171,8 +1129,6 @@ Kotlin.Collections.Jdk8
11711129
Kotlin.Collections.Unsigned
11721130
Kotlin.Comparisons
11731131
Kotlin.Concurrent
1174-
Kotlin.Concurrent.Atomics
1175-
Kotlin.Concurrent.Internal
11761132
Kotlin.Contracts
11771133
Kotlin.Coroutines
11781134
Kotlin.Coroutines.Cancellation
@@ -1497,7 +1453,9 @@ Xamarin.Google.MLKit.Vision.MediaPipe.Segmentation
14971453
Xamarin.Google.MLKit.Vision.MediaPipe.Utils
14981454
Xamarin.Google.MLKit.Vision.Objects
14991455
Xamarin.Google.MLKit.Vision.Objects.Custom
1456+
Xamarin.Google.MLKit.Vision.Objects.Custom.Internal
15001457
Xamarin.Google.MLKit.Vision.Objects.Defaults
1458+
Xamarin.Google.MLKit.Vision.Objects.Defaults.Internal
15011459
Xamarin.Google.MLKit.Vision.Objects.Internal
15021460
Xamarin.Google.MLKit.Vision.Pose
15031461
Xamarin.Google.MLKit.Vision.Pose.Accurate
@@ -1533,6 +1491,7 @@ Xamarin.GoogleAndroid.TV.Ads
15331491
Xamarin.GoogleAndroid.TV.Ads.Controls
15341492
Xamarin.Grpc
15351493
Xamarin.Grpc.Android
1494+
Xamarin.Grpc.Core.InProcess
15361495
Xamarin.Grpc.Core.Internal
15371496
Xamarin.Grpc.Core.Util
15381497
Xamarin.Grpc.OkHttp

source/androidx.wear.protolayout/protolayout-expression/Transforms/Metadata.xml

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,48 @@
1818
>
1919
Java.Lang.Object
2020
</attr>
21+
<attr
22+
path="/api/package[@name='androidx.wear.protolayout.expression']/class[@name='DynamicDataMap']/method[@name='get' and count(parameter)=1 and parameter[1][@type='androidx.wear.protolayout.expression.DynamicDataKey&lt;androidx.wear.protolayout.expression.DynamicBuilders.DynamicColor&gt;']]"
23+
name="managedName"
24+
>
25+
GetColor
26+
</attr>
27+
<attr
28+
path="/api/package[@name='androidx.wear.protolayout.expression']/class[@name='DynamicDataMap']/method[@name='get' and count(parameter)=1 and parameter[1][@type='androidx.wear.protolayout.expression.DynamicDataKey&lt;androidx.wear.protolayout.expression.DynamicBuilders.DynamicBool&gt;']]"
29+
name="managedName"
30+
>
31+
GetBoolean
32+
</attr>
33+
<attr
34+
path="/api/package[@name='androidx.wear.protolayout.expression']/class[@name='DynamicDataMap']/method[@name='get' and count(parameter)=1 and parameter[1][@type='androidx.wear.protolayout.expression.DynamicDataKey&lt;androidx.wear.protolayout.expression.DynamicBuilders.DynamicFloat&gt;']]"
35+
name="managedName"
36+
>
37+
GetFloat
38+
</attr>
39+
<attr
40+
path="/api/package[@name='androidx.wear.protolayout.expression']/class[@name='DynamicDataMap']/method[@name='get' and count(parameter)=1 and parameter[1][@type='androidx.wear.protolayout.expression.DynamicDataKey&lt;androidx.wear.protolayout.expression.DynamicBuilders.DynamicInt32&gt;']]"
41+
name="managedName"
42+
>
43+
GetInteger
44+
</attr>
45+
<attr
46+
path="/api/package[@name='androidx.wear.protolayout.expression']/class[@name='DynamicDataMap']/method[@name='get' and count(parameter)=1 and parameter[1][@type='androidx.wear.protolayout.expression.DynamicDataKey&lt;androidx.wear.protolayout.expression.DynamicBuilders.DynamicString&gt;']]"
47+
name="managedName"
48+
>
49+
GetString
50+
</attr>
51+
<attr
52+
path="/api/package[@name='androidx.wear.protolayout.expression']/class[@name='DynamicDataMap']/method[@name='get' and count(parameter)=1 and parameter[1][@type='androidx.wear.protolayout.expression.DynamicDataKey&lt;androidx.wear.protolayout.expression.DynamicBuilders.DynamicDuration&gt;']]"
53+
name="managedName"
54+
>
55+
GetDuration
56+
</attr>
57+
<attr
58+
path="/api/package[@name='androidx.wear.protolayout.expression']/class[@name='DynamicDataMap']/method[@name='get' and count(parameter)=1 and parameter[1][@type='androidx.wear.protolayout.expression.DynamicDataKey&lt;androidx.wear.protolayout.expression.DynamicBuilders.DynamicInstant&gt;']]"
59+
name="managedName"
60+
>
61+
GetInstant
62+
</attr>
2163

2264
<remove-node
2365
path="/api/package[@name='androidx.wear.protolayout.expression']/interface[@name='DynamicBuilders.DynamicZonedDateTime']"

0 commit comments

Comments
 (0)