You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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-L21
0 commit comments