Skip to content

Commit dab495f

Browse files
authored
[Mono.Android] Bind and enumify API-34 (dotnet#8116)
Context: https://developer.android.com/about/versions/14 Context: https://android-developers.googleblog.com/2023/06/android-14-beta-3-and-platform-stability.html Android 14 Developer Beta 3 has been released. * [API diff vs. API-33][0] * [API diff vs. API-UpsideDownCake Beta 2][1] (3c1a985) The Android 14 Developer Preview Program Overview [Timeline and updates][2] section suggests the following timeline: * Feb/Mar: Developer Previews * April/May: Unstable Betas * June: Beta 3 with "First [Platform Stability][3] milestone including final APIs and behaviors. Play publishing also opens." * July: Near-final builds for final testing * ???: Final ~~ Acceptable Breakages ~~ Many methods in `Android.Content.PM.PackageManager` and the `Dalvik.SystemInterop.DexFile` type were un-deprecated. Interface method `Java.Lang.Reflect.IAnnotatedElement.IsAnnotationPresent` was given a default implementation, which we enabled in 3c1a985. `RequiresPermission` was removed from `AlarmManager.setExact(…)` in `annotations.zip`. `RequiresPermission` for `WallpaperManager.*` was changed: <!-- API-33 --> <val name="value" val="&quot;android.permission.READ_EXTERNAL_STORAGE&quot;" /> <!-- API-34 --> <val name="anyOf" val="{&quot;android.permission.MANAGE_EXTERNAL_STORAGE&quot;, &quot;android.permission.READ_WALLPAPER_INTERNAL&quot;}" /> We have [previously decided][4] that we do not use these values for anything and are not updating this. ~~ Enumification? ~~ While reviewing, we discovered that the *past four years* of enumification was incomplete: we did the work, but the enums weren't applied. See e.g. [`TextView.LineBreakWordStyle Property`][5], which is of type `int`, but *should* have been of enum type `Android.Graphics.Text.LineBreakWordStyle`, via df6c716: 33,android/widget,TextView,setLineBreakWordStyle,lineBreakWordStyle,Android.Graphics.Text.LineBreakWordStyle The reason for this is that `methodmap.csv` column 2 should be a *Java* `.`d package name, but we used the JNI `/`d name. We can't fix these (API and ABI breaks are bad), and we are still exploring what we can do to address this. This oversight was caught in time that API-34 members are correctly enumified. [0]: https://developer.android.com/sdk/api_diff/34/changes [1]: https://developer.android.com/sdk/api_diff/34-incr/changes [2]: https://web.archive.org/web/20230616200934/https://developer.android.com/about/versions/14/overview#timeline [3]: https://web.archive.org/web/20230616200934/https://developer.android.com/about/versions/14/overview#platform_stability [4]: dotnet#6775 [5]: https://learn.microsoft.com/dotnet/api/android.widget.textview.LineBreakWordStyle?view=xamarin-android-sdk-13
1 parent 6e375d5 commit dab495f

File tree

21 files changed

+4779
-2980
lines changed

21 files changed

+4779
-2980
lines changed

Configuration.Override.props.in

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66
kept consistent with each other, lest Bad Things Happen™
77
-->
88
<!-- The default Android API level to bind in src/Mono.Android -->
9-
<AndroidApiLevel>33</AndroidApiLevel>
9+
<AndroidApiLevel>34</AndroidApiLevel>
1010
<!-- The Xamarin.Android $(TargetFrameworkVersion) value that corresponds to $(AndroidApiLevel) -->
11-
<AndroidFrameworkVersion>v13.0</AndroidFrameworkVersion>
11+
<AndroidFrameworkVersion>v14.0</AndroidFrameworkVersion>
1212
<!-- The default Android API "id" that corresponds to $(AndroidApiLevel) -->
13-
<AndroidPlatformId>33</AndroidPlatformId>
13+
<AndroidPlatformId>34</AndroidPlatformId>
1414

1515
<!--
1616
Colon-separated list of ABIs to build the mono JIT for.

Configuration.props

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@
2525
<!-- The min API level supported by Microsoft.Android.Sdk -->
2626
<AndroidMinimumDotNetApiLevel Condition="'$(AndroidMinimumDotNetApiLevel)' == ''">21</AndroidMinimumDotNetApiLevel>
2727
<!-- *Latest* *stable* API level binding that we support; used when building src/Xamarin.Android.Build.Tasks -->
28-
<AndroidLatestStableApiLevel Condition="'$(AndroidLatestStableApiLevel)' == ''">33</AndroidLatestStableApiLevel>
28+
<AndroidLatestStableApiLevel Condition="'$(AndroidLatestStableApiLevel)' == ''">34</AndroidLatestStableApiLevel>
2929
<AndroidLatestStablePlatformId Condition="'$(AndroidLatestStablePlatformId)' == ''">$(AndroidLatestStableApiLevel)</AndroidLatestStablePlatformId>
30-
<AndroidLatestStableFrameworkVersion Condition="'$(AndroidLatestStableFrameworkVersion)'==''">v13.0</AndroidLatestStableFrameworkVersion>
30+
<AndroidLatestStableFrameworkVersion Condition="'$(AndroidLatestStableFrameworkVersion)'==''">v14.0</AndroidLatestStableFrameworkVersion>
3131
<!-- *Latest* *unstable* API level binding that we support; this can be the same as *stable* -->
3232
<AndroidLatestUnstableApiLevel Condition="'$(AndroidLatestUnstableApiLevel)' == ''">34</AndroidLatestUnstableApiLevel>
33-
<AndroidLatestUnstablePlatformId Condition="'$(AndroidLatestUnstablePlatformId)' == ''">UpsideDownCake</AndroidLatestUnstablePlatformId>
34-
<AndroidLatestUnstableFrameworkVersion Condition="'$(AndroidLatestUnstableFrameworkVersion)'==''">v13.0.99</AndroidLatestUnstableFrameworkVersion>
33+
<AndroidLatestUnstablePlatformId Condition="'$(AndroidLatestUnstablePlatformId)' == ''">$(AndroidLatestStableApiLevel)</AndroidLatestUnstablePlatformId>
34+
<AndroidLatestUnstableFrameworkVersion Condition="'$(AndroidLatestUnstableFrameworkVersion)'==''">v14.0</AndroidLatestUnstableFrameworkVersion>
3535
<!-- The default API level used for $(TargetPlatformVersion) -->
36-
<AndroidDefaultTargetDotnetApiLevel Condition=" '$(AndroidDefaultTargetDotnetApiLevel)' == '' ">33</AndroidDefaultTargetDotnetApiLevel>
36+
<AndroidDefaultTargetDotnetApiLevel Condition=" '$(AndroidDefaultTargetDotnetApiLevel)' == '' ">34</AndroidDefaultTargetDotnetApiLevel>
3737
<!-- The API level and TargetFrameworkVersion for the default Mono.Android.dll build -->
3838
<AndroidApiLevel Condition=" '$(AndroidApiLevel)' == '' ">$(AndroidLatestStableApiLevel)</AndroidApiLevel>
3939
<AndroidPlatformId Condition=" '$(AndroidPlatformId)' == '' ">$(AndroidLatestStablePlatformId)</AndroidPlatformId>

build-tools/Xamarin.Android.Tools.BootstrapTasks/Xamarin.Android.Tools.BootstrapTasks/CheckApiCompatibility.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public sealed class CheckApiCompatibility : Task
3131
{ "v12.0", "v11.0" },
3232
{ "v12.1", "v12.0" },
3333
{ "v13.0", "v12.1" },
34-
{ "v13.0.99", "v13.0" },
34+
{ "v14.0", "v13.0" },
3535
};
3636

