diff --git a/Configuration.props b/Configuration.props
index b0bf7c45f52..f8c712939b9 100644
--- a/Configuration.props
+++ b/Configuration.props
@@ -15,7 +15,7 @@
9.1.199
- v2.3
+ v4.4
<_IsRunningNuGetRestore Condition="$(RestoreTaskAssemblyFile.EndsWith('NuGet.exe', StringComparison.InvariantCultureIgnoreCase))">True
28
diff --git a/Documentation/building/configuration.md b/Documentation/building/configuration.md
index 10754673c61..9fd48c1c910 100644
--- a/Documentation/building/configuration.md
+++ b/Documentation/building/configuration.md
@@ -29,7 +29,7 @@ Overridable MSBuild properties include:
* `$(AndroidFirstFrameworkVersion)`: The first `$(TargetFrameworkVersion)`
which will be built by `make jenkins` and included in the installer.
- Currently `v2.3`, but will be changed when we drop support for API-10.
+ Currently `v4.4`.
This controls what is included in `build-tools/create-vsix` packages.
* `$(AndroidFrameworkVersion)`: The Xamarin.Android `$(TargetFrameworkVersion)`
diff --git a/build-tools/scripts/BuildEverything.mk b/build-tools/scripts/BuildEverything.mk
index 3f82244d8ac..29485461a5c 100644
--- a/build-tools/scripts/BuildEverything.mk
+++ b/build-tools/scripts/BuildEverything.mk
@@ -23,13 +23,13 @@ ZIP_OUTPUT = $(ZIP_OUTPUT_BASENAME).$(ZIP_EXTENSION)
## The following values *must* use SPACE, **not** TAB, to separate values.
# $(ALL_API_LEVELS) and $(ALL_FRAMEWORKS) must be kept in sync w/ each other
-ALL_API_LEVELS = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
+ALL_API_LEVELS = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
# this was different from ALL_API_LEVELS when API Level 26 was "O". Same could happen in the future.
-ALL_PLATFORM_IDS = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
+ALL_PLATFORM_IDS = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
# supported api levels
-ALL_FRAMEWORKS = _ _ _ _ _ _ _ _ _ v2.3 _ _ _ _ v4.0.3 v4.1 v4.2 v4.3 v4.4 v4.4.87 v5.0 v5.1 v6.0 v7.0 v7.1 v8.0 v8.1 v9.0
-API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24 25 26 27 28
-STABLE_API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24 25 26 27 28
+ALL_FRAMEWORKS = _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ v4.4 v4.4.87 v5.0 v5.1 v6.0 v7.0 v7.1 v8.0 v8.1 v9.0
+API_LEVELS = 19 20 21 22 23 24 25 26 27 28
+STABLE_API_LEVELS = 19 20 21 22 23 24 25 26 27 28
## The preceding values *must* use SPACE, **not** TAB, to separate values.
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs
index 9f7ea19806f..e2f1fcbe914 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BuildTest.cs
@@ -2117,15 +2117,15 @@ public void CheckTargetFrameworkVersion ([Values (true, false)] bool isRelease)
IsRelease = isRelease,
};
proj.SetProperty ("AndroidUseLatestPlatformSdk", "False");
- proj.SetProperty ("TargetFrameworkVersion", "v2.3");
using (var builder = CreateApkBuilder (Path.Combine ("temp", TestContext.CurrentContext.Test.Name))) {
- if (!Directory.Exists (Path.Combine (builder.FrameworkLibDirectory, "xbuild-frameworks", "MonoAndroid", "v2.3")))
+ builder.GetTargetFrameworkVersionRange (out var _, out string firstFrameworkVersion, out var _, out string lastFrameworkVersion);
+ proj.SetProperty ("TargetFrameworkVersion", firstFrameworkVersion);
+ if (!Directory.Exists (Path.Combine (builder.FrameworkLibDirectory, "xbuild-frameworks", "MonoAndroid", firstFrameworkVersion)))
Assert.Ignore ("This is a Pull Request Build. Ignoring test.");
Assert.IsTrue (builder.Build (proj), "Build should have succeeded.");
- Assert.IsTrue (StringAssertEx.ContainsText (builder.LastBuildOutput, $"Output Property: TargetFrameworkVersion=v2.3"), "TargetFrameworkVerson should be v2.3");
- Assert.IsTrue (builder.Build (proj, parameters: new [] { "TargetFrameworkVersion=v4.4" }), "Build should have succeeded.");
- Assert.IsTrue (StringAssertEx.ContainsText (builder.LastBuildOutput, $"Output Property: TargetFrameworkVersion=v4.4"), "TargetFrameworkVerson should be v4.4");
-
+ Assert.IsTrue (StringAssertEx.ContainsText (builder.LastBuildOutput, $"Output Property: TargetFrameworkVersion={firstFrameworkVersion}"), $"TargetFrameworkVerson should be {firstFrameworkVersion}");
+ Assert.IsTrue (builder.Build (proj, parameters: new [] { $"TargetFrameworkVersion={lastFrameworkVersion}" }), "Build should have succeeded.");
+ Assert.IsTrue (StringAssertEx.ContainsText (builder.LastBuildOutput, $"Output Property: TargetFrameworkVersion={lastFrameworkVersion}"), $"TargetFrameworkVersion should be {lastFrameworkVersion}");
}
}
@@ -2553,14 +2553,15 @@ public void CheckTargetFrameworkVersion ()
IsRelease = true,
};
proj.SetProperty ("AndroidUseLatestPlatformSdk", "False");
- proj.SetProperty ("TargetFrameworkVersion", "v2.3");
using (var builder = CreateApkBuilder (Path.Combine ("temp", TestContext.CurrentContext.Test.Name))) {
- if (!Directory.Exists (Path.Combine (builder.FrameworkLibDirectory, "xbuild-frameworks", "MonoAndroid", "v2.3")))
+ builder.GetTargetFrameworkVersionRange (out var _, out string firstFrameworkVersion, out var _, out string lastFrameworkVersion);
+ proj.SetProperty ("TargetFrameworkVersion", firstFrameworkVersion);
+ if (!Directory.Exists (Path.Combine (builder.FrameworkLibDirectory, "xbuild-frameworks", "MonoAndroid", firstFrameworkVersion)))
Assert.Ignore ("This is a Pull Request Build. Ignoring test.");
Assert.IsTrue (builder.Build (proj), "Build should have succeeded.");
- Assert.IsTrue (StringAssertEx.ContainsText (builder.LastBuildOutput, $"Output Property: TargetFrameworkVersion=v2.3"), "TargetFrameworkVerson should be v2.3");
- Assert.IsTrue (builder.Build (proj, parameters: new [] { "TargetFrameworkVersion=v4.4" }), "Build should have succeeded.");
- Assert.IsTrue (StringAssertEx.ContainsText (builder.LastBuildOutput, $"Output Property: TargetFrameworkVersion=v4.4"), "TargetFrameworkVerson should be v4.4");
+ Assert.IsTrue (StringAssertEx.ContainsText (builder.LastBuildOutput, $"Output Property: TargetFrameworkVersion={firstFrameworkVersion}"), $"TargetFrameworkVersion should be {firstFrameworkVersion}");
+ Assert.IsTrue (builder.Build (proj, parameters: new [] { $"TargetFrameworkVersion={lastFrameworkVersion}" }), "Build should have succeeded.");
+ Assert.IsTrue (StringAssertEx.ContainsText (builder.LastBuildOutput, $"Output Property: TargetFrameworkVersion={lastFrameworkVersion}"), $"TargetFrameworkVersion should be {lastFrameworkVersion}");
}
}
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs
index 6187516ab26..d99ae98351e 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Common/Builder.cs
@@ -172,33 +172,71 @@ public bool CrossCompilerAvailable (string supportedAbis)
return result;
}
+ public string FirstTargetFrameworkVersion ()
+ {
+ GetTargetFrameworkVersionRange (out string _, out string firstFrameworkVersion, out string _, out string _);
+ return firstFrameworkVersion;
+ }
+
+ public string FirstTargetFrameworkVersion (out string apiLevel)
+ {
+ GetTargetFrameworkVersionRange (out apiLevel, out string firstFrameworkVersion, out string _, out string _);
+ return firstFrameworkVersion;
+ }
+
public string LatestTargetFrameworkVersion () {
- return LatestTargetFrameworkVersion (out string apiLevel);
+ GetTargetFrameworkVersionRange (out string _, out string _, out string _, out string lastFrameworkVersion);
+ return lastFrameworkVersion;
}
public string LatestTargetFrameworkVersion (out string apiLevel) {
- Version latest = new Version (1, 0);
- apiLevel = "1";
+ GetTargetFrameworkVersionRange (out string _, out string _, out apiLevel, out string lastFrameworkVersion);
+ return lastFrameworkVersion;
+ }
+
+ public void GetTargetFrameworkVersionRange (out string firstApiLevel, out string firstFrameworkVersion, out string lastApiLevel, out string lastFrameworkVersion)
+ {
+ firstApiLevel = firstFrameworkVersion = lastApiLevel = lastFrameworkVersion = null;
+
+ Version firstVersion = null;
+ Version lastVersion = null;
+
var outdir = FrameworkLibDirectory;
var path = Path.Combine (outdir, "xbuild-frameworks", "MonoAndroid");
if (!Directory.Exists(path)) {
path = outdir;
}
foreach (var dir in Directory.EnumerateDirectories (path, "v*", SearchOption.TopDirectoryOnly)) {
+ // No binding assemblies in `v1.0`; don't process.
+ if (Path.GetFileName (dir) == "v1.0")
+ continue;
Version version;
string v = Path.GetFileName (dir).Replace ("v", "");
if (!Version.TryParse (v, out version))
continue;
- if (latest < version) {
- var apiInfo = Path.Combine (dir, "AndroidApiInfo.xml");
- if (File.Exists (apiInfo)) {
- var doc = XDocument.Load (apiInfo);
- apiLevel = doc.XPathSelectElement ("/AndroidApiInfo/Level")?.Value ?? apiLevel;
- }
- latest = version;
+
+ string frameworkVersion = "v" + version.ToString (2);
+ string apiLevel = GetApiLevelFromInfoPath (Path.Combine (dir, "AndroidApiInfo.xml"));
+ if (firstVersion == null || version < firstVersion) {
+ firstVersion = version;
+ firstFrameworkVersion = frameworkVersion;
+ firstApiLevel = apiLevel;
+ }
+ if (lastVersion == null || version > lastVersion) {
+ lastVersion = version;
+ lastFrameworkVersion = frameworkVersion;
+ lastApiLevel = apiLevel;
}
}
- return "v" + latest.ToString (2);
+ }
+
+ static string GetApiLevelFromInfoPath (string androidApiInfo)
+ {
+ if (!File.Exists (androidApiInfo))
+ return null;
+
+ var doc = XDocument.Load (androidApiInfo);
+ return doc.XPathSelectElement ("/AndroidApiInfo/Level")?.Value;
}
public bool TargetFrameworkExists (string targetFramework)
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Bindings.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Bindings.targets
index ca396dd4b14..e7dd0f2237e 100755
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Bindings.targets
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Bindings.targets
@@ -62,7 +62,7 @@ Copyright (C) 2012 Xamarin Inc. All rights reserved.
False
MonoAndroid
v5.0
- v2.3
+ v4.4
True
False
jar2xml
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.CSharp.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.CSharp.targets
index 4ecd524d26f..27bc46aa774 100644
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.CSharp.targets
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.CSharp.targets
@@ -27,7 +27,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved.
MonoAndroid
- v2.3
+ v4.4
SdkOnly