-
Notifications
You must be signed in to change notification settings - Fork 31
Add a .props file which contains the Android SDK Tools versions. #93
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Contributor
Author
|
failure does not look related. |
Contributor
Author
|
/azp run |
|
Azure Pipelines successfully started running 1 pipeline(s). |
Contributor
|
This should also add a |
This commit is part of an effort to make sure all of our tooling uses the same android sdk versions. It adds a MSbuild `.props` file which contains the versions of parts of the Android Sdk. It is these versions which will be installed/used by default when a user first installs the product, or if they do not specify other versions in their `csproj`. If the new file is changed ALL repos referencing this one will need to be updated. This includes all repos which pull in this one via `androidtools`.
jonpryor
pushed a commit
that referenced
this pull request
Jul 1, 2020
Context: https://issuetracker.google.com/issues/150189789 Context: https://github.com/xamarin/androidtools/commit/3f51412d5f213c0267fc597623f3430437d6452e 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
jonpryor
pushed a commit
that referenced
this pull request
Jul 1, 2020
Context: https://issuetracker.google.com/issues/150189789 Context: https://github.com/xamarin/androidtools/commit/3f51412d5f213c0267fc597623f3430437d6452e 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit is part of an effort to make sure all of our tooling uses
the same android sdk versions. It adds a MSbuild
.propsfilewhich contains the versions of parts of the Android Sdk. It is
these versions which will be installed/used by default when a
user first installs the product, or if they do not specify
other versions in their
csproj.If the new file is changed ALL repos referencing this one
will need to be updated. This includes all repos which pull
in this one via
androidtools.