Skip to content

Is there any documentation or reference file for the minimum, recommended, or maximum Android tooling versions? #11630

@beeradmoore

Description

@beeradmoore

Android framework version

Other

Affected platform version

N/A

Description

I was wondering if there is any information about keeping up to date with Android tooling versions recommended for net-android. I guess the tl;dr; of this is along the lines of "What Xcode version should I install?" from iOS-land.

I was setting up our new CI/CD pipeline today and I was using sdkmanager to install required tools. I had no idea what version of build-tools, cmdline-tools, platform-tools, etc to install. The only thing I was sure of was platforms;android-36 for today and platforms;android-37 for when we go to test out .NET 11 previews.

This made me wonder about what my own system has installed. My versions were not the latest, some things seems a few versions behind. I asked another dev and we had mix matched versions of this.

For our small team we manage .NET SDK and Xcode versions manually and I just post a new Slack message that we are now using version X. I have never updated anyone on Android tooling outside of platforms;android-35 to platforms;android-36.

I know there is InstallAndroidDependencies, but I don't know what dependencies that is installing. I assume that had to be written down somewhere so I did some digging and I came across Configuration.props in this repo. I am unsure if it is part of installing I did also come across Xamarin.Installer.AndroidSDK but that looks like it might be tooling specific to this repository.

When looking at the state of the file at tag 36.1.69 of Configuration.props I could see some interesting things. That is assuming the file is relevant for the end-user developers and not the people building this repository.

<AndroidLatestStableApiLevel Condition="'$(AndroidLatestStableApiLevel)' == ''">36</AndroidLatestStableApi>
<XABuildToolsFolder Condition="'$(XABuildToolsFolder)' == ''">36.0.0</XABuildToolsFolder>
<CommandLineToolsFolder Condition=" '$(CommandLineToolsFolder)' == '' ">19.0</CommandLineToolsFolder>
<CommandLineToolsVersion Condition=" '$(CommandLineToolsVersion)' == '' ">13114758_latest</CommandLineToolsVersion>
(this one is from main)
<_XAAndroidNdkPkgRevision>28.2.13676358</_XAAndroidNdkPkgRevision>

My first question would be, how does Android tooling versioning work?

Is there a single version that developers should be using (eg, build tools 36.0.0) because it is what we are told to use. Does using the latest version (build-tools;37.0.0) potentially pose problems and we should avoid it, or should we always be using the latest.

My second question would be if there is specific versions we should use, or specific minimums, or specific maximums, where would we be able to find them?

I had a plan to build a tool that on release grabs Configuration.props from the tagged branch and pulls the specific information that I we would care about and then have post to our internal channels. But if that file is irrelevant for what teams should be using for their own projects then I'll think of something else.

Steps to Reproduce

N/A

Did you find any workaround?

No response

Relevant log output

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageIssues that need to be assigned.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions