diff --git a/Xamarin.Android.sln b/Xamarin.Android.sln
index faccbca0dbd..c24d1c97d51 100644
--- a/Xamarin.Android.sln
+++ b/Xamarin.Android.sln
@@ -127,6 +127,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "proguard-android", "src\pro
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "native-clr", "src\native\native-clr.csproj", "{39F49484-872A-489D-8E6B-3BC532DD571D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Android.Runtime.NativeAOT", "src\Microsoft.Android.Runtime.NativeAOT\Microsoft.Android.Runtime.NativeAOT.csproj", "{E8831F32-11D7-D42C-E43C-711998BC357A}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|AnyCPU = Debug|AnyCPU
@@ -353,6 +355,10 @@ Global
{39F49484-872A-489D-8E6B-3BC532DD571D}.Debug|AnyCPU.Build.0 = Debug|Any CPU
{39F49484-872A-489D-8E6B-3BC532DD571D}.Release|AnyCPU.ActiveCfg = Release|Any CPU
{39F49484-872A-489D-8E6B-3BC532DD571D}.Release|AnyCPU.Build.0 = Release|Any CPU
+ {E8831F32-11D7-D42C-E43C-711998BC357A}.Debug|AnyCPU.ActiveCfg = Debug|Any CPU
+ {E8831F32-11D7-D42C-E43C-711998BC357A}.Debug|AnyCPU.Build.0 = Debug|Any CPU
+ {E8831F32-11D7-D42C-E43C-711998BC357A}.Release|AnyCPU.ActiveCfg = Release|Any CPU
+ {E8831F32-11D7-D42C-E43C-711998BC357A}.Release|AnyCPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -413,6 +419,7 @@ Global
{5E806C9F-1B67-4B6B-A6AB-258834250DBB} = {FFCF518F-2A4A-40A2-9174-2EE13B76C723}
{5FD0133B-69E5-4474-9B67-9FD1D0150C70} = {FFCF518F-2A4A-40A2-9174-2EE13B76C723}
{39F49484-872A-489D-8E6B-3BC532DD571D} = {FFCF518F-2A4A-40A2-9174-2EE13B76C723}
+ {E8831F32-11D7-D42C-E43C-711998BC357A} = {04E3E11E-B47D-4599-8AFC-50515A95E715}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {53A1F287-EFB2-4D97-A4BB-4A5E145613F6}
diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets
index 149c3ae323b..57830d3638c 100644
--- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets
+++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.targets
@@ -26,7 +26,8 @@
+ Condition="Exists('$(MSBuildThisFileDirectory)..\tools\Xamarin.Android.Common.Debugging.props') And '$(DesignTimeBuild)' != 'true' "/>
+
diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json
index a61053ed7d1..50fc5a22030 100644
--- a/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json
+++ b/src/Xamarin.Android.Build.Tasks/Microsoft.NET.Sdk.Android/WorkloadManifest.in.json
@@ -15,8 +15,8 @@
],
"platforms": [ "win-x64", "win-arm64", "linux-x64", "linux-arm64", "osx-x64", "osx-arm64" ],
"extends" : [
- "microsoft-net-runtime-android-net8",
- "microsoft-net-runtime-android-aot-net8",
+ "microsoft-net-runtime-android-net9",
+ "microsoft-net-runtime-android-aot-net9",
"microsoft-net-runtime-android",
"microsoft-net-runtime-android-aot"
]
diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs
index 9de0d72827b..a9b50ac09ce 100644
--- a/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/CollectAssemblyFilesForArchive.cs
@@ -22,14 +22,7 @@ public class CollectAssemblyFilesToCompress : AndroidTask
[Required]
public string AssemblyCompressionDirectory { get; set; } = "";
- [Required]
- public ITaskItem[] ResolvedRuntimePacks { get; set; } = Array.Empty ();
-
- [Required]
- public string ApkOutputPath { get; set; } = "";
-
- [Required]
- public string AppSharedLibrariesDir { get; set; } = "";
+ public bool EmbedAssemblies { get; set; }
[Required]
public bool EnableCompression { get; set; }
@@ -62,9 +55,9 @@ public override bool RunTask ()
ResolvedFrameworkAssembliesOutput = ResolvedFrameworkAssemblies;
ResolvedUserAssembliesOutput = ResolvedUserAssemblies;
- DSOWrapperGenerator.Config dsoWrapperConfig = DSOWrapperGenerator.GetConfig (Log, AndroidBinUtilsDirectory, ResolvedRuntimePacks, IntermediateOutputPath);
- bool compress = !IncludeDebugSymbols && EnableCompression;
- IDictionary>? compressedAssembliesInfo = null;
+ // We aren't going to compress any assemblies
+ if (IncludeDebugSymbols || !EnableCompression || !EmbedAssemblies)
+ return true;
var assemblies_to_compress = new List ();
var compressed_assemblies_info = GetCompressedAssemblyInfo ();
diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs
index 1d0b3dfc24c..8d0f9133286 100644
--- a/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/GenerateJavaStubs.cs
@@ -96,6 +96,14 @@ public class GenerateJavaStubs : AndroidTask
[Required]
public string AndroidRuntime { get; set; } = "";
+ public string CodeGenerationTarget { get; set; } = "";
+
+ [Required]
+ public string TargetName { get; set; } = "";
+
+ AndroidRuntime androidRuntime;
+ JavaPeerStyle codeGenerationTarget;
+
internal const string AndroidSkipJavaStubGeneration = "AndroidSkipJavaStubGeneration";
public override bool RunTask ()
@@ -299,10 +307,23 @@ Dictionary MaybeGetArchAssemblies (Dictionary additionalProviders)
{
- if (androidRuntime != Xamarin.Android.Tasks.AndroidRuntime.MonoVM &&
- androidRuntime != Xamarin.Android.Tasks.AndroidRuntime.CoreCLR) {
- Log.LogDebugMessage ($"Skipping MonoRuntimeProvider generation for: {androidRuntime}");
- return;
+ if (androidRuntime != Xamarin.Android.Tasks.AndroidRuntime.CoreCLR) {
+ // Create additional runtime provider java sources.
+ bool isMonoVM = androidRuntime == Xamarin.Android.Tasks.AndroidRuntime.MonoVM;
+ string providerTemplateFile = isMonoVM ?
+ "MonoRuntimeProvider.Bundled.java" :
+ "NativeAotRuntimeProvider.java";
+ string providerTemplate = GetResource (providerTemplateFile);
+
+ foreach (var provider in additionalProviders) {
+ var contents = providerTemplate.Replace (isMonoVM ? "MonoRuntimeProvider" : "NativeAotRuntimeProvider", provider);
+ var real_provider = isMonoVM ?
+ Path.Combine (OutputDirectory, "src", "mono", provider + ".java") :
+ Path.Combine (OutputDirectory, "src", "net", "dot", "jni", "nativeaot", provider + ".java");
+ Files.CopyIfStringChanged (contents, real_provider);
+ }
+ } else {
+ Log.LogDebugMessage ($"Skipping android.content.ContentProvider generation for: {androidRuntime}");
}
// For NativeAOT, generate JavaInteropRuntime.java
@@ -360,7 +381,7 @@ IList MergeManifest (NativeCodeGenState codeGenState, Dictionary MergeManifest (NativeCodeGenState codeGenState, Dictionary allJavaTypes, List javaTypesForJCW) = ScanForJavaTypes (resolver, tdCache, assemblies, userAssemblies, useMarshalMethods);
var jcwContext = new JCWGeneratorContext (arch, resolver, assemblies.Values, javaTypesForJCW, tdCache, useMarshalMethods);
var jcwGenerator = new JCWGenerator (Log, jcwContext) {
- CodeGenerationTarget = androidRuntime == Xamarin.Android.Tasks.AndroidRuntime.MonoVM ? JavaPeerStyle.XAJavaInterop1 : JavaPeerStyle.JavaInterop1
+ CodeGenerationTarget = codeGenerationTarget,
};
bool success;
diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/WrapAssembliesAsSharedLibraries.cs b/src/Xamarin.Android.Build.Tasks/Tasks/WrapAssembliesAsSharedLibraries.cs
index ab297dd6d29..ba6414bc93e 100644
--- a/src/Xamarin.Android.Build.Tasks/Tasks/WrapAssembliesAsSharedLibraries.cs
+++ b/src/Xamarin.Android.Build.Tasks/Tasks/WrapAssembliesAsSharedLibraries.cs
@@ -24,6 +24,9 @@ public class WrapAssembliesAsSharedLibraries : AndroidTask
[Required]
public string AndroidBinUtilsDirectory { get; set; } = "";
+ [Required]
+ public ITaskItem[] ResolvedRuntimePacks { get; set; } = Array.Empty ();
+
public bool IncludeDebugSymbols { get; set; }
[Required]
@@ -42,7 +45,7 @@ public class WrapAssembliesAsSharedLibraries : AndroidTask
public override bool RunTask ()
{
- var wrapper_config = DSOWrapperGenerator.GetConfig (Log, AndroidBinUtilsDirectory, IntermediateOutputPath);
+ var wrapper_config = DSOWrapperGenerator.GetConfig (Log, AndroidBinUtilsDirectory, ResolvedRuntimePacks, IntermediateOutputPath);
var files = new PackageFileListBuilder ();
if (UseAssemblyStore)
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
index be94e0bcbf7..0d09c5250f4 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64SimpleDotNet.apkdesc
@@ -5,34 +5,34 @@
"Size": 3036
},
"classes.dex": {
- "Size": 22444
+ "Size": 22484
},
"lib/arm64-v8a/lib__Microsoft.Android.Resource.Designer.dll.so": {
- "Size": 18296
+ "Size": 18288
},
"lib/arm64-v8a/lib_Java.Interop.dll.so": {
- "Size": 86352
+ "Size": 86688
},
"lib/arm64-v8a/lib_Mono.Android.dll.so": {
- "Size": 116920
+ "Size": 117712
},
"lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": {
- "Size": 22408
+ "Size": 22384
},
"lib/arm64-v8a/lib_System.Console.dll.so": {
- "Size": 24376
+ "Size": 24392
},
"lib/arm64-v8a/lib_System.Linq.dll.so": {
"Size": 25336
},
"lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": {
- "Size": 634384
+ "Size": 628216
},
"lib/arm64-v8a/lib_System.Runtime.dll.so": {
- "Size": 20040
+ "Size": 20056
},
"lib/arm64-v8a/lib_System.Runtime.InteropServices.dll.so": {
- "Size": 21584
+ "Size": 21480
},
"lib/arm64-v8a/lib_UnnamedProject.dll.so": {
"Size": 20024
@@ -44,10 +44,10 @@
"Size": 36440
},
"lib/arm64-v8a/libmonodroid.so": {
- "Size": 1501240
+ "Size": 1524752
},
"lib/arm64-v8a/libmonosgen-2.0.so": {
- "Size": 3196512
+ "Size": 3101112
},
"lib/arm64-v8a/libSystem.Globalization.Native.so": {
"Size": 71976
@@ -62,7 +62,7 @@
"Size": 165000
},
"lib/arm64-v8a/libxamarin-app.so": {
- "Size": 18264
+ "Size": 19536
},
"META-INF/BNDLTOOL.RSA": {
"Size": 1221
@@ -98,5 +98,5 @@
"Size": 1904
}
},
- "PackageSize": 3111445
+ "PackageSize": 3078677
}
\ No newline at end of file
diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
index b3173a6f72f..ab4f60772ce 100644
--- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
+++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.ProjectTools/Resources/Base/BuildReleaseArm64XFormsDotNet.apkdesc
@@ -5,7 +5,7 @@
"Size": 6652
},
"classes.dex": {
- "Size": 9172764
+ "Size": 9172540
},
"kotlin/annotation/annotation.kotlin_builtins": {
"Size": 928
@@ -35,22 +35,22 @@
"Size": 25424
},
"lib/arm64-v8a/lib_Java.Interop.dll.so": {
- "Size": 94736
+ "Size": 94792
},
"lib/arm64-v8a/lib_Mono.Android.dll.so": {
- "Size": 524256
+ "Size": 535520
},
"lib/arm64-v8a/lib_Mono.Android.Runtime.dll.so": {
- "Size": 22408
+ "Size": 22432
},
"lib/arm64-v8a/lib_mscorlib.dll.so": {
"Size": 21448
},
"lib/arm64-v8a/lib_netstandard.dll.so": {
- "Size": 23072
+ "Size": 23096
},
"lib/arm64-v8a/lib_System.Collections.Concurrent.dll.so": {
- "Size": 29792
+ "Size": 29896
},
"lib/arm64-v8a/lib_System.Collections.dll.so": {
"Size": 36304
@@ -59,7 +59,7 @@
"Size": 25776
},
"lib/arm64-v8a/lib_System.Collections.Specialized.dll.so": {
- "Size": 23840
+ "Size": 23856
},
"lib/arm64-v8a/lib_System.ComponentModel.dll.so": {
"Size": 19608
@@ -71,31 +71,31 @@
"Size": 42480
},
"lib/arm64-v8a/lib_System.Console.dll.so": {
- "Size": 24416
+ "Size": 24440
},
"lib/arm64-v8a/lib_System.Core.dll.so": {
- "Size": 19448
+ "Size": 19464
},
"lib/arm64-v8a/lib_System.Diagnostics.DiagnosticSource.dll.so": {
"Size": 28456
},
"lib/arm64-v8a/lib_System.Diagnostics.TraceSource.dll.so": {
- "Size": 24688
+ "Size": 24704
},
"lib/arm64-v8a/lib_System.dll.so": {
- "Size": 19848
+ "Size": 19864
},
"lib/arm64-v8a/lib_System.Drawing.dll.so": {
- "Size": 19424
+ "Size": 19448
},
"lib/arm64-v8a/lib_System.Drawing.Primitives.dll.so": {
- "Size": 30040
+ "Size": 30056
},
"lib/arm64-v8a/lib_System.Formats.Asn1.dll.so": {
- "Size": 49928
+ "Size": 50312
},
"lib/arm64-v8a/lib_System.IO.Compression.Brotli.dll.so": {
- "Size": 29472
+ "Size": 29496
},
"lib/arm64-v8a/lib_System.IO.Compression.dll.so": {
"Size": 33808
@@ -107,7 +107,7 @@
"Size": 38784
},
"lib/arm64-v8a/lib_System.Linq.Expressions.dll.so": {
- "Size": 185800
+ "Size": 185880
},
"lib/arm64-v8a/lib_System.Net.Http.dll.so": {
"Size": 90320
@@ -116,55 +116,55 @@
"Size": 41152
},
"lib/arm64-v8a/lib_System.Net.Requests.dll.so": {
- "Size": 21544
+ "Size": 21568
},
"lib/arm64-v8a/lib_System.ObjectModel.dll.so": {
- "Size": 27064
+ "Size": 27096
},
"lib/arm64-v8a/lib_System.Private.CoreLib.dll.so": {
- "Size": 956552
+ "Size": 958672
},
"lib/arm64-v8a/lib_System.Private.DataContractSerialization.dll.so": {
- "Size": 216720
+ "Size": 216680
},
"lib/arm64-v8a/lib_System.Private.Uri.dll.so": {
"Size": 62784
},
"lib/arm64-v8a/lib_System.Private.Xml.dll.so": {
- "Size": 237120
+ "Size": 236920
},
"lib/arm64-v8a/lib_System.Private.Xml.Linq.dll.so": {
- "Size": 35584
+ "Size": 35600
},
"lib/arm64-v8a/lib_System.Runtime.dll.so": {
"Size": 20216
},
"lib/arm64-v8a/lib_System.Runtime.InteropServices.dll.so": {
- "Size": 21584
+ "Size": 21480
},
"lib/arm64-v8a/lib_System.Runtime.Numerics.dll.so": {
- "Size": 54408
+ "Size": 54168
},
"lib/arm64-v8a/lib_System.Runtime.Serialization.dll.so": {
- "Size": 19352
+ "Size": 19368
},
"lib/arm64-v8a/lib_System.Runtime.Serialization.Formatters.dll.so": {
- "Size": 20328
+ "Size": 20344
},
"lib/arm64-v8a/lib_System.Runtime.Serialization.Primitives.dll.so": {
- "Size": 21448
+ "Size": 21472
},
"lib/arm64-v8a/lib_System.Security.Cryptography.dll.so": {
"Size": 81248
},
"lib/arm64-v8a/lib_System.Text.RegularExpressions.dll.so": {
- "Size": 183584
+ "Size": 186352
},
"lib/arm64-v8a/lib_System.Xml.dll.so": {
- "Size": 19248
+ "Size": 19272
},
"lib/arm64-v8a/lib_System.Xml.Linq.dll.so": {
- "Size": 19264
+ "Size": 19280
},
"lib/arm64-v8a/lib_UnnamedProject.dll.so": {
"Size": 22096
@@ -245,10 +245,10 @@
"Size": 36440
},
"lib/arm64-v8a/libmonodroid.so": {
- "Size": 1501240
+ "Size": 1524624
},
"lib/arm64-v8a/libmonosgen-2.0.so": {
- "Size": 3196512
+ "Size": 3101160
},
"lib/arm64-v8a/libSystem.Globalization.Native.so": {
"Size": 71976
@@ -263,7 +263,7 @@
"Size": 165000
},
"lib/arm64-v8a/libxamarin-app.so": {
- "Size": 349440
+ "Size": 349384
},
"META-INF/androidx.activity_activity.version": {
"Size": 6
@@ -416,7 +416,7 @@
"Size": 6
},
"META-INF/BNDLTOOL.RSA": {
- "Size": 1223
+ "Size": 1221
},
"META-INF/BNDLTOOL.SF": {
"Size": 98577
@@ -2486,5 +2486,5 @@
"Size": 812848
}
},
- "PackageSize": 10947851
+ "PackageSize": 10923275
}
\ No newline at end of file
diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/ManifestDocument.cs b/src/Xamarin.Android.Build.Tasks/Utilities/ManifestDocument.cs
index f24db218d69..cb42ffafaac 100644
--- a/src/Xamarin.Android.Build.Tasks/Utilities/ManifestDocument.cs
+++ b/src/Xamarin.Android.Build.Tasks/Utilities/ManifestDocument.cs
@@ -94,7 +94,7 @@ internal class ManifestDocument
public bool ForceDebuggable { get; set; }
public string VersionName { get; set; }
public IVersionResolver VersionResolver { get; set; } = new MonoAndroidHelperVersionResolver ();
- public string AndroidRuntime { get; set; } = "MonoVM";
+ public AndroidRuntime AndroidRuntime { get; set; }
string versionCode;
diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
index 0673bc11636..3a3c75e966b 100644
--- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
+++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets
@@ -1525,6 +1525,7 @@ because xbuild doesn't support framework reference assemblies.
-
+
+ UseAssemblyStore="$(AndroidUseAssemblyStore)"
+ ResolvedRuntimePacks="@(ResolvedRuntimePack)">
diff --git a/src/native/CMakeLists.txt b/src/native/CMakeLists.txt
index b94ad11879f..a1cee1367a6 100644
--- a/src/native/CMakeLists.txt
+++ b/src/native/CMakeLists.txt
@@ -586,11 +586,11 @@ else()
add_subdirectory(mono/monodroid)
add_custom_target(run_static_analysis
- COMMAND ${ANDROID_TOOLCHAIN_ROOT}/bin/clang-check -analyze -p="${CMAKE_CURRENT_BINARY_DIR}" ${CLANG_CHECK_SOURCES} > ${CMAKE_SOURCE_DIR}/static-analysis.${ANDROID_ABI}.${CMAKE_BUILD_TYPE}.txt 2>&1
- COMMAND_EXPAND_LISTS
- WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
- USES_TERMINAL
- )
+ COMMAND ${ANDROID_TOOLCHAIN_ROOT}/bin/clang-check -analyze -p="${CMAKE_CURRENT_BINARY_DIR}" ${CLANG_CHECK_SOURCES} > ${CMAKE_SOURCE_DIR}/static-analysis.${ANDROID_ABI}.${CMAKE_BUILD_TYPE}.txt 2>&1
+ COMMAND_EXPAND_LISTS
+ WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+ USES_TERMINAL
+ )
endif()
if (IS_CLR_RUNTIME)
diff --git a/src/native/common/include/shared/log_level.hh b/src/native/common/include/shared/log_level.hh
index 66b1cae5097..fc7a7566910 100644
--- a/src/native/common/include/shared/log_level.hh
+++ b/src/native/common/include/shared/log_level.hh
@@ -1,112 +1,26 @@
#pragma once
#include
-#include
-#include
-#include
-
-#include "java-interop-logger.h"
-#include "log_level.hh"
-
-// We redeclare macros here
-#if defined(log_debug)
-#undef log_debug
-#endif
-
-#if defined(log_info)
-#undef log_info
-#endif
-
-#define DO_LOG_FMT(_level, _category_, _fmt_, ...) \
- do { \
- if ((log_categories & ((_category_))) != 0) { \
- ::log_ ## _level ## _nocheck_fmt ((_category_), _fmt_ __VA_OPT__(,) __VA_ARGS__); \
- } \
- } while (0)
-
-//
-// For std::format spec, see https://en.cppreference.com/w/cpp/utility/format/spec
-//
-
-// NOTE: _fmt_ takes arguments in the std::format style not the POSIX printf style
-#define log_debug(_category_, _fmt_, ...) DO_LOG_FMT (debug, (_category_), (_fmt_) __VA_OPT__(,) __VA_ARGS__)
-
-// NOTE: _fmt_ takes arguments in the std::format style not the POSIX printf style
-#define log_info(_category_, _fmt_, ...) DO_LOG_FMT (info, (_category_), (_fmt_) __VA_OPT__(,) __VA_ARGS__)
-
-// NOTE: _fmt_ takes arguments in the std::format style not the POSIX printf style
-#define log_warn(_category_, _fmt_, ...) log_warn_fmt ((_category_), (_fmt_) __VA_OPT__(,) __VA_ARGS__)
-
-// NOTE: _fmt_ takes arguments in the std::format style not the POSIX printf style
-#define log_error(_category_, _fmt_, ...) log_error_fmt ((_category_), (_fmt_) __VA_OPT__(,) __VA_ARGS__)
-
-// NOTE: _fmt_ takes arguments in the std::format style not the POSIX printf style
-#define log_fatal(_category_, _fmt_, ...) log_fatal_fmt ((_category_), (_fmt_) __VA_OPT__(,) __VA_ARGS__)
namespace xamarin::android {
- // A slightly faster alternative to other log functions as it doesn't parse the message
- // for format placeholders nor it uses variable arguments
- void log_write (LogCategories category, LogLevel level, const char *message) noexcept;
-}
-
-template [[gnu::always_inline]]
-static inline constexpr void log_debug_nocheck_fmt (LogCategories category, std::format_string fmt, Args&& ...args)
-{
- log_write (category, xamarin::android::LogLevel::Debug, std::format (fmt, std::forward(args)...).c_str ());
-}
-
-[[gnu::always_inline]]
-static inline constexpr void log_debug_nocheck (LogCategories category, std::string_view const& message) noexcept
-{
- log_write (category, xamarin::android::LogLevel::Debug, message.data ());
-}
-
-template [[gnu::always_inline]]
-static inline constexpr void log_info_nocheck_fmt (LogCategories category, std::format_string fmt, Args&& ...args)
-{
- log_write (category, xamarin::android::LogLevel::Info, std::format (fmt, std::forward(args)...).c_str ());
+ enum class LogTimingCategories : uint32_t
+ {
+ Default = 0,
+ Bare = 1 << 0,
+ FastBare = 1 << 1,
+ };
+
+ // Keep in sync with LogLevel defined in JNIEnv.cs
+ enum class LogLevel : unsigned int
+ {
+ Unknown = 0x00,
+ Default = 0x01,
+ Verbose = 0x02,
+ Debug = 0x03,
+ Info = 0x04,
+ Warn = 0x05,
+ Error = 0x06,
+ Fatal = 0x07,
+ Silent = 0x08
+ };
}
-
-[[gnu::always_inline]]
-static inline constexpr void log_info_nocheck (LogCategories category, std::string_view const& message) noexcept
-{
- log_write (category, xamarin::android::LogLevel::Info, message.data ());
-}
-
-template [[gnu::always_inline]]
-static inline constexpr void log_warn_fmt (LogCategories category, std::format_string fmt, Args&& ...args) noexcept
-{
- log_write (category, xamarin::android::LogLevel::Warn, std::format (fmt, std::forward(args)...).c_str ());
-}
-
-[[gnu::always_inline]]
-static inline constexpr void log_warn_fmt (LogCategories category, std::string_view const& message) noexcept
-{
- log_write (category, xamarin::android::LogLevel::Warn, message.data ());
-}
-
-template [[gnu::always_inline]]
-static inline constexpr void log_error_fmt (LogCategories category, std::format_string fmt, Args&& ...args) noexcept
-{
- log_write (category, xamarin::android::LogLevel::Error, std::format (fmt, std::forward(args)...).c_str ());
-}
-
-[[gnu::always_inline]]
-static inline constexpr void log_error_fmt (LogCategories category, std::string_view const& message) noexcept
-{
- log_write (category, xamarin::android::LogLevel::Error, message.data ());
-}
-
-template [[gnu::always_inline]]
-static inline constexpr void log_fatal_fmt (LogCategories category, std::format_string fmt, Args&& ...args) noexcept
-{
- log_write (category, xamarin::android::LogLevel::Fatal, std::format (fmt, std::forward(args)...).c_str ());
-}
-
-[[gnu::always_inline]]
-static inline constexpr void log_fatal_fmt (LogCategories category, std::string_view const& message) noexcept
-{
- log_write (category, xamarin::android::LogLevel::Fatal, message.data ());
-}
-
-extern unsigned int log_categories;
diff --git a/src/native/mono/monodroid/internal-pinvokes.cc b/src/native/mono/monodroid/internal-pinvokes.cc
index 7c3dbab4933..41a98f6243d 100644
--- a/src/native/mono/monodroid/internal-pinvokes.cc
+++ b/src/native/mono/monodroid/internal-pinvokes.cc
@@ -134,13 +134,6 @@ monodroid_clear_gdb_wait ()
MonodroidRuntime::set_monodroid_gdb_wait (false);
}
-void*
-_monodroid_get_identity_hash_code (JNIEnv *env, void *v)
-{
- intptr_t rv = env->CallStaticIntMethod (MonodroidRuntime::get_java_class_System (), MonodroidRuntime::get_java_class_method_System_identityHashCode (), v);
- return (void*) rv;
-}
-
void*
_monodroid_timezone_get_default_id ()
{
diff --git a/src/native/mono/shared/cpp-util.hh b/src/native/mono/shared/cpp-util.hh
index abbaa95bb79..aa5df834a37 100644
--- a/src/native/mono/shared/cpp-util.hh
+++ b/src/native/mono/shared/cpp-util.hh
@@ -129,7 +129,7 @@ abort_if_negative_integer_argument (int arg, const char *arg_name, std::source_l
arg > 0,
[&arg_name, &sloc] {
return xamarin::android::detail::_format_message (
- "%s: parameter '%s' must be a valid pointer",
+ "%s: parameter '%s' must be a positive integer",
xamarin::android::detail::get_function_name (sloc.function_name ()).c_str (),
arg_name
);