From fd7e5104243db8aede12a6f539d6d0dc07970f0c Mon Sep 17 00:00:00 2001 From: Jonathan Pobst Date: Mon, 5 Feb 2024 08:22:51 -1000 Subject: [PATCH] Test JI #1174. --- external/Java.Interop | 2 +- src/Mono.Android/Mono.Android.csproj | 6 +++--- .../Tasks/GenerateJavaStubs.cs | 21 ++++++++++++------- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/external/Java.Interop b/external/Java.Interop index 07c73009571..a8816b665f8 160000 --- a/external/Java.Interop +++ b/external/Java.Interop @@ -1 +1 @@ -Subproject commit 07c73009571d3b5d36ae79d0d4d69a02062dd6e8 +Subproject commit a8816b665f8c93d0e31363c0cc7689e07c4e835c diff --git a/src/Mono.Android/Mono.Android.csproj b/src/Mono.Android/Mono.Android.csproj index 7e7ad031604..7787fb8a166 100644 --- a/src/Mono.Android/Mono.Android.csproj +++ b/src/Mono.Android/Mono.Android.csproj @@ -69,13 +69,13 @@ JavaNativeTypeManager.cs - + Crc64.cs - + Crc64Helper.cs - + Crc64.Table.cs diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs index 6a0444e872b..15e92259588 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs @@ -20,6 +20,7 @@ using Xamarin.Android.Tools; using Microsoft.Android.Build.Tasks; +using Java.Interop.Tools.JavaCallableWrappers.Adapters; namespace Xamarin.Android.Tasks { @@ -473,23 +474,29 @@ bool CreateJavaSources (IEnumerable newJavaTypes, TypeDefinitionCache using (var writer = MemoryStreamPool.Shared.CreateStreamWriter ()) { try { - var jti = new JavaCallableWrapperGenerator (t, Log.LogWarning, cache, classifier) { - GenerateOnCreateOverrides = generateOnCreateOverrides, - ApplicationJavaClass = ApplicationJavaClass, - MonoRuntimeInitialization = monoInit, + var jcw_type = CecilImporter.CreateType (t, cache, methodClassifier: classifier); + + jcw_type.GenerateOnCreateOverrides = generateOnCreateOverrides; + jcw_type.ApplicationJavaClass = ApplicationJavaClass; + jcw_type.MonoRuntimeInitialization = monoInit; + + var options = new CallableWrapperWriterOptions { + CodeGenerationTarget = JavaPeerStyle.XAJavaInterop1 }; - jti.Generate (writer); + jcw_type.Generate (writer, options); + if (useMarshalMethods) { if (classifier.FoundDynamicallyRegisteredMethods (t)) { Log.LogWarning ($"Type '{t.GetAssemblyQualifiedName (cache)}' will register some of its Java override methods dynamically. This may adversely affect runtime performance. See preceding warnings for names of dynamically registered methods."); } } + writer.Flush (); - var path = jti.GetDestinationPath (outputPath); + var path = jcw_type.GetDestinationPath (outputPath); Files.CopyIfStreamChanged (writer.BaseStream, path); - if (jti.HasExport && !hasExportReference) + if (jcw_type.HasExport && !hasExportReference) Diagnostic.Error (4210, Properties.Resources.XA4210); } catch (XamarinAndroidException xae) { ok = false;