dotnet / dotnet/android

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

Open
#11,630 9 comments 0 reactions 0 assignees View on GitHub
needs-triage
Dominant language
C#
Stars
2.1k
Forks
579
Avg merge
1d 20h
Merged PRs (30d)
257

Description

### 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](https://developer.android.com/tools/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](https://github.com/dotnet/android/blob/main/Configuration.props) in this repo. I am unsure if it is part of installing I did also come across [Xamarin.Installer.AndroidSDK](https://github.com/dotnet/android/tree/main/src/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](https://github.com/dotnet/android/blob/36.1.69/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.

```xml
36
36.0.0
19.0
13114758_latest
(this one is from main)
<_XAAndroidNdkPkgRevision>28.2.13676358
```

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

```shell

```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.