diff --git a/.gitmodules b/.gitmodules
index ab79ccab656..2bdccfa5e08 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -8,8 +8,8 @@
branch = main
[submodule "external/Java.Interop"]
path = external/Java.Interop
- url = https://github.com/xamarin/java.interop.git
- branch = main
+ url = https://github.com/jonpryor/java.interop.git
+ branch = jonp-allow-jdk-17
[submodule "external/lz4"]
path = external/lz4
url = https://github.com/lz4/lz4.git
diff --git a/build-tools/gradle/gradle/wrapper/gradle-wrapper.properties b/build-tools/gradle/gradle/wrapper/gradle-wrapper.properties
index 6b3851a8ad2..fae08049a6f 100644
--- a/build-tools/gradle/gradle/wrapper/gradle-wrapper.properties
+++ b/build-tools/gradle/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-bin.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/build-tools/scripts/DotNet.targets b/build-tools/scripts/DotNet.targets
index e11b2042001..37d4391b740 100644
--- a/build-tools/scripts/DotNet.targets
+++ b/build-tools/scripts/DotNet.targets
@@ -10,8 +10,14 @@
/>
+
+ <_JIPrepArg Include=""-p:Jdks8Root=$(Java8SdkDirectory)"" />
+ <_JIPrepArg Include=""-p:Jdks11Root=$(JavaSdkDirectory)"" />
+ <_JIPrepArg Include=""-p:DotnetToolPath=$(DotNetPreviewTool)"" />
+ <_JIPrepArg Include=""-bl:$(_BinlogPathPrefix)-prepare-java-interop.binlog"" />
+
diff --git a/build-tools/xaprepare/xaprepare/Application/GeneratedMonodroidCmakeFiles.cs b/build-tools/xaprepare/xaprepare/Application/GeneratedMonodroidCmakeFiles.cs
index 746f3f50d89..b58a065490b 100644
--- a/build-tools/xaprepare/xaprepare/Application/GeneratedMonodroidCmakeFiles.cs
+++ b/build-tools/xaprepare/xaprepare/Application/GeneratedMonodroidCmakeFiles.cs
@@ -84,12 +84,12 @@ void GenerateShellConfig (Context context, StreamWriter sw)
AddReplacements (commonReplacements, hostRuntimeReplacements);
string monodroidObjDir = Path.Combine (Configurables.Paths.MonodroidSourceDir, "obj", context.Configuration);
- string jdkInfoPropsPath = Path.Combine (Configurables.Paths.ExternalJavaInteropDir, "bin", $"Build{context.Configuration}", "JdkInfo.props");
+ string jdkInfoPropsPath = Path.Combine (Configurables.Paths.ExternalJavaInteropDir, "bin", $"Build{context.Configuration}", "JdkInfo-11.props");
sw.WriteLine ("# This is a bash(1) script");
sw.WriteLine ();
sw.WriteLine ($"CMAKE=\"{context.Properties.GetRequiredValue(KnownProperties.CMakePath)}\"");
- sw.WriteLine ($"JDK_INCLUDE_PATH=\"$(grep JdkIncludePath {jdkInfoPropsPath} | cut -d '\"' -f 2 | tr '\\n' ' ')\"");
+ sw.WriteLine ($"JDK_INCLUDE_PATH=\"$(grep Jdk11IncludePath {jdkInfoPropsPath} | cut -d '\"' -f 2 | tr '\\n' ' ')\"");
sw.WriteLine ($"MONO_SOURCE_PATH=\"{Configurables.Paths.MonoSourceFullPath}\"");
sw.WriteLine ($"MONODROID_OBJ_DIR=\"{monodroidObjDir}\"");
sw.WriteLine ($"MONODROID_SOURCE_DIR=\"{Configurables.Paths.MonodroidSourceDir}\"");
@@ -341,7 +341,7 @@ void GenerateMonodroidTargets (Context context, StreamWriter sw)
var hostRuntimeReplacements = new Dictionary (StringComparer.Ordinal) {
{ "@CmakeHostFlags@", "%(_HostRuntime.CmakeFlags)" },
- { "@JdkIncludePath@", "@(JdkIncludePath->'%(Identity)', ' ')" },
+ { "@JdkIncludePath@", "@(Jdk11IncludePath->'%(Identity)', ' ')" },
{ "@OUTPUT_DIRECTORY@", "" },
};
diff --git a/build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs b/build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs
index c26df75a5e1..6a5b47e7bc0 100644
--- a/build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs
+++ b/build-tools/xaprepare/xaprepare/ConfigAndData/Configurables.cs
@@ -17,9 +17,9 @@ partial class Configurables
{
const string BinutilsVersion = "L_15.0.7-5.0.3";
- const string MicrosoftOpenJDK11Version = "11.0.16";
+ const string MicrosoftOpenJDK11Version = "17.0.7";
const string MicrosoftOpenJDK11Release = "8.1";
- const string MicrosoftOpenJDK11RootDirName = "jdk-11.0.16+8";
+ const string MicrosoftOpenJDK11RootDirName = "jdk-17.0.7+7";
const string AdoptOpenJDKRelease = "8.0"; // build_number.0
static readonly string AdoptOpenJDKUrlVersion = $"8u{AdoptOpenJDKUpdate}{AdoptOpenJDKBuild}";
@@ -35,9 +35,9 @@ public static partial class Urls
// https://github.com/adoptium/temurin8-binaries/releases/download/jdk8u345-b01/OpenJDK8U-jdk_x64_windows_hotspot_8u345b01.zip
public static readonly Uri AdoptOpenJDK8 = new Uri ($"https://github.com/adoptium/temurin8-binaries/releases/download/{AdoptOpenJDKTag}/OpenJDK8U-jdk_{AdoptOpenJDKOperatingSystem}_hotspot_{AdoptOpenJDKUrlVersion}.{AdoptOpenJDKArchiveExtension}");
- // https://aka.ms/download-jdk/microsoft-jdk-11.0.16-linux-x64.tar.gz
- // https://aka.ms/download-jdk/microsoft-jdk-11.0.16-macOS-x64.tar.gz
- // https://aka.ms/download-jdk/microsoft-jdk-11.0.16-windows-x64.zip
+ // https://aka.ms/download-jdk/microsoft-jdk-17.0.7-linux-x64.tar.gz
+ // https://aka.ms/download-jdk/microsoft-jdk-17.0.7-macOS-x64.tar.gz
+ // https://aka.ms/download-jdk/microsoft-jdk-17.0.7-windows-x64.zip
public static readonly Uri MicrosoftOpenJDK11 = new Uri ($"https://aka.ms/download-jdk/microsoft-jdk-{MicrosoftOpenJDK11Version}-{MicrosoftOpenJDKOperatingSystem}.{MicrosoftOpenJDKFileExtension}");
///
@@ -57,7 +57,7 @@ public static partial class Defaults
public static readonly string BinutilsVersion = Configurables.BinutilsVersion;
public static readonly char[] PropertyListSeparator = new [] { ':' };
- public static readonly string JdkFolder = "jdk-11";
+ public static readonly string JdkFolder = "jdk-17";
public static readonly Version MicrosoftOpenJDK11Version = new Version (Configurables.MicrosoftOpenJDK11Version);
public static readonly Version MicrosoftOpenJDK11Release = new Version (Configurables.MicrosoftOpenJDK11Release);
@@ -307,7 +307,7 @@ public static partial class Paths
public static string OpenJDK8InstallDir => GetCachedPath (ref openJDK8InstallDir, () => Path.Combine (ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainDirectory), "jdk-1.8"));
public static string OpenJDK8CacheDir => GetCachedPath (ref openJDK8CacheDir, () => ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainCacheDirectory));
- public static string OpenJDK11InstallDir => GetCachedPath (ref openJDK11InstallDir, () => Path.Combine (ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainDirectory), "jdk-11"));
+ public static string OpenJDK11InstallDir => GetCachedPath (ref openJDK11InstallDir, () => Path.Combine (ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainDirectory), Defaults.JdkFolder));
public static string OpenJDK11CacheDir => GetCachedPath (ref openJDK11CacheDir, () => ctx.Properties.GetRequiredValue (KnownProperties.AndroidToolchainCacheDirectory));
// bundle
public static string BCLTestsArchiveName = "bcl-tests.zip";
diff --git a/external/Java.Interop b/external/Java.Interop
index 6aedf1ca0ba..cb29a4bd729 160000
--- a/external/Java.Interop
+++ b/external/Java.Interop
@@ -1 +1 @@
-Subproject commit 6aedf1ca0baaeece6d2ef75deb19a077e8fc78f0
+Subproject commit cb29a4bd729722e5a9301d22785095ada225af2f
diff --git a/external/Java.Interop.override.props b/external/Java.Interop.override.props
index 8cbac6945cf..2abaaf493cd 100644
--- a/external/Java.Interop.override.props
+++ b/external/Java.Interop.override.props
@@ -2,6 +2,7 @@
$(MSBuildThisFileDirectory)xamarin-android-tools
+ 17.99.0
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in
index cb87a070127..6f24d0e127d 100644
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.props.in
@@ -9,7 +9,7 @@
false
true
true
- 11.0.99
+ 17.0.99
1.6.0
{abi}{versionCode:D5}
UpdateGeneratedFiles
diff --git a/src/manifestmerger/build.gradle b/src/manifestmerger/build.gradle
index 1cc1f13b018..63849a3d59f 100644
--- a/src/manifestmerger/build.gradle
+++ b/src/manifestmerger/build.gradle
@@ -19,7 +19,7 @@ repositories {
dependencies {
// https://mvnrepository.com/artifact/com.android.tools.build/manifest-merger
- compile group: 'com.android.tools.build', name: 'manifest-merger', version: '30.3.1'
+ implementation 'com.android.tools.build:manifest-merger:30.3.1'
}
sourceSets {
@@ -36,10 +36,10 @@ jar {
attributes 'Main-Class': 'com.xamarin.manifestmerger.Main'
}
from {
- configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
+ configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
} {
// Exclude native jnidispatch content to simplify installer signing and notarization
exclude 'META-INF/*.RSA', 'META-INF/*.SF', 'META-INF/*.DSA', 'com/sun/jna/**/*jnidispatch*'
}
- archiveName 'manifestmerger.jar'
-}
\ No newline at end of file
+ archiveFileName.set('manifestmerger.jar')
+}
diff --git a/src/monodroid/monodroid.targets b/src/monodroid/monodroid.targets
index 08a94631e20..acddbbdf098 100644
--- a/src/monodroid/monodroid.targets
+++ b/src/monodroid/monodroid.targets
@@ -1,6 +1,9 @@
-
+
diff --git a/src/r8/build.gradle b/src/r8/build.gradle
index 89ac931666a..988379d9be0 100644
--- a/src/r8/build.gradle
+++ b/src/r8/build.gradle
@@ -15,7 +15,7 @@ repositories {
}
dependencies {
- compile group: 'com.android.tools', name: 'r8', version: '8.0.40'
+ implementation 'com.android.tools:r8:8.0.40'
}
jar {
@@ -24,7 +24,7 @@ jar {
attributes 'Main-Class': 'com.android.tools.r8.R8'
}
from {
- configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
+ configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
- archiveName 'r8.jar'
-}
\ No newline at end of file
+ archiveFileName.set('r8.jar')
+}