3737
static readonly string assemblyToValidate = "Mono.Android.dll";

build-tools/api-merge/merge-configuration.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<File Path="api-31.xml.in" Level="31" />
2323
<File Path="api-32.xml.in" Level="32" />
2424
<File Path="api-33.xml.in" Level="33" />
25-
<File Path="api-UpsideDownCake.xml.in" Level="34" />
25+
<File Path="api-34.xml.in" Level="34" />
2626
</Inputs>
2727
<Outputs>
2828
<File Path="api-19.xml" LastLevel="19" />
@@ -40,6 +40,6 @@
4040
<File Path="api-31.xml" LastLevel="31" />
4141
<File Path="api-32.xml" LastLevel="32" />
4242
<File Path="api-33.xml" LastLevel="33" />
43-
<File Path="api-UpsideDownCake.xml" LastLevel="34" />
43+
<File Path="api-34.xml" LastLevel="34" />
4444
</Outputs>
4545
</Configuration>

build-tools/api-xml-adjuster/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ API_XML_TOOL = $(BUILDBIN)/api-xml-adjuster.exe
1717
RUNTIME = mono --debug
1818
RUN_CLASS_PARSE = $(RUNTIME) $(CLASS_PARSE)
1919
RUN_API_XML_TOOL = $(RUNTIME) $(API_XML_TOOL)
20-
API_LEVELS = 33 UpsideDownCake
20+
API_LEVELS = 33 34
2121

2222
XML_OUTPUT_DIR = .
2323

build-tools/automation/yaml-templates/stage-msbuild-emulator-tests.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ stages:
3838
installLegacyDotNet: false
3939
restoreNUnitConsole: false
4040
updateMono: false
41-
androidSdkPlatforms: $(androidSdkPlatforms)
4241
xaSourcePath: ${{ parameters.xaSourcePath }}
4342
repositoryAlias: ${{ parameters.repositoryAlias }}
4443
commit: ${{ parameters.commit }}
@@ -99,7 +98,6 @@ stages:
9998
installLegacyDotNet: false
10099
restoreNUnitConsole: false
101100
updateMono: false
102-
androidSdkPlatforms: $(androidSdkPlatforms)
103101
xaSourcePath: ${{ parameters.xaSourcePath }}
104102
repositoryAlias: ${{ parameters.repositoryAlias }}
105103
commit: ${{ parameters.commit }}

build-tools/automation/yaml-templates/variables.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,6 @@ variables:
4545
- name: DotNetNUnitCategories
4646
value: '& TestCategory != DotNetIgnore & TestCategory != HybridAOT & TestCategory != MkBundle & TestCategory != MonoSymbolicate & TestCategory != StaticProject & TestCategory != SystemApplication'
4747
- name: DefaultTestSdkPlatforms # Comma-separated SDK Platform(s) to install on test agents (no spaces)
48-
value: 33,UpsideDownCake
48+
value: 33,34
4949
- name: ExcludedNUnitCategories
5050
value: '& cat != DotNetIgnore & cat != HybridAOT & cat != MkBundle & cat != MonoSymbolicate & cat != StaticProject & cat != SystemApplication'

build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class BuildAndroidPlatforms
4444
new AndroidPlatform (apiName: "S", apiLevel: 31, platformID: "31", include: "v12.0"),
4545
new AndroidPlatform (apiName: "Sv2", apiLevel: 32, platformID: "32", include: "v12.1"),
4646
new AndroidPlatform (apiName: "Tiramisu", apiLevel: 33, platformID: "33", include: "v13.0", framework: "v13.0"),
47-
new AndroidPlatform (apiName: "UpsideDownCake", apiLevel: 34, platformID: "UpsideDownCake", include: "v13.0.99",framework: "v13.0.99", stable: false),
47+
new AndroidPlatform (apiName: "UpsideDownCake", apiLevel: 34, platformID: "34", include: "v14.0", framework: "v14.0"),
4848
};
4949

5050
public static readonly Dictionary<string, uint> NdkMinimumAPIMap = new Dictionary<string, uint> {

build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public AndroidToolchain ()
7373
new AndroidPlatformComponent ("platform-31_r01", apiLevel: "31", pkgRevision: "1"),
7474
new AndroidPlatformComponent ("platform-32_r01", apiLevel: "32", pkgRevision: "1"),
7575
new AndroidPlatformComponent ("platform-33_r02", apiLevel: "33", pkgRevision: "2"),
76-
new AndroidPlatformComponent ("platform-UpsideDownCake_r04", apiLevel: "UpsideDownCake", pkgRevision: "4"),
76+
new AndroidPlatformComponent ("platform-34-ext7_r01", apiLevel: "34", pkgRevision: "1"),
7777

7878
new AndroidToolchainComponent ("sources-33_r01",
7979
destDir: Path.Combine ("sources", "android-33"),

0 commit comments

Comments
 (0)