diff --git a/src/Xamarin.Android.Tools.AndroidSdk/AndroidVersions.cs b/src/Xamarin.Android.Tools.AndroidSdk/AndroidVersions.cs index 9896288..e240aba 100644 --- a/src/Xamarin.Android.Tools.AndroidSdk/AndroidVersions.cs +++ b/src/Xamarin.Android.Tools.AndroidSdk/AndroidVersions.cs @@ -92,7 +92,8 @@ static bool MatchesFrameworkVersion (AndroidVersion version, string frameworkVer public int? GetApiLevelFromId (string id) { return installedVersions.FirstOrDefault (v => MatchesId (v, id))?.ApiLevel ?? - KnownVersions.FirstOrDefault (v => MatchesId (v, id))?.ApiLevel; + KnownVersions.FirstOrDefault (v => MatchesId (v, id))?.ApiLevel ?? + (int.TryParse (id, out int apiLevel) ? apiLevel : default (int?)); } static bool MatchesId (AndroidVersion version, string id) @@ -105,7 +106,8 @@ static bool MatchesId (AndroidVersion version, string id) public string? GetIdFromApiLevel (int apiLevel) { return installedVersions.FirstOrDefault (v => v.ApiLevel == apiLevel)?.Id ?? - KnownVersions.FirstOrDefault (v => v.ApiLevel == apiLevel)?.Id; + KnownVersions.FirstOrDefault (v => v.ApiLevel == apiLevel)?.Id ?? + apiLevel.ToString (); } // Sometimes, e.g. when new API levels are introduced, the "API level" is a letter, not a number, @@ -115,7 +117,8 @@ static bool MatchesId (AndroidVersion version, string id) if (int.TryParse (apiLevel, out var platform)) return GetIdFromApiLevel (platform); return installedVersions.FirstOrDefault (v => MatchesId (v, apiLevel))?.Id ?? - KnownVersions.FirstOrDefault (v => MatchesId (v, apiLevel))?.Id; + KnownVersions.FirstOrDefault (v => MatchesId (v, apiLevel))?.Id ?? + apiLevel; } public string? GetIdFromFrameworkVersion (string frameworkVersion) diff --git a/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidVersionsTests.cs b/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidVersionsTests.cs index a3cd293..1ebe8f2 100644 --- a/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidVersionsTests.cs +++ b/tests/Xamarin.Android.Tools.AndroidSdk-Tests/AndroidVersionsTests.cs @@ -202,9 +202,9 @@ public void GetIdFromApiLevel () Assert.AreEqual ("II", versions.GetIdFromApiLevel ("14")); Assert.AreEqual ("II", versions.GetIdFromApiLevel ("II")); - Assert.AreEqual (null, versions.GetIdFromApiLevel (-1)); - Assert.AreEqual (null, versions.GetIdFromApiLevel ("-1")); - Assert.AreEqual (null, versions.GetIdFromApiLevel ("D")); + Assert.AreEqual ("-1", versions.GetIdFromApiLevel (-1)); + Assert.AreEqual ("-1", versions.GetIdFromApiLevel ("-1")); + Assert.AreEqual ("D", versions.GetIdFromApiLevel ("D")); // via KnownVersions Assert.AreEqual ("11", versions.GetIdFromApiLevel (11));