Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[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-L21
- Loading branch information
Shouldn't NDK be updated as rest of the tools are using 21.3 (21d) already - dotnet/android@1c9d566
FYI @jonpryor