From ce92ed640cf7306925fe34dcef6f91c3051f99f6 Mon Sep 17 00:00:00 2001 From: Marek Habersack Date: Wed, 21 Apr 2021 18:40:44 +0200 Subject: [PATCH] Ignore interfaces when generating JavaCallableWrappers Context: https://github.com/xamarin/java.interop/commit/ebd7d76161ac60ce7ad3bfee87789f08a333ae78 Context: https://github.com/xamarin/java.interop/commit/f9faaaba0ca2f3721ea1de33fd793edeae059474 With `Java.Interop` Java type scanner now including Java interfaces in the returned set of types, we need to ignore interfaces when generating JCWs. --- external/Java.Interop | 2 +- src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs | 5 +++++ src/monodroid/jni/build-info.hh | 3 ++- 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/external/Java.Interop b/external/Java.Interop index a3de91efdae..f9faaaba0ca 160000 --- a/external/Java.Interop +++ b/external/Java.Interop @@ -1 +1 @@ -Subproject commit a3de91efdaec04b3927b755a07018e8d26cfdc71 +Subproject commit f9faaaba0ca2f3721ea1de33fd793edeae059474 diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs index 0bc8cd00396..07a7c2fba72 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs @@ -328,6 +328,11 @@ bool CreateJavaSources (IEnumerable javaTypes, TypeDefinitionCac bool ok = true; foreach (var t in javaTypes) { + if (t.IsInterface) { + // Interfaces are in typemap but they shouldn't have JCW generated for them + continue; + } + using (var writer = MemoryStreamPool.Shared.CreateStreamWriter ()) { try { var jti = new JavaCallableWrapperGenerator (t, Log.LogWarning, cache) { diff --git a/src/monodroid/jni/build-info.hh b/src/monodroid/jni/build-info.hh index fe65a5d6fbb..783b2cd6a23 100644 --- a/src/monodroid/jni/build-info.hh +++ b/src/monodroid/jni/build-info.hh @@ -8,6 +8,7 @@ namespace xamarin::android::internal { #define STRINGIFY(_val_) #_val_ +#define API_STRING(_api_) STRINGIFY(_api_) #define VERSION_STRING(_major_, _minor_, _build_) STRINGIFY(_major_) "." STRINGIFY(_minor_) "." STRINGIFY(_build_) class BuildInfo final @@ -50,7 +51,7 @@ namespace xamarin::android::internal static constexpr char ndk_api_level[] = #if defined (__ANDROID_API__) - STRINGIFY(__ANDROID_API__); + API_STRING(__ANDROID_API__); #else // def __ANDROID_API__ ""; #endif // ndef __ANDROID_API__