This repository has been archived by the owner on Mar 8, 2021. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Inter-API & Reference API changes for mono:2018-04
Context: dotnet/android#1503 Context: https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android/1126/ Context: mono/mono@ca9cbdc The [bump to mono:2018-04][0] introduced two "incompatible" changes which impact our API Compatibility checks: 1. `mono-api-html.exe` behavior has changed, and 2. `System.String.Concat(object, object, object, object)` was removed. `mono-api-html.exe` from mono:2018-02 and before had a bug wherein it didn't properly handle nested types. The immediate affect of this was that the `Android.App.Notification.Icon` property change which was handled/ignored in `inter-api-extra-v5.1-v6.0.txt` was seemingly ignored, resulting in an API compatibility failure: <h1>### API BREAK BETWEEN v5.1 and v6.0</h1> <h3>Type Changed: Android.App.Notification.Action.Action</h3> <p>Modified properties:</p> <pre> <div data-is-breaking> public <span class='removed removed-inline removed-breaking-inline'>int</span> <span class='added '>Android.Graphics.Drawables.Icon</span> Icon { get; <span class='removed removed-inline removed-breaking-inline'>set;</span> } </div></pre> Note that the `mono-api-html` output here is still somewhat buggy: *there is no* `Android.App.Notification.Action.Action` type -- nested type names appear to be duplicated now, instead of skipped entirely -- so it's possible that future `mono-api-html` changes may break us. Other errors were being reported as well [^0], all of which are *reasonable and correct* but weren't needed with mono:2018-02's `mono-api-html`, which is...worrying, but ¯\_(ツ)_/¯. The `System.String.Concat(object, object, object, object)` removal is a bit of a misnomer: *there is no* `String.Concat()` method which takes four `object` parameters. There *was* a `String.Concat()` method which took *three* `object` parameters and an `__arglist` parameter, and the `__arglist`-including overload was removed because [it was deemed safe to remove][1]: > @mark-safar: I let the change in because it believe it's safe to > remove (I don't think our AOT compiler support that fully either). [^0]: Brief summary of most "new" changes which `mono-api-html` from mono:2018-02 didn't need but are reported with mono:2018-04: <h1>### API BREAK BETWEEN v4.3 and v4.4</h1> <h3>Type Changed: Android.Media.RemoteControlClient.MetadataEditor</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Object</span> <span class='added '>Android.Media.MediaMetadataEditor</span> </div></pre> <h3>Type Changed: Android.Views.Surface.OutOfResourcesException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.RuntimeException</span> </div></pre> <h3>Type Changed: Java.Lang.ClassNotFoundException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.IllegalAccessException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.InstantiationException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.NoSuchFieldException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.NoSuchMethodException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h3>Type Changed: Java.Lang.Reflect.InvocationTargetException</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Exception</span> <span class='added '>Java.Lang.ReflectiveOperationException</span> </div></pre> <h1>### API BREAK BETWEEN v4.4.87 and v5.0</h1> <h3>Type Changed: Android.OS.Bundle</h3> <p>Modified base type:</p> <pre> <div data-is-breaking> <span class='removed removed-inline removed-breaking-inline'>Java.Lang.Object</span> <span class='added '>Android.OS.BaseBundle</span> </div></pre> <h1>### API BREAK BETWEEN v5.1 and v6.0</h1> <h3>Type Changed: Android.App.Notification.Action.Action</h3> <p>Modified properties:</p> <pre> <div data-is-breaking> public <span class='removed removed-inline removed-breaking-inline'>int</span> <span class='added '>Android.Graphics.Drawables.Icon</span> Icon { get; <span class='removed removed-inline removed-breaking-inline'>set;</span> } </div></pre> [0]: dotnet/android#1503 [1]: dotnet/android#2051 (comment)
- Loading branch information