Hey, coincidentally I just upgraded to Android SDK31 today… why not wait until nearly the last minute?
It was a wild ride, took most of the day. Let me tell you what I did, what I found.
First of all, I’m using Unity2020.3.41 (hereinafter referred to Unity*) because that’s all the further I need to go forward right now.
I found that Unity* only accepts up to SDK30.0.3 tools, but will build using those tools and SDK31.
Next I found that Android Studio will not install anything except Android 33 FIRST, and only after you get 33 can you uninstall 33 and simultaneously install earlier versions.
So I went to a bastardized setup where I used the Unity-provided installs for everything except the Android SDK, for which I downloaded SDK 31 and the tools for 30, putting it over in ~/Library/Android/sdk… and it worked!
I have now built and tested two games to Android 64bit IL2CPP and they have been accepted by the Google Play store internal testing track with zero warnings, but I have not yet tried to push them to production, which I think triggers a few more SDK checks.
EDIT from 8/23/2023 - I upgraded the above from SDK31 to SDK33 as follows: Without telling Unity anything I used Android Studio to remove SDK31 fully and to install SDK33.
EDIT from 8/21/2024 - once again I upgraded my SDK33 installation by using Android Studio. I REMOVED SDK33 and fully installed SDK34 without touching anything in Unity, then reimported all and rebuilt.