Commit a6a23bb
authored
[Xamarin.Android.Tools.AndroidSdk] Default SDK component versions (#93)
Context: https://issuetracker.google.com/issues/150189789
Context: xamarin/androidtools@3f51412
We have discovered an issue when installing Visual Studio for Mac
on macOS: certain versions of the installer will install the *latest*
Android SDK Build-tools package, currently r30.0.0.
This is a problem because recent versions of Xamarin.Android will use
`apksigner` to sign `Mono.Android.Platform.ApiLevel_*.apk` files, so
that they can be installed on API-30 targets -- API-30 targets no
longer like `jarsigner`-signed `.apk` files -- but the `apksigner`
included in the Build-tools r30 package requires JDK 9.
Visual Studio for Mac is not ready to migrate to JDK >= 9.
Consequently, on such installation environments, the Xamarin.Android
shared runtime cannot be created, as `apksigner` won't run:
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/apksigner/ApkSignerTool
has been compiled by a more recent version of the Java Runtime (class file version 53.0),
this version of the Java Runtime only recognizes class file versions up to 52.0
What we need is a way for the macOS installer to share the same
[default Android SDK component versions as Xamarin.Android itself][0].
This *could* plausibly be done by adding a git submodule reference from
the xamarin/xamarin-android repo to the macOS installer, but this is
undesirable.
Instead, both the the xamarin-android repo and the installer repo's
have existing git submodules graphs which include the
xamarin/xamarin-android-tools repo.
Add a new `Xamarin.Android.Tools.Versions.props` file, which contains
the default Android SDK component versions, as an MSBuild project file:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<AndroidSdkBuildToolsVersion Condition="'$(AndroidSdkBuildToolsVersion)' == ''">29.0.2</AndroidSdkBuildToolsVersion>
…
With this file in place, we can update the macOS installer to use
`Xamarin.Android.Tools.Versions.props` as the "source of truth" for
which versions to install. In particular, we'll set the default
Build-tools version to 29.0.2, *not* 30.0.0, thus avoiding the problem
with `apksigner` invocations.
In the future, when `Xamarin.Android.Tools.Versions.props` is changed
*all* repos referencing xamarin/xamarin-android-tools will need to be
updated, so that everything can be on the same "page".
[0]: https://github.com/xamarin/xamarin-android/blob/5f78740d74e19b235aad62c8ea8e314c9c78ddce/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in#L18-L211 parent 32a1e2c commit a6a23bb
File tree
2 files changed
+25
-0
lines changed- src/Xamarin.Android.Tools.AndroidSdk
2 files changed
+25
-0
lines changedLines changed: 5 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
37 | 37 | | |
38 | 38 | | |
39 | 39 | | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
40 | 45 | | |
Lines changed: 20 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
0 commit comments