diff --git a/.external b/.external index 4e64743b462..2528da37153 100644 --- a/.external +++ b/.external @@ -1,2 +1,2 @@ -xamarin/monodroid:main@8c54ea6df5dfdbe4a0db61445e5b7f2faf9810dd +xamarin/monodroid:main@c0c933b7a5286c0babecb165c0676c32f5e44092 mono/mono:2020-02@6dd9def57ce969ca04a0ecd9ef72c0a8f069112d diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 92dda17649a..2e4fb471386 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -32,6 +32,18 @@ /src/r8 @jonathanpeppers @jonpryor /src/Xamarin.Android.Build.Tasks @dellis1972 @jonathanpeppers /src/Xamarin.Android.Build.Tasks/Linker @jonpryor +/src/Xamarin.Android.Build.Tasks/Utilities/LlvmIrGenerator @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/TypeMap* @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/MarshalMethods* @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/ApplicationConfig* @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/*AssemblyStore* @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/AssemblyCompression* @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/CompressedAssembl* @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/ELFHelper* @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/EnvironmentFilesParser* @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/JniRemappingAssemblyGenerator* @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/NativeTypeMappingData* @grendello +/src/Xamarin.Android.Build.Tasks/Utilities/NdkTools @grendello /src/Xamarin.Android.NamingCustomAttributes @jonpryor /src/Xamarin.Android.Tools.Aidl @jonpryor /src/monodroid/ @jonpryor @grendello diff --git a/Directory.Build.props b/Directory.Build.props index 7650326c62c..4edfaae7faa 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -28,7 +28,7 @@ - 13.1.99 + 13.2.99 - 8.0.100-alpha.1.22602.5 - 7.0.100-1.22564.1 - 8.0.0-alpha.1.22559.2 + 8.0.100-alpha.1.22616.7 + 8.0.100-1.22612.2 + 8.0.0-alpha.1.22605.1 7.0.0-beta.22103.1 7.0.0-beta.22103.1 - 8.0.0-alpha.1.22554.1 + 8.0.0-alpha.1.22558.2 $(MicrosoftNETWorkloadEmscriptennet7Manifest80100Version) 7.0.100-rc.1.22410.7 diff --git a/external/Java.Interop b/external/Java.Interop index 3a9f7705c42..f8d77faf553 160000 --- a/external/Java.Interop +++ b/external/Java.Interop @@ -1 +1 @@ -Subproject commit 3a9f7705c429cfd99e563c3507cad27454a9540d +Subproject commit f8d77faf55347a58030a694332ba97f0dee88246 diff --git a/samples/HelloWorld/HelloWorld/HelloWorld.csproj b/samples/HelloWorld/HelloWorld/HelloWorld.csproj index 17f2e7ab90d..40279ae12e5 100644 --- a/samples/HelloWorld/HelloWorld/HelloWorld.csproj +++ b/samples/HelloWorld/HelloWorld/HelloWorld.csproj @@ -67,6 +67,7 @@ + diff --git a/samples/HelloWorld/HelloWorld/Resources/drawable/MyImage.webp b/samples/HelloWorld/HelloWorld/Resources/drawable/MyImage.webp new file mode 100644 index 00000000000..cbcd2351a90 Binary files /dev/null and b/samples/HelloWorld/HelloWorld/Resources/drawable/MyImage.webp differ diff --git a/samples/HelloWorld/HelloWorld/Resources/layout/Main.axml b/samples/HelloWorld/HelloWorld/Resources/layout/Main.axml index f7aef85565b..153ee2339eb 100644 --- a/samples/HelloWorld/HelloWorld/Resources/layout/Main.axml +++ b/samples/HelloWorld/HelloWorld/Resources/layout/Main.axml @@ -7,4 +7,10 @@ android:layout_height="wrap_content" android:src="@drawable/Case_Check" /> + diff --git a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Aapt2.targets b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Aapt2.targets index ce005fa8959..8827e1ceb51 100644 --- a/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Aapt2.targets +++ b/src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Aapt2.targets @@ -244,6 +244,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved. + diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/Sdk/AutoImport.props b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/Sdk/AutoImport.props index d9823bc3b9a..6d9352695f6 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/Sdk/AutoImport.props +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/Sdk/AutoImport.props @@ -30,6 +30,7 @@ https://github.com/dotnet/designs/blob/4703666296f5e59964961464c25807c727282cae/ + diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets index 89ba48fabd0..b9305f91637 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.BuildOrder.targets @@ -135,10 +135,11 @@ projects, these properties are set in Xamarin.Android.Legacy.targets. _IncludeLayoutBindingSources; AddLibraryJarsToBind; $(CompileDependsOn); + _CheckAndroidHttpClientHandlerType; UpdateGeneratedFiles; - $(CoreCompileDependsOn) + $(CoreCompileDependsOn); $(DeferredBuildDependsOn); diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets index 2d83fb1ef7d..687dc79e266 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.DefaultProperties.targets @@ -95,6 +95,7 @@ false false false + false true <_AggressiveAttributeTrimming Condition="'$(_AggressiveAttributeTrimming)' == ''">true false diff --git a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.ILLink.targets b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.ILLink.targets index 3b1d24256d5..f28c5b6d9d5 100644 --- a/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.ILLink.targets +++ b/src/Xamarin.Android.Build.Tasks/Microsoft.Android.Sdk/targets/Microsoft.Android.Sdk.ILLink.targets @@ -97,6 +97,12 @@ This file contains the .NET 5-specific targets to customize ILLink + + + + + + diff --git a/src/Xamarin.Android.Build.Tasks/Mono.Android/SupportedOSPlatformAttribute.cs b/src/Xamarin.Android.Build.Tasks/Mono.Android/SupportedOSPlatformAttribute.cs new file mode 100644 index 00000000000..6cd5a588b83 --- /dev/null +++ b/src/Xamarin.Android.Build.Tasks/Mono.Android/SupportedOSPlatformAttribute.cs @@ -0,0 +1,15 @@ +// Some enums we import from Mono.Android, like Android.Content.PM.LaunchMode, contain this +// attribute which does not exist in netstandard2.0, thus we'll include our own private copy +// that gets removed at compile time via [Conditional ("NEVER")]. + +#if !NET +namespace System.Runtime.Versioning +{ + [System.Diagnostics.Conditional ("NEVER")] + [AttributeUsage (AttributeTargets.Assembly | AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Enum | AttributeTargets.Event | AttributeTargets.Field | AttributeTargets.Interface | AttributeTargets.Method | AttributeTargets.Module | AttributeTargets.Property | AttributeTargets.Struct, AllowMultiple = true, Inherited = false)] + sealed class SupportedOSPlatformAttribute : Attribute + { + public SupportedOSPlatformAttribute (string platformName) { } + } +} +#endif diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.Designer.cs b/src/Xamarin.Android.Build.Tasks/Properties/Resources.Designer.cs index 3986942c563..b2a969da7cc 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.Designer.cs +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.Designer.cs @@ -10,8 +10,8 @@ namespace Xamarin.Android.Tasks.Properties { using System; - - + + /// /// A strongly-typed resource class, for looking up localized strings, etc. /// @@ -23,15 +23,15 @@ namespace Xamarin.Android.Tasks.Properties { [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] public class Resources { - + private static global::System.Resources.ResourceManager resourceMan; - + private static global::System.Globalization.CultureInfo resourceCulture; - + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] internal Resources() { } - + /// /// Returns the cached ResourceManager instance used by this class. /// @@ -45,7 +45,7 @@ public class Resources { return resourceMan; } } - + /// /// Overrides the current thread's CurrentUICulture property for all /// resource lookups using this strongly typed resource class. @@ -59,7 +59,7 @@ public class Resources { resourceCulture = value; } } - + /// /// Looks up a localized string similar to {0}. /// @@ -70,7 +70,7 @@ public class Resources { return ResourceManager.GetString("AAPTManifestError", resourceCulture); } } - + /// /// Looks up a localized string similar to Unknown option `{0}`. Please check `$(AndroidAapt2CompileExtraArgs)` and `$(AndroidAapt2LinkExtraArgs)` to see if they include any `aapt` command line arguments that are no longer valid for `aapt2` and ensure that all other arguments are valid for `aapt2`.. /// @@ -79,7 +79,7 @@ public class Resources { return ResourceManager.GetString("APT0001", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid file name: It must contain only {0}.. /// @@ -88,7 +88,7 @@ public class Resources { return ResourceManager.GetString("APT0002", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid file name: It must contain only {0}.. /// @@ -97,7 +97,7 @@ public class Resources { return ResourceManager.GetString("APT0003", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid file name: It must start with A-z or a-z or an underscore.. /// @@ -106,7 +106,7 @@ public class Resources { return ResourceManager.GetString("APT0004", resourceCulture); } } - + /// /// Looks up a localized string similar to Directory '{0}' is from '{1}'.. /// @@ -115,9 +115,9 @@ public class Resources { return ResourceManager.GetString("XA_Directory_Is_From", resourceCulture); } } - + /// - /// Looks up a localized string similar to + /// Looks up a localized string similar to /// This code was generated by a tool. /// It was generated from {0} /// Changes to this file may cause incorrect behavior and will be lost if @@ -129,7 +129,7 @@ public class Resources { return ResourceManager.GetString("XA_Manifest_AutoGenerated_Header", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not determine API level for $(TargetFrameworkVersion) of '{0}'.. /// @@ -138,7 +138,7 @@ public class Resources { return ResourceManager.GetString("XA0000_API_for_TargetFrameworkVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not determine $(AndroidApiLevel) or $(TargetFrameworkVersion); should not be reached.. /// @@ -147,7 +147,7 @@ public class Resources { return ResourceManager.GetString("XA0000_API_or_TargetFrameworkVersion_Fail", resourceCulture); } } - + /// /// Looks up a localized string similar to Unhandled exception: {0}. /// @@ -156,7 +156,7 @@ public class Resources { return ResourceManager.GetString("XA0000_Exception", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not determine $(TargetFrameworkVersion) for API level '{0}.'. /// @@ -165,7 +165,7 @@ public class Resources { return ResourceManager.GetString("XA0000_TargetFrameworkVersion_for_API", resourceCulture); } } - + /// /// Looks up a localized string similar to Unsupported or invalid $(TargetFrameworkVersion) value of '{0}'. Please update your Project Options.. /// @@ -174,7 +174,7 @@ public class Resources { return ResourceManager.GetString("XA0001", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not find mono.android.jar. /// @@ -183,7 +183,7 @@ public class Resources { return ResourceManager.GetString("XA0002", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid `android:versionCode` value `{0}` in `AndroidManifest.xml`. It must be an integer value.. /// @@ -192,7 +192,7 @@ public class Resources { return ResourceManager.GetString("XA0003", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid `android:versionCode` value `{0}` in `AndroidManifest.xml`. The value must be in the range of 0 to {1}.. /// @@ -201,7 +201,7 @@ public class Resources { return ResourceManager.GetString("XA0004", resourceCulture); } } - + /// /// Looks up a localized string similar to Building with JDK version `{0}` is not supported. Please install JDK version `{1}`. See https://aka.ms/xamarin/jdk9-errors. /// @@ -210,7 +210,7 @@ public class Resources { return ResourceManager.GetString("XA0030", resourceCulture); } } - + /// /// Looks up a localized string similar to Java SDK {0} or above is required when using {1}. ///Download the latest JDK at: https://aka.ms/msopenjdk @@ -221,7 +221,7 @@ public class Resources { return ResourceManager.GetString("XA0031", resourceCulture); } } - + /// /// Looks up a localized string similar to Java SDK {0} or above is required when using .NET 6 or higher. Download the latest JDK at: https://aka.ms/msopenjdk. /// @@ -230,7 +230,7 @@ public class Resources { return ResourceManager.GetString("XA0031_NET", resourceCulture); } } - + /// /// Looks up a localized string similar to Java SDK {0} or above is required when using Android SDK Build-Tools {1}.. /// @@ -239,7 +239,7 @@ public class Resources { return ResourceManager.GetString("XA0032", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to get the Java SDK version because the returned value does not appear to contain a valid version number. `{0} -version` returned: ```{1}```. /// @@ -248,7 +248,7 @@ public class Resources { return ResourceManager.GetString("XA0033", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to get the Java SDK version. Please ensure you have Java {0} or above installed.. /// @@ -257,7 +257,7 @@ public class Resources { return ResourceManager.GetString("XA0034", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to determine the Android ABI from the value '{0}'. Edit the project file in a text editor and set the 'RuntimeIdentifiers' MSBuild property to contain only valid identifiers for the Android platform.. /// @@ -266,7 +266,7 @@ public class Resources { return ResourceManager.GetString("XA0035", resourceCulture); } } - + /// /// Looks up a localized string similar to The 'AndroidSupportedAbis' MSBuild property is no longer supported. Edit the project file in a text editor, remove any uses of 'AndroidSupportedAbis', and use the 'RuntimeIdentifiers' MSBuild property instead.. /// @@ -275,7 +275,7 @@ public class Resources { return ResourceManager.GetString("XA0036", resourceCulture); } } - + /// /// Looks up a localized string similar to EmbeddedNativeLibrary '{0}' is invalid in Android Application projects. Please use AndroidNativeLibrary instead.. /// @@ -284,7 +284,7 @@ public class Resources { return ResourceManager.GetString("XA0100", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid value for `$(AndroidSequencePointsMode)`: {0}. /// @@ -293,7 +293,7 @@ public class Resources { return ResourceManager.GetString("XA0104", resourceCulture); } } - + /// /// Looks up a localized string similar to The $(TargetFrameworkVersion) for {0} ({1}) is greater than the $(TargetFrameworkVersion) for the application project ({2}). Please increase the $(TargetFrameworkVersion) for the application project.. /// @@ -302,7 +302,7 @@ public class Resources { return ResourceManager.GetString("XA0105", resourceCulture); } } - + /// /// Looks up a localized string similar to {0} is a Reference Assembly.. /// @@ -311,7 +311,7 @@ public class Resources { return ResourceManager.GetString("XA0107", resourceCulture); } } - + /// /// Looks up a localized string similar to Ignoring Reference Assembly `{0}`.. /// @@ -320,7 +320,7 @@ public class Resources { return ResourceManager.GetString("XA0107_Ignoring", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not get version from '{0}'. Defaulting to 1.0. /// @@ -329,7 +329,7 @@ public class Resources { return ResourceManager.GetString("XA0108", resourceCulture); } } - + /// /// Looks up a localized string similar to Unsupported version of AAPT2 found at path '{0}'. Open the project file in a text editor and remove the 'Aapt2ToolPath' MSBuild property or ensure it is set to a valid location.. /// @@ -338,7 +338,7 @@ public class Resources { return ResourceManager.GetString("XA0111", resourceCulture); } } - + /// /// Looks up a localized string similar to AAPT2 was not found at path '{0}'. Open the project file in a text editor and remove the 'Aapt2ToolPath' MSBuild property or ensure it is set to a valid location.. /// @@ -347,7 +347,7 @@ public class Resources { return ResourceManager.GetString("XA0112", resourceCulture); } } - + /// /// Looks up a localized string similar to Google Play requires that new applications and updates must use a TargetFrameworkVersion of {0} (API level {1}) or above. You are currently targeting {2} (API level {3}).. /// @@ -356,7 +356,7 @@ public class Resources { return ResourceManager.GetString("XA0113", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find `EmbeddedResource` named `{0}`.. /// @@ -365,7 +365,7 @@ public class Resources { return ResourceManager.GetString("XA0116", resourceCulture); } } - + /// /// Looks up a localized string similar to The TargetFrameworkVersion {0} is deprecated. Please update it to be v5.0 or higher.. /// @@ -374,7 +374,7 @@ public class Resources { return ResourceManager.GetString("XA0117", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not parse '{0}'. /// @@ -383,7 +383,7 @@ public class Resources { return ResourceManager.GetString("XA0118_Parse", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not resolve `target` in lock file for '{0}'. /// @@ -392,7 +392,7 @@ public class Resources { return ResourceManager.GetString("XA0118_Target", resourceCulture); } } - + /// /// Looks up a localized string similar to Using Fast Deployment and Android App Bundles at the same time is not currently supported. Use Fast Deployment for Debug configurations and Android App Bundles for Release configurations.. /// @@ -401,7 +401,7 @@ public class Resources { return ResourceManager.GetString("XA0119_AAB", resourceCulture); } } - + /// /// Looks up a localized string similar to Using fast deployment and AOT at the same time is not recommended. Use fast deployment for Debug configurations and AOT for Release configurations.. /// @@ -410,7 +410,7 @@ public class Resources { return ResourceManager.GetString("XA0119_AOT", resourceCulture); } } - + /// /// Looks up a localized string similar to Disabling the interpreter; using the interpreter and AOT at the same time is not supported. Use the interpreter for hot reload support in Debug configurations and AOT for Release configurations.. /// @@ -419,7 +419,7 @@ public class Resources { return ResourceManager.GetString("XA0119_Interpreter", resourceCulture); } } - + /// /// Looks up a localized string similar to Using fast deployment and the linker at the same time is not recommended. Use fast deployment for Debug configurations and the linker for Release configurations.. /// @@ -428,7 +428,7 @@ public class Resources { return ResourceManager.GetString("XA0119_LinkMode", resourceCulture); } } - + /// /// Looks up a localized string similar to Using fast deployment and a code shrinker at the same time is not recommended. Use fast deployment for Debug configurations and a code shrinker for Release configurations.. /// @@ -437,7 +437,7 @@ public class Resources { return ResourceManager.GetString("XA0119_LinkTool", resourceCulture); } } - + /// /// Looks up a localized string similar to Assembly '{0}' is using '[assembly: {1}]', which is no longer supported. Use a newer version of this NuGet package or notify the library author.. /// @@ -446,7 +446,7 @@ public class Resources { return ResourceManager.GetString("XA0121", resourceCulture); } } - + /// /// Looks up a localized string similar to Assembly '{0}' is using a deprecated attribute '[assembly: {1}]'. Use a newer version of this NuGet package or notify the library author.. /// @@ -455,7 +455,7 @@ public class Resources { return ResourceManager.GetString("XA0122", resourceCulture); } } - + /// /// Looks up a localized string similar to Removing {0} from {1}. Lint {2} does not support this check.. /// @@ -464,7 +464,7 @@ public class Resources { return ResourceManager.GetString("XA0123", resourceCulture); } } - + /// /// Looks up a localized string similar to '{0}' is using a deprecated debug information level. ///Set the debugging information to Portable in the Visual Studio project property pages or edit the project file in a text editor and set the 'DebugType' MSBuild property to 'portable' to use the newer, cross-platform debug information level. @@ -475,7 +475,7 @@ public class Resources { return ResourceManager.GetString("XA0125", resourceCulture); } } - + /// /// Looks up a localized string similar to There was a problem parsing {0}. This is likely due to incomplete or invalid XML. Exception: {1}. /// @@ -484,7 +484,7 @@ public class Resources { return ResourceManager.GetString("XA1000", resourceCulture); } } - + /// /// Looks up a localized string similar to AndroidResgen: Warning while updating resource XML '{0}': {1}. /// @@ -493,7 +493,7 @@ public class Resources { return ResourceManager.GetString("XA1001", resourceCulture); } } - + /// /// Looks up a localized string similar to The closest match found for '{0}' is '{1}', but the capitalization does not match. Please correct the capitalization.. /// @@ -502,7 +502,7 @@ public class Resources { return ResourceManager.GetString("XA1002", resourceCulture); } } - + /// /// Looks up a localized string similar to Attempting basic type name matching for element with ID '{0}' and type '{1}'. /// @@ -511,7 +511,7 @@ public class Resources { return ResourceManager.GetString("XA1005", resourceCulture); } } - + /// /// Looks up a localized string similar to If basic type name matching fails, please add a `xamarin:managedType` attribute to the element to specify the fully qualified managed type name of the element.. /// @@ -520,7 +520,7 @@ public class Resources { return ResourceManager.GetString("XA1005_Instructions", resourceCulture); } } - + /// /// Looks up a localized string similar to The TargetFrameworkVersion (Android API level {0}) is higher than the targetSdkVersion ({1}). Please increase the `android:targetSdkVersion` in the `AndroidManifest.xml` so that the API levels match.. /// @@ -529,7 +529,7 @@ public class Resources { return ResourceManager.GetString("XA1006", resourceCulture); } } - + /// /// Looks up a localized string similar to The minSdkVersion ({0}) is greater than the targetSdkVersion. Please change the value such that the minSdkVersion is less than or equal to the targetSdkVersion ({1}).. /// @@ -538,7 +538,7 @@ public class Resources { return ResourceManager.GetString("XA1007", resourceCulture); } } - + /// /// Looks up a localized string similar to The TargetFrameworkVersion (Android API level {0}) is lower than the targetSdkVersion ({1}). Please increase the `$(TargetFrameworkVersion)` or decrease the `android:targetSdkVersion` in the `AndroidManifest.xml` so that the API levels match.. /// @@ -547,7 +547,7 @@ public class Resources { return ResourceManager.GetString("XA1008", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid `$(AndroidManifestPlaceholders)` value for Android manifest placeholders. Please use `key1=value1;key2=value2` format. The specified value was: `{0}`. /// @@ -556,7 +556,7 @@ public class Resources { return ResourceManager.GetString("XA1010", resourceCulture); } } - + /// /// Looks up a localized string similar to Using ProGuard with the D8 DEX compiler is no longer supported. Please set the code shrinker to 'r8' in the Visual Studio project property pages or edit the project file in a text editor and set the 'AndroidLinkTool' MSBuild property to 'r8'.. /// @@ -565,7 +565,7 @@ public class Resources { return ResourceManager.GetString("XA1011", resourceCulture); } } - + /// /// Looks up a localized string similar to Included layout root element override ID '{0}' is not valid.. /// @@ -574,7 +574,7 @@ public class Resources { return ResourceManager.GetString("XA1012", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to parse ID of node '{0}' in the layout file '{1}'.. /// @@ -583,7 +583,7 @@ public class Resources { return ResourceManager.GetString("XA1013", resourceCulture); } } - + /// /// Looks up a localized string similar to JAR library references with identical file names but different contents were found: {0}. Please remove any conflicting libraries from EmbeddedJar, InputJar and AndroidJavaLibrary.. /// @@ -592,7 +592,7 @@ public class Resources { return ResourceManager.GetString("XA1014", resourceCulture); } } - + /// /// Looks up a localized string similar to More than one Android Wear project is specified as the paired project. It can be at most one.. /// @@ -601,7 +601,7 @@ public class Resources { return ResourceManager.GetString("XA1015", resourceCulture); } } - + /// /// Looks up a localized string similar to Target Wear application's project '{0}' does not specify required 'AndroidManifest' project property.. /// @@ -610,7 +610,7 @@ public class Resources { return ResourceManager.GetString("XA1016", resourceCulture); } } - + /// /// Looks up a localized string similar to Target Wear application's AndroidManifest.xml does not specify required 'package' attribute.. /// @@ -619,7 +619,7 @@ public class Resources { return ResourceManager.GetString("XA1017", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified AndroidManifest file does not exist: {0}.. /// @@ -628,7 +628,7 @@ public class Resources { return ResourceManager.GetString("XA1018", resourceCulture); } } - + /// /// Looks up a localized string similar to `LibraryProjectProperties` file `{0}` is located in a parent directory of the bindings project's intermediate output directory. Please adjust the path to use the original `project.properties` file directly from the Android library project directory.. /// @@ -637,7 +637,7 @@ public class Resources { return ResourceManager.GetString("XA1019", resourceCulture); } } - + /// /// Looks up a localized string similar to At least one Java library is required for binding. Check that a Java library is included in the project and has the appropriate build action: 'LibraryProjectZip' (for AAR or ZIP), 'EmbeddedJar', 'InputJar' (for JAR), or 'LibraryProjectProperties' (project.properties).. /// @@ -646,7 +646,7 @@ public class Resources { return ResourceManager.GetString("XA1020", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified source Java library not found: {0}. /// @@ -655,7 +655,7 @@ public class Resources { return ResourceManager.GetString("XA1021", resourceCulture); } } - + /// /// Looks up a localized string similar to Specified reference Java library not found: {0}. /// @@ -664,7 +664,7 @@ public class Resources { return ResourceManager.GetString("XA1022", resourceCulture); } } - + /// /// Looks up a localized string similar to Using the DX DEX Compiler is not supported. Please set the DEX compiler to 'd8' in the Visual Studio project property pages or edit the project file in a text editor and set the 'AndroidDexTool' MSBuild property to 'd8'.. /// @@ -673,7 +673,7 @@ public class Resources { return ResourceManager.GetString("XA1023", resourceCulture); } } - + /// /// Looks up a localized string similar to Ignoring configuration file '{0}'. .NET configuration files are not supported in Xamarin.Android projects that target .NET 6 or higher.. /// @@ -682,7 +682,7 @@ public class Resources { return ResourceManager.GetString("XA1024", resourceCulture); } } - + /// /// Looks up a localized string similar to The experimental 'Hybrid' value for the 'AndroidAotMode' MSBuild property is not currently compatible with the armeabi-v7a target ABI. To continue using the experimental 'Hybrid' value for 'AndroidAotMode', deselect the armeabi-v7a target ABI in the Visual Studio project property pages or edit the project file in a text editor and remove 'armeabi-v7a' from the 'AndroidSupportedAbis' MSBuild property.. /// @@ -691,7 +691,7 @@ public class Resources { return ResourceManager.GetString("XA1025", resourceCulture); } } - + /// /// Looks up a localized string similar to Using AAPT is deprecated in favor of AAPT2. Please enable 'Use incremental Android packaging system (aapt2)' in the Visual Studio project property pages or edit the project file in a text editor and set the 'AndroidUseAapt2' MSBuild property to 'true'.. /// @@ -700,7 +700,7 @@ public class Resources { return ResourceManager.GetString("XA1026", resourceCulture); } } - + /// /// Looks up a localized string similar to Using AAPT is not supported in Xamarin.Android projects that target .NET 6 or higher. Please enable 'Use incremental Android packaging system (aapt2)' in the Visual Studio project property pages or edit the project file in a text editor and set the 'AndroidUseAapt2' MSBuild property to 'true'.. /// @@ -709,7 +709,7 @@ public class Resources { return ResourceManager.GetString("XA1026_dotnet", resourceCulture); } } - + /// /// Looks up a localized string similar to The 'EnableProguard' MSBuild property is set to 'true' and the 'AndroidLinkTool' MSBuild property is empty, so 'AndroidLinkTool' will default to 'proguard'.. /// @@ -718,7 +718,7 @@ public class Resources { return ResourceManager.GetString("XA1027", resourceCulture); } } - + /// /// Looks up a localized string similar to The 'AndroidEnableProguard' MSBuild property is set to 'true' and the 'AndroidLinkTool' MSBuild property is empty, so 'AndroidLinkTool' will default to 'proguard'.. /// @@ -727,7 +727,7 @@ public class Resources { return ResourceManager.GetString("XA1028", resourceCulture); } } - + /// /// Looks up a localized string similar to Use of AppDomain.CreateDomain() detected in assembly: {0}. .NET 6 and higher will only support a single AppDomain, so this API will no longer be available in Xamarin.Android once .NET 6 is released.. /// @@ -736,7 +736,7 @@ public class Resources { return ResourceManager.GetString("XA2000", resourceCulture); } } - + /// /// Looks up a localized string similar to Support for the 'MONO_GC_PARAMS=bridge-implementation=old' value will be removed in .NET 7.. /// @@ -745,7 +745,7 @@ public class Resources { return ResourceManager.GetString("XA2000_gcParams_bridgeImpl", resourceCulture); } } - + /// /// Looks up a localized string similar to Source file '{0}' could not be found.. /// @@ -754,7 +754,7 @@ public class Resources { return ResourceManager.GetString("XA2001", resourceCulture); } } - + /// /// Looks up a localized string similar to Can not resolve reference: `{0}`, referenced by {1}. Perhaps it doesn't exist in the Mono for Android profile?. /// @@ -763,7 +763,7 @@ public class Resources { return ResourceManager.GetString("XA2002_Framework", resourceCulture); } } - + /// /// Looks up a localized string similar to Can not resolve reference: `{0}`, referenced by {1}. Please add a NuGet package or assembly reference for `{0}`, or remove the reference to `{2}`.. /// @@ -772,7 +772,7 @@ public class Resources { return ResourceManager.GetString("XA2002_NuGet", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not resolve reference to '{0}' (defined in assembly '{1}') with scope '{2}'. When the scope is different from the defining assembly, it usually means that the type is forwarded.. /// @@ -781,7 +781,7 @@ public class Resources { return ResourceManager.GetString("XA2006", resourceCulture); } } - + /// /// Looks up a localized string similar to Exception while loading assemblies: {0}. /// @@ -790,7 +790,7 @@ public class Resources { return ResourceManager.GetString("XA2007", resourceCulture); } } - + /// /// Looks up a localized string similar to In referenced assembly {0}, Java.Interop.DoNotPackageAttribute requires non-null file name.. /// @@ -799,7 +799,7 @@ public class Resources { return ResourceManager.GetString("XA2008", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not AOT the assembly: {0}. /// @@ -808,7 +808,7 @@ public class Resources { return ResourceManager.GetString("XA3001", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid AOT mode: {0}. /// @@ -817,7 +817,7 @@ public class Resources { return ResourceManager.GetString("XA3002", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not strip IL of assembly: {0}. /// @@ -826,7 +826,7 @@ public class Resources { return ResourceManager.GetString("XA3003", resourceCulture); } } - + /// /// Looks up a localized string similar to Android NDK r10d is buggy and provides an incompatible x86_64 libm.so. See https://code.google.com/p/android/issues/detail?id=161422.. /// @@ -835,7 +835,7 @@ public class Resources { return ResourceManager.GetString("XA3004", resourceCulture); } } - + /// /// Looks up a localized string similar to The detected Android NDK version is incompatible with the targeted LLVM configuration. Please upgrade to NDK r10d or newer.. /// @@ -844,7 +844,7 @@ public class Resources { return ResourceManager.GetString("XA3005", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not compile native assembly file: {0}. /// @@ -853,7 +853,7 @@ public class Resources { return ResourceManager.GetString("XA3006", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not link native shared library: {0}. /// @@ -862,7 +862,7 @@ public class Resources { return ResourceManager.GetString("XA3007", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to generate Java type for class: {0} due to {1}. /// @@ -871,7 +871,7 @@ public class Resources { return ResourceManager.GetString("XA4209", resourceCulture); } } - + /// /// Looks up a localized string similar to Please add a reference to Mono.Android.Export.dll when using ExportAttribute or ExportFieldAttribute.. /// @@ -880,7 +880,7 @@ public class Resources { return ResourceManager.GetString("XA4210", resourceCulture); } } - + /// /// Looks up a localized string similar to AndroidManifest.xml //uses-sdk/@android:targetSdkVersion '{0}' is less than $(TargetFrameworkVersion) '{1}'. Using API-{2} for ACW compilation.. /// @@ -889,7 +889,7 @@ public class Resources { return ResourceManager.GetString("XA4211", resourceCulture); } } - + /// /// Looks up a localized string similar to The type '{0}' must provide a public default constructor. /// @@ -898,7 +898,7 @@ public class Resources { return ResourceManager.GetString("XA4213", resourceCulture); } } - + /// /// Looks up a localized string similar to The managed type `{0}` exists in multiple assemblies: {1}. Please refactor the managed type names in these assemblies so that they are not identical.. /// @@ -907,7 +907,7 @@ public class Resources { return ResourceManager.GetString("XA4214", resourceCulture); } } - + /// /// Looks up a localized string similar to References to the type `{0}` will refer to `{0}, {1}`.. /// @@ -916,7 +916,7 @@ public class Resources { return ResourceManager.GetString("XA4214_Result", resourceCulture); } } - + /// /// Looks up a localized string similar to The Java type `{0}` is generated by more than one managed type. Please change the [Register] attribute so that the same Java type is not emitted.. /// @@ -925,7 +925,7 @@ public class Resources { return ResourceManager.GetString("XA4215", resourceCulture); } } - + /// /// Looks up a localized string similar to `{0}` generated by: {1}. /// @@ -934,7 +934,7 @@ public class Resources { return ResourceManager.GetString("XA4215_Details", resourceCulture); } } - + /// /// Looks up a localized string similar to AndroidManifest.xml //uses-sdk/@android:minSdkVersion '{0}' is less than API-{1}, this configuration is not supported.. /// @@ -943,7 +943,7 @@ public class Resources { return ResourceManager.GetString("XA4216_MinSdkVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to AndroidManifest.xml //uses-sdk/@android:targetSdkVersion '{0}' is less than API-{1}, this configuration is not supported.. /// @@ -952,7 +952,7 @@ public class Resources { return ResourceManager.GetString("XA4216_TargetSdkVersion", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find //manifest/application/uses-library at path: {0}. /// @@ -961,7 +961,7 @@ public class Resources { return ResourceManager.GetString("XA4218", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find binding generator for language {0} or {1}.. /// @@ -970,7 +970,7 @@ public class Resources { return ResourceManager.GetString("XA4219", resourceCulture); } } - + /// /// Looks up a localized string similar to Partial class item '{0}' does not have an associated binding for layout '{1}'.. /// @@ -979,7 +979,7 @@ public class Resources { return ResourceManager.GetString("XA4220", resourceCulture); } } - + /// /// Looks up a localized string similar to No layout binding source files were generated.. /// @@ -988,7 +988,7 @@ public class Resources { return ResourceManager.GetString("XA4221", resourceCulture); } } - + /// /// Looks up a localized string similar to No widgets found for layout ({0}).. /// @@ -997,7 +997,7 @@ public class Resources { return ResourceManager.GetString("XA4222", resourceCulture); } } - + /// /// Looks up a localized string similar to Malformed full class name '{0}'. Missing namespace.. /// @@ -1006,7 +1006,7 @@ public class Resources { return ResourceManager.GetString("XA4223", resourceCulture); } } - + /// /// Looks up a localized string similar to Malformed full class name '{0}'. Missing class name.. /// @@ -1015,7 +1015,7 @@ public class Resources { return ResourceManager.GetString("XA4224", resourceCulture); } } - + /// /// Looks up a localized string similar to Widget '{0}' in layout '{1}' has multiple instances with different types. The property type will be set to: {2}. /// @@ -1024,7 +1024,7 @@ public class Resources { return ResourceManager.GetString("XA4225", resourceCulture); } } - + /// /// Looks up a localized string similar to Resource item '{0}' does not have the required metadata item '{1}'.. /// @@ -1033,7 +1033,7 @@ public class Resources { return ResourceManager.GetString("XA4226", resourceCulture); } } - + /// /// Looks up a localized string similar to Unable to find specified //activity-alias/@android:targetActivity: '{0}'. /// @@ -1042,7 +1042,7 @@ public class Resources { return ResourceManager.GetString("XA4228", resourceCulture); } } - + /// /// Looks up a localized string similar to Unrecognized `TransformFile` root element: {0}.. /// @@ -1051,7 +1051,7 @@ public class Resources { return ResourceManager.GetString("XA4229", resourceCulture); } } - + /// /// Looks up a localized string similar to Error parsing XML: {0}. /// @@ -1060,7 +1060,7 @@ public class Resources { return ResourceManager.GetString("XA4230", resourceCulture); } } - + /// /// Looks up a localized string similar to The Android class parser value '{0}' is deprecated and will be removed in a future version of Xamarin.Android. Update the project properties to use 'class-parse'.. /// @@ -1069,7 +1069,7 @@ public class Resources { return ResourceManager.GetString("XA4231", resourceCulture); } } - + /// /// Looks up a localized string similar to The Android code generation target '{0}' is deprecated and will be removed in a future version of Xamarin.Android. Update the project properties to use 'XAJavaInterop1'.. /// @@ -1078,7 +1078,7 @@ public class Resources { return ResourceManager.GetString("XA4232", resourceCulture); } } - + /// /// Looks up a localized string similar to The <AndroidNamespaceReplacement> for '{0}' does not specify a 'Replacement' attribute.. /// @@ -1087,7 +1087,7 @@ public class Resources { return ResourceManager.GetString("XA4233", resourceCulture); } } - + /// /// Looks up a localized string similar to Native library '{0}' will not be bundled because it has an unsupported ABI. Move this file to a directory with a valid Android ABI name such as 'libs/armeabi-v7a/'.. /// @@ -1096,7 +1096,7 @@ public class Resources { return ResourceManager.GetString("XA4300", resourceCulture); } } - + /// /// Looks up a localized string similar to APK already contains the item {0}; ignoring.. /// @@ -1105,7 +1105,7 @@ public class Resources { return ResourceManager.GetString("XA4301", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot determine ABI of native library '{0}'. Move this file to a directory with a valid Android ABI name such as 'libs/armeabi-v7a/'.. /// @@ -1114,7 +1114,7 @@ public class Resources { return ResourceManager.GetString("XA4301_ABI", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not determine ABI of some native libraries. Ignoring those: {0}. /// @@ -1123,7 +1123,7 @@ public class Resources { return ResourceManager.GetString("XA4301_ABI_Ignoring", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot determine ABI of native library '{0}'. Remove the '{1}' NuGet package, or notify the library author.. /// @@ -1132,7 +1132,7 @@ public class Resources { return ResourceManager.GetString("XA4301_ABI_NuGet", resourceCulture); } } - + /// /// Looks up a localized string similar to Unhandled exception merging `AndroidManifest.xml`: {0}. /// @@ -1141,7 +1141,7 @@ public class Resources { return ResourceManager.GetString("XA4302", resourceCulture); } } - + /// /// Looks up a localized string similar to Error extracting resources from "{0}": {1}. /// @@ -1150,7 +1150,7 @@ public class Resources { return ResourceManager.GetString("XA4303", resourceCulture); } } - + /// /// Looks up a localized string similar to ProGuard configuration file '{0}' was not found.. /// @@ -1159,7 +1159,7 @@ public class Resources { return ResourceManager.GetString("XA4304", resourceCulture); } } - + /// /// Looks up a localized string similar to Multidex is enabled, but `$(_AndroidMainDexListFile)` is empty.. /// @@ -1168,7 +1168,7 @@ public class Resources { return ResourceManager.GetString("XA4305", resourceCulture); } } - + /// /// Looks up a localized string similar to Multidex is enabled, but the `$(_AndroidMainDexListFile)` file '{0}' does not exist.. /// @@ -1177,7 +1177,7 @@ public class Resources { return ResourceManager.GetString("XA4305_File_Missing", resourceCulture); } } - + /// /// Looks up a localized string similar to R8 does not support `@(MultiDexMainDexList)` files when android:minSdkVersion >= 21. /// @@ -1186,7 +1186,7 @@ public class Resources { return ResourceManager.GetString("XA4306", resourceCulture); } } - + /// /// Looks up a localized string similar to Invalid ProGuard configuration file. {0}. /// @@ -1195,7 +1195,7 @@ public class Resources { return ResourceManager.GetString("XA4307", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to generate type maps. /// @@ -1204,7 +1204,7 @@ public class Resources { return ResourceManager.GetString("XA4308", resourceCulture); } } - + /// /// Looks up a localized string similar to 'MultiDexMainDexList' file '{0}' does not exist.. /// @@ -1213,7 +1213,7 @@ public class Resources { return ResourceManager.GetString("XA4309", resourceCulture); } } - + /// /// Looks up a localized string similar to `{0}` file `{1}` could not be found.. /// @@ -1222,7 +1222,7 @@ public class Resources { return ResourceManager.GetString("XA4310", resourceCulture); } } - + /// /// Looks up a localized string similar to The application won't contain the paired Wear package because the Wear application package APK is not created yet. If building on the command line, be sure to build the "SignAndroidPackage" target.. /// @@ -1231,7 +1231,7 @@ public class Resources { return ResourceManager.GetString("XA4311", resourceCulture); } } - + /// /// Looks up a localized string similar to Referencing the Android Wear application project '{0}' from an Android application project is deprecated and will no longer be supported in a future version of Xamarin.Android. Remove the Android Wear application project reference from the Android application project and distribute the Wear application as a standalone application instead.. /// @@ -1240,7 +1240,7 @@ public class Resources { return ResourceManager.GetString("XA4312", resourceCulture); } } - + /// /// Looks up a localized string similar to The built-in '{0}' reference has been deprecated. ///Remove the '{0}' reference from your project and add the '{1}' NuGet package instead. @@ -1251,7 +1251,7 @@ public class Resources { return ResourceManager.GetString("XA4313", resourceCulture); } } - + /// /// Looks up a localized string similar to `{0}` is empty. A value for `{0}` should be provided.. /// @@ -1260,7 +1260,7 @@ public class Resources { return ResourceManager.GetString("XA4314", resourceCulture); } } - + /// /// Looks up a localized string similar to Missing Android NDK toolchains directory '{0}'. Please install the Android NDK.. /// @@ -1269,7 +1269,7 @@ public class Resources { return ResourceManager.GetString("XA5101", resourceCulture); } } - + /// /// Looks up a localized string similar to C compiler for target {0} was not found. Tried paths: "{1}". /// @@ -1278,7 +1278,7 @@ public class Resources { return ResourceManager.GetString("XA5101_C_Compiler", resourceCulture); } } - + /// /// Looks up a localized string similar to Toolchain directory for target {0} was not found.. /// @@ -1287,7 +1287,7 @@ public class Resources { return ResourceManager.GetString("XA5101_Toolchain", resourceCulture); } } - + /// /// Looks up a localized string similar to Conversion from assembly to native code failed. Exit code {0}. /// @@ -1296,7 +1296,7 @@ public class Resources { return ResourceManager.GetString("XA5102", resourceCulture); } } - + /// /// Looks up a localized string similar to NDK C compiler exited with an error. Exit code {0}. /// @@ -1305,7 +1305,7 @@ public class Resources { return ResourceManager.GetString("XA5103", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not locate the Android NDK. Please make sure the Android NDK is installed in the Android SDK Manager, or if using a custom NDK path, please ensure the $(AndroidNdkDirectory) MSBuild property is set to the custom path.. /// @@ -1314,7 +1314,7 @@ public class Resources { return ResourceManager.GetString("XA5104", resourceCulture); } } - + /// /// Looks up a localized string similar to Toolchain utility '{0}' for target {1} was not found. Tried in path: "{2}". /// @@ -1323,7 +1323,7 @@ public class Resources { return ResourceManager.GetString("XA5105", resourceCulture); } } - + /// /// Looks up a localized string similar to NDK linker exited with an error. Exit code {0}. /// @@ -1332,7 +1332,7 @@ public class Resources { return ResourceManager.GetString("XA5201", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find `{0}`. Please install the Android SDK Build-Tools package with the `{1}{2}tools{2}{3}` program.. /// @@ -1341,7 +1341,7 @@ public class Resources { return ResourceManager.GetString("XA5205", resourceCulture); } } - + /// /// Looks up a localized string similar to Cannot find `{0}` in the Android SDK. Please set its path via /p:LintToolPath.. /// @@ -1350,7 +1350,7 @@ public class Resources { return ResourceManager.GetString("XA5205_Lint", resourceCulture); } } - + /// /// Looks up a localized string similar to Could not find android.jar for API level {0}. This means the Android SDK platform for API level {0} is not installed. Either install it in the Android SDK Manager ({2}), or change the Xamarin.Android project to target an API version that is installed. ({1} missing.). /// @@ -1359,7 +1359,7 @@ public class Resources { return ResourceManager.GetString("XA5207", resourceCulture); } } - + /// /// Looks up a localized string similar to Tools > Open Android SDK Manager.... /// @@ -1368,7 +1368,7 @@ public class Resources { return ResourceManager.GetString("XA5207_SDK_Manager_macOS", resourceCulture); } } - + /// /// Looks up a localized string similar to Tools > Android > Android SDK Manager.... /// @@ -1377,7 +1377,7 @@ public class Resources { return ResourceManager.GetString("XA5207_SDK_Manager_Windows", resourceCulture); } } - + /// /// Looks up a localized string similar to Embedded Wear app package name differs from handheld app package name ({0} != {1}).. /// @@ -1386,7 +1386,7 @@ public class Resources { return ResourceManager.GetString("XA5211", resourceCulture); } } - + /// /// Looks up a localized string similar to java.lang.OutOfMemoryError. Consider increasing the value of $(JavaMaximumHeapSize). Java ran out of memory while executing '{0} {1}'. /// @@ -1395,7 +1395,7 @@ public class Resources { return ResourceManager.GetString("XA5213", resourceCulture); } } - + /// /// Looks up a localized string similar to No Android platforms installed at '{0}'. Please install an SDK Platform with the `{1}{2}tools{2}{3}` program.. /// @@ -1404,7 +1404,7 @@ public class Resources { return ResourceManager.GetString("XA5300_Android_Platforms", resourceCulture); } } - + /// /// Looks up a localized string similar to The Android SDK directory could not be found. Check that the Android SDK Manager in Visual Studio shows a valid installation. To use a custom SDK path for a command line build, set the 'AndroidSdkDirectory' MSBuild property to the custom path.. /// @@ -1413,7 +1413,7 @@ public class Resources { return ResourceManager.GetString("XA5300_Android_SDK", resourceCulture); } } - + /// /// Looks up a localized string similar to The Java SDK directory could not be found. Ensure that the Android section of the Visual Studio options has a valid Java SDK directory configured. To use a custom SDK path for a command line build, set the 'JavaSdkDirectory' MSBuild property to the custom path.. /// @@ -1422,7 +1422,7 @@ public class Resources { return ResourceManager.GetString("XA5300_Java_SDK", resourceCulture); } } - + /// /// Looks up a localized string similar to Failed to generate Java type for class: {0} due to MAX_PATH: {1}. /// @@ -1431,7 +1431,7 @@ public class Resources { return ResourceManager.GetString("XA5301", resourceCulture); } } - + /// /// Looks up a localized string similar to Two processes may be building this project at once. Lock file exists at path: {0}. /// @@ -1440,5 +1440,32 @@ public class Resources { return ResourceManager.GetString("XA5302", resourceCulture); } } + + /// + /// Looks up a localized string similar to Two processes may be building this project at once. Lock file exists at path: {0}. + /// + public static string XA1031 { + get { + return ResourceManager.GetString("XA1031", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Two processes may be building this project at once. Lock file exists at path: {0}. + /// + public static string XA1032 { + get { + return ResourceManager.GetString("XA1032", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Two processes may be building this project at once. Lock file exists at path: {0}. + /// + public static string XA1033 { + get { + return ResourceManager.GetString("XA1033", resourceCulture); + } + } } } diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.cs.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.cs.resx index 809abb2d9d5..90bfdb56cd5 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.cs.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.cs.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i Vlastnost MSBuild RunAOTCompilation se podporuje jen tehdy, když je povolené trimování. Upravte soubor projektu v textovém editoru, aby se vlastnost PublishTrimmed pro tuto konfiguraci sestavení nastavila na true. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + Použití funkce AppDomain.CreateDomain() zjištěné v sestavení: {0}. .NET 6 a vyšší bude podporovat jenom jednu doménu AppDomain, takže toto rozhraní API už nebude dostupné v Xamarin.Android po vydání .NET 6. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.de.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.de.resx index 9abe6da287a..ee287dea9b1 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.de.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.de.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i Die MSBuild-Eigenschaft „RunAOTCompilation“ wird nur unterstützt, wenn die Kürzung aktiviert ist. Bearbeiten Sie die Projektdatei in einem Text-Editor, um „PublishTrimmed“ für diese Buildkonfiguration auf „wahr“ festzulegen. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + In der Assembly "{0}" wurde die Verwendung von "AppDomain.CreateDomain()" festgestellt. .NET 6 und höher unterstützt nur eine einzelne AppDomain, sodass diese API nach dem Release von .NET 6 nicht mehr in Xamarin.Android verfügbar ist. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.es.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.es.resx index 7aacd1ae47f..926b06ae35a 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.es.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.es.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i La propiedad "RunAOTCompilation" de MSBuild solo se admite cuando el recorte está habilitado. Edite el archivo del proyecto en un editor de texto para establecer "PublishTrimmed" en "true" para esta configuración de compilación. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + Se detectó el uso de AppDomain.CreateDomain() en el ensamblado: {0}. En .NET 6 y versiones posteriores solo se admitirá una instancia de AppDomain, por lo que esta API ya no estará disponible en Xamarin.Android una vez que se haya lanzado .NET 6. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.fr.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.fr.resx index 17533085f53..7d232a114ee 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.fr.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.fr.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i La propriété MSBuild « RunAOTCompilation » n’est prise en charge que lorsque le découpage est activé. Modifiez le fichier projet dans un éditeur de texte pour définir « PublishTrimmed » sur « true » pour cette configuration de build. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + Utilisation de AppDomain.CreateDomain() détectée dans l'assembly : {0}. .NET 6 et les versions ultérieures prend uniquement en charge un seul AppDomain. Cette API ne sera donc plus disponible dans Xamarin.Android après la publication de .NET 6. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.it.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.it.resx index df6c9faeae4..923f0d20448 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.it.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.it.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i La proprietà MSBuild 'RunAOTCompilation' è supportata solo quando è abilitato il troncamento. Modifica il file di progetto in un editor di testo per impostare 'PublishTrimmed' su 'true' per questa configurazione di compilazione. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + È stato rilevato l'uso di AppDomain.CreateDomain() nell'assembly: {0}. .NET 6 e versioni successive supporteranno solo un singolo AppDomain, quindi questa API non sarà più disponibile in Xamarin.Android dopo il rilascio di .NET 6. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ja.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ja.resx index cb8d3c94650..8f243046157 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ja.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ja.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i 'RunAOTCompilation' MSBuild プロパティは、トリミングが有効な場合にのみサポートされます。テキスト エディターでプロジェクト ファイルを編集して、このビルド構成の 'PublishTrimmed' を 'true' に設定します。 The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + アセンブリ {0} で AppDomain.CreateDomain() が使用されていることが検出されました。.NET 6 以降では単一の AppDomain のみがサポートされる予定のため、.NET 6 がリリースされるとこの API は Xamarin.Android では使用できなくなります。 The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ko.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ko.resx index aa23780f92b..82a30be7b16 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ko.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ko.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i 'RunAOTCompilation' MSBuild 속성은 트리밍이 활성화된 경우에만 지원됩니다. 텍스트 편집기에서 프로젝트 파일을 편집하여 이 빌드 구성에 대해 'PublishTrimmed'를 'true'로 설정합니다. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + 어셈블리에서 AppDomain.CreateDomain()의 사용이 검색되었습니다. {0}. .NET 6 이상에서는 단일 AppDomain만 지원하므로 .NET 6이 릴리스된 후에는 이 API를 Xamarin.Android에서 더 이상 사용할 수 없습니다. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.pl.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.pl.resx index 282a616cb14..4d43edbf0da 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.pl.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.pl.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i Właściwość „RunAOTCompilation” programu MSBuild jest obsługiwana tylko wtedy, gdy jest włączone przycinanie. Edytuj plik projektu w edytorze tekstu, aby ustawić właściwość „PublishTrimmed” na wartość „true” dla tej konfiguracji kompilacji. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + Wykryto użycie metody AppDomain.CreateDomain() w zestawie: {0}. Platforma .NET 6 lub nowsza wersja obsługuje tylko jedną domenę aplikacji, dlatego ten interfejs API nie będzie już dostępny w rozszerzeniu Xamarin.Android po wydaniu platformy .NET 6. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.pt-BR.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.pt-BR.resx index 959b2e9ddff..e7ef34c86c0 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.pt-BR.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.pt-BR.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i A propriedade MSBuild 'RunAOTCompilation' só tem suporte quando o corte está habilitado. Edite o arquivo de projeto em um editor de texto para definir 'PublishTrimmed' como 'true' para esta configuração de compilação. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + O uso de AppDomain.CreateDomain() foi detectado no assembly: {0}. O .NET 6 e superior dará suporte apenas a um único AppDomain, portanto, esta API não estará mais disponível no Xamarin.Android quando o .NET 6 for lançado. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.resx index 0edc1651fc5..ac48bbe6967 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i The 'RunAOTCompilation' MSBuild property is only supported when trimming is enabled. Edit the project file in a text editor to set 'PublishTrimmed' to 'true' for this build configuration. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + Use of AppDomain.CreateDomain() detected in assembly: {0}. .NET 6 and higher will only support a single AppDomain, so this API will no longer be available in Xamarin.Android once .NET 6 is released. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ru.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ru.resx index 33e61c9074b..e47c0ac0e5d 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.ru.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.ru.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i Свойство MSBuild "RunAOTCompilation" поддерживается только при включенной обрезке. Измените файл проекта в текстовом редакторе и установите значение "true" для свойства "PublishTrimmed" для этой конфигурации сборки. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + В сборке обнаружено использование AppDomain.CreateDomain(): {0}. .NET 6 и более поздние версии будут поддерживать только один домен AppDomain, поэтому этот API больше не будет доступен в Xamarin.Android после выпуска .NET 6. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.tr.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.tr.resx index ff8f0dcfdef..7000626a7c1 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.tr.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.tr.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i 'RunAOTCompilation' MSBuild özelliği yalnızca kırpma etkinleştirildiğinde desteklenir. Bu yapı yapılandırması için 'PublishTrimmed' öğesini 'true' olarak ayarlamak için proje dosyasını bir metin düzenleyicide düzenleyin. The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + {0} bütünleştirilmiş kodunda AppDomain.CreateDomain() metodunun kullanıldığı saptandı. .NET 6 üstünde yalnızca tek bir AppDomain destekleneceğinden bu API, .NET 6 yayımlandıktan sonra artık Xamarin.Android içinde bulunmayacaktır. The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hans.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hans.resx index 4fc7671d343..b06d60bf934 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hans.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hans.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i 仅当启用剪裁时,才支持 “RunAOTCompilation” MSBuild 属性。在文本编辑器中编辑项目文件,以将此生成配置的 “PublishTrimmed” 设置为 “true”。 The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + 在程序集 {0} 中检测到使用了 AppDomain.CreateDomain()。.NET 6 及更高版本将仅支持一个 AppDomain,因此 .NET 6 发布后,将无法再在 Xamarin.Android 中使用此 API。 The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hant.resx b/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hant.resx index c6f6ec29ee9..f5b80b580da 100644 --- a/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hant.resx +++ b/src/Xamarin.Android.Build.Tasks/Properties/Resources.zh-Hant.resx @@ -470,6 +470,24 @@ In this message, the term "binding" means a piece of generated code that makes i 只有在啟用 [修剪] 時,才支援 'RunAOTCompilation' MSBuild 屬性。在文字編輯器中編輯專案檔案,以將此組建組態的 'PublishTrimmed' 設為 'true'。 The following are literal names and should not be translated: 'RunAOTCompilation', 'PublishTrimmed' + + The 'AndroidHttpClientHandlerType' property value '{0}' must derive from '{1}'. +Please change the value to an assembly-qualifed type name which inherits from '{1}' or remove the property completely. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - A type from which the AndroidHttpClientHandlerType should derive . + + + Failed to resolve '{0}' from '{1}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. +{1} - The name of the assembly. + + + Could not resolve '{0}'. Please check your `AndroidHttpClientHandlerType` setting. + The following are literal names and should not be translated: 'AndroidHttpClientHandlerType', +{0} - The value of the property. + 在下列組件中偵測到使用 AppDomain.CreateDomain(): {0}。.NET 6 及更新版本只支援單一 AppDomain,因此在 .NET 6 發行之後,此 API 就無法再於 Xamarin.Android 中使用。 The following are literal names and should not be translated: AppDomain.CreateDomain(), AppDomain diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2Link.cs b/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2Link.cs index cf3b0fc3384..c70cfb09fb7 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2Link.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/Aapt2Link.cs @@ -4,6 +4,7 @@ using System.Diagnostics; using System.IO; using System.Linq; +using System.Text; using System.Threading; using System.Xml; using System.Xml.Linq; @@ -79,8 +80,8 @@ public class Aapt2Link : Aapt2 { AssemblyIdentityMap assemblyMap = new AssemblyIdentityMap (); List tempFiles = new List (); + SortedSet rulesFiles = new SortedSet (); Dictionary apks = new Dictionary (); - string proguardRuleOutputTemp; protected override int GetRequiredDaemonInstances () { @@ -92,8 +93,6 @@ public async override System.Threading.Tasks.Task RunTaskAsync () try { assemblyMap.Load (Path.Combine (WorkingDirectory, AssemblyIdentityMapFile)); - proguardRuleOutputTemp = GetTempFile (); - await this.WhenAll (ManifestFiles, ProcessManifest); ProcessOutput (); @@ -120,8 +119,19 @@ public async override System.Threading.Tasks.Task RunTaskAsync () } } } - if (!string.IsNullOrEmpty (ProguardRuleOutput)) - Files.CopyIfChanged (proguardRuleOutputTemp, ProguardRuleOutput); + if (!string.IsNullOrEmpty (ProguardRuleOutput)) { + // combine the "proguard" temp files into one file. + var sb = new StringBuilder (); + sb.AppendLine ("#Auto Generated file. Do not Edit."); + lock (rulesFiles) { + foreach (var file in rulesFiles) { + sb.AppendLine ($"# Data from {file}"); + foreach (var line in File.ReadLines (file)) + sb.AppendLine (line); + } + } + Files.CopyIfStringChanged (sb.ToString (), ProguardRuleOutput); + } } finally { lock (tempFiles) { foreach (var temp in tempFiles) { @@ -285,7 +295,7 @@ public async override System.Threading.Tasks.Task RunTaskAsync () if (!string.IsNullOrEmpty (ProguardRuleOutput)) { cmd.Add ("--proguard"); - cmd.Add (GetFullPath (proguardRuleOutputTemp)); + cmd.Add (GetFullPath (GetManifestRulesFile (manifestDir))); } cmd.Add ("-o"); cmd.Add (GetFullPath (currentResourceOutputFile)); @@ -341,6 +351,14 @@ void ProcessManifest (ITaskItem manifestFile) } } + string GetManifestRulesFile (string manifestDir) + { + string rulesFile = Path.Combine (manifestDir, "aapt_rules.txt"); + lock (rulesFiles) + rulesFiles.Add (rulesFile); + return rulesFile; + } + string GetTempFile () { var temp = Path.GetTempFileName (); diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/CheckClientHandlerType.cs b/src/Xamarin.Android.Build.Tasks/Tasks/CheckClientHandlerType.cs new file mode 100644 index 00000000000..34c12d2bfc9 --- /dev/null +++ b/src/Xamarin.Android.Build.Tasks/Tasks/CheckClientHandlerType.cs @@ -0,0 +1,89 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using System.IO; +using Microsoft.Android.Build.Tasks; +using Java.Interop.Tools.Cecil; +using Mono.Cecil; + +namespace Xamarin.Android.Tasks +{ + public class CheckClientHandlerType : AndroidTask + { + public override string TaskPrefix => "CCHT"; + + [Required] + public string ClientHandlerType { get; set; } + [Required] + public string ValidHandlerType { get; set; } + [Required] + public ITaskItem[] ResolvedAssemblies { get; set; } + + public override bool RunTask () + { + string[] types = ClientHandlerType.Split (','); + string type = types[0].Trim (); + string assembly = "Mono.Android"; + + if (types.Length > 1) { + assembly = types[1].Trim (); + } + // load the assembly. + ITaskItem foundAssembly = null; + foreach (var asm in ResolvedAssemblies) { + string filename = Path.GetFileNameWithoutExtension (asm.ItemSpec); + if (string.CompareOrdinal (assembly, filename) == 0) { + foundAssembly = asm; + break; + } + } + if (foundAssembly == null) { + Log.LogCodedError ("XA1033", Xamarin.Android.Tasks.Properties.Resources.XA1033, assembly); + return !Log.HasLoggedErrors; + } + // find the type. + var readerParameters = new ReaderParameters { + ReadSymbols = false, + }; + using (var resolver = new DirectoryAssemblyResolver (this.CreateTaskLogger (), loadDebugSymbols: false, loadReaderParameters: readerParameters)) { + foreach (var asm in ResolvedAssemblies) { + var path = Path.GetFullPath (Path.GetDirectoryName (asm.ItemSpec)); + if (!resolver.SearchDirectories.Contains (path)) { + resolver.SearchDirectories.Add (path); + } + } + + var assemblyDefinition = resolver.GetAssembly (Path.GetFullPath (foundAssembly.ItemSpec)); + TypeDefinition handlerType = null; + foreach (var model in assemblyDefinition.Modules) { + handlerType = assemblyDefinition.MainModule.GetType (type); + if (handlerType != null) + break; + } + if (handlerType == null) { + Log.LogCodedError ("XA1032", Xamarin.Android.Tasks.Properties.Resources.XA1032, type, assembly); + return false; + } + + string[] valueHandlerTypes = ValidHandlerType.Split (','); + if (!Extends (handlerType, valueHandlerTypes [0].Trim ())) { + Log.LogCodedError ("XA1031", Xamarin.Android.Tasks.Properties.Resources.XA1031, type, valueHandlerTypes [0]); + } + + return !Log.HasLoggedErrors; + } + } + + static bool Extends (TypeDefinition type, string validBase) { + var bt = type.Resolve (); + while (bt != null) { + if (bt.FullName == validBase) + return true; + bt = bt.BaseType?.Resolve () ?? null; + } + return false; + } + } +} diff --git a/src/Xamarin.Android.Build.Tasks/Tasks/FilterAssemblies.cs b/src/Xamarin.Android.Build.Tasks/Tasks/FilterAssemblies.cs index a0b99b9dcbf..cf783c038d8 100644 --- a/src/Xamarin.Android.Build.Tasks/Tasks/FilterAssemblies.cs +++ b/src/Xamarin.Android.Build.Tasks/Tasks/FilterAssemblies.cs @@ -42,57 +42,62 @@ public override bool RunTask () if (frameworkReferenceName.StartsWith ("Microsoft.NETCore.", StringComparison.OrdinalIgnoreCase)) { continue; // No need to process BCL assemblies } - if (!File.Exists (assemblyItem.ItemSpec)) { - Log.LogDebugMessage ($"Skipping non-existent dependency '{assemblyItem.ItemSpec}'."); - continue; - } if (string.Equals (assemblyItem.GetMetadata ("TargetPlatformIdentifier"), "android", StringComparison.OrdinalIgnoreCase)) { output.Add (assemblyItem); continue; } - using (var pe = new PEReader (File.OpenRead (assemblyItem.ItemSpec))) { - var reader = pe.GetMetadataReader (); - // Check in-memory cache - var module = reader.GetModuleDefinition (); - var key = (nameof (FilterAssemblies), reader.GetGuid (module.Mvid)); - var value = BuildEngine4.GetRegisteredTaskObjectAssemblyLocal (key, Lifetime); - if (value is bool isMonoAndroidAssembly) { - if (isMonoAndroidAssembly) { - Log.LogDebugMessage ($"Cached: {assemblyItem.ItemSpec}"); - output.Add (assemblyItem); - } - continue; - } - // Check assembly definition - var assemblyDefinition = reader.GetAssemblyDefinition (); - if (IsAndroidAssembly (assemblyDefinition, reader)) { - output.Add (assemblyItem); - BuildEngine4.RegisterTaskObjectAssemblyLocal (key, value: true, Lifetime); - continue; - } - // Fallback to looking for a Mono.Android reference - if (MonoAndroidHelper.HasMonoAndroidReference (reader)) { - Log.LogDebugMessage ($"Mono.Android reference found: {assemblyItem.ItemSpec}"); - output.Add (assemblyItem); - BuildEngine4.RegisterTaskObjectAssemblyLocal (key, value: true, Lifetime); - continue; - } - // Fallback to looking for *.jar or __Android EmbeddedResource files - if (HasEmbeddedResource (reader)) { - Log.LogDebugMessage ($"EmbeddedResource found: {assemblyItem.ItemSpec}"); - output.Add (assemblyItem); - BuildEngine4.RegisterTaskObjectAssemblyLocal (key, value: true, Lifetime); - continue; - } - // Not a MonoAndroid assembly, store false - BuildEngine4.RegisterTaskObjectAssemblyLocal (key, value: false, Lifetime); + try { + ProcessAssembly (assemblyItem, output); + } catch (Exception e) when (e is FileNotFoundException || e is DirectoryNotFoundException) { + Log.LogDebugMessage ($"Skipping non-existent dependency '{assemblyItem.ItemSpec}'."); } + } OutputAssemblies = output.ToArray (); return !Log.HasLoggedErrors; } + void ProcessAssembly(ITaskItem assemblyItem, List output) + { + using var pe = new PEReader (File.OpenRead (assemblyItem.ItemSpec)); + var reader = pe.GetMetadataReader (); + // Check in-memory cache + var module = reader.GetModuleDefinition (); + var key = (nameof (FilterAssemblies), reader.GetGuid (module.Mvid)); + var value = BuildEngine4.GetRegisteredTaskObjectAssemblyLocal (key, Lifetime); + if (value is bool isMonoAndroidAssembly) { + if (isMonoAndroidAssembly) { + Log.LogDebugMessage ($"Cached: {assemblyItem.ItemSpec}"); + output.Add (assemblyItem); + } + return; + } + // Check assembly definition + var assemblyDefinition = reader.GetAssemblyDefinition (); + if (IsAndroidAssembly (assemblyDefinition, reader)) { + output.Add (assemblyItem); + BuildEngine4.RegisterTaskObjectAssemblyLocal (key, value: true, Lifetime); + return; + } + // Fallback to looking for a Mono.Android reference + if (MonoAndroidHelper.HasMonoAndroidReference (reader)) { + Log.LogDebugMessage ($"Mono.Android reference found: {assemblyItem.ItemSpec}"); + output.Add (assemblyItem); + BuildEngine4.RegisterTaskObjectAssemblyLocal (key, value: true, Lifetime); + return; + } + // Fallback to looking for *.jar or __Android EmbeddedResource files + if (HasEmbeddedResource (reader)) { + Log.LogDebugMessage ($"EmbeddedResource found: {assemblyItem.ItemSpec}"); + output.Add (assemblyItem); + BuildEngine4.RegisterTaskObjectAssemblyLocal (key, value: true, Lifetime); + return; + } + // Not a MonoAndroid assembly, store false + BuildEngine4.RegisterTaskObjectAssemblyLocal (key, value: false, Lifetime); + } + bool IsAndroidAssembly (AssemblyDefinition assembly, MetadataReader reader) { foreach (var handle in assembly.GetCustomAttributes ()) { diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/App.config b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/App.config index 18110d074d9..4431c3954ae 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/App.config +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/App.config @@ -7,6 +7,12 @@ + + + + + + diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/EnvironmentContentTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/EnvironmentContentTests.cs index b81f21fea37..4628d1533f5 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/EnvironmentContentTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/EnvironmentContentTests.cs @@ -194,6 +194,20 @@ public void CheckBuildIdIsUnique ([Values ("apk", "aab")] string packageFormat) } } + [Test] + public void CheckForInvalidHttpClientHandlerType () + { + var proj = new XamarinAndroidApplicationProject () { + IsRelease = true, + }; + using (var b = CreateApkBuilder ()) { + b.ThrowOnBuildFailure = false; + proj.SetProperty ("AndroidHttpClientHandlerType", "Android.App.Application"); + Assert.IsFalse (b.Build (proj), "Build should not have succeeded."); + Assert.IsTrue (StringAssertEx.ContainsText (b.LastBuildOutput, "XA1031"), "Output should contain XA1031"); + } + } + [Test] public void CheckHttpClientHandlerType () { @@ -203,8 +217,15 @@ public void CheckHttpClientHandlerType () var httpClientHandlerVarName = "XA_HTTP_CLIENT_HANDLER_TYPE"; var expectedDefaultValue = "System.Net.Http.HttpClientHandler, System.Net.Http"; var expectedUpdatedValue = "Xamarin.Android.Net.AndroidClientHandler"; + if (Builder.UseDotNet) { + expectedDefaultValue = "System.Net.Http.SocketsHttpHandler, System.Net.Http"; + expectedUpdatedValue = "Xamarin.Android.Net.AndroidMessageHandler"; + } + var supportedAbis = "armeabi-v7a;arm64-v8a"; proj.SetAndroidSupportedAbis (supportedAbis); + proj.PackageReferences.Add (new Package() { Id = "System.Net.Http", Version = "*" }); + proj.MainActivity = proj.DefaultMainActivity.Replace ("//${AFTER_ONCREATE}", "var _ = new System.Net.Http.HttpClient ();"); using (var b = CreateApkBuilder ()) { proj.SetProperty ("AndroidHttpClientHandlerType", expectedDefaultValue); diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/CheckClientHandlerTypeTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/CheckClientHandlerTypeTests.cs new file mode 100644 index 00000000000..b1e385ef7f0 --- /dev/null +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/CheckClientHandlerTypeTests.cs @@ -0,0 +1,91 @@ +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using Microsoft.Build.Framework; +using Microsoft.Build.Utilities; +using NUnit.Framework; +using Xamarin.Android.Tasks; +using Xamarin.Android.Tools; +using Xamarin.ProjectTools; +using Microsoft.Android.Build.Tasks; + +namespace Xamarin.Android.Build.Tests +{ + [Category ("Node-2")] + public class CheckClientHandlerTypeTests : BaseTest + { + [Test] + [TestCase ("Xamarin.Android.Net.AndroidMessageHandler", "System.Net.Http.HttpMessageHandler, System.Net.Http")] + [TestCase ("Xamarin.Android.Net.AndroidClientHandler", "System.Net.Http.HttpClientHandler, System.Net.Http")] + [TestCase ("System.Net.Http.SocketsHttpHandler, System.Net.Http", "System.Net.Http.HttpMessageHandler, System.Net.Http")] + public void ErrorIsNotRaised (string handler, string validBaseType) + { + string path = Path.Combine (Root, "temp", TestName); + Directory.CreateDirectory (path); + string intermediatePath; + var proj = new XamarinAndroidApplicationProject () { + IsRelease = false, + }; + proj.PackageReferences.Add (new Package() { Id = "System.Net.Http", Version = "*" }); + using (var b = CreateApkBuilder (path)) { + b.ThrowOnBuildFailure = false; + b.Build (proj); // we don't care it might error. + intermediatePath = Path.Combine (path,proj.IntermediateOutputPath); + } + string asmPath = Path.GetFullPath (Path.Combine (intermediatePath, "android", "assets")); + var errors = new List (); + var warnings = new List (); + List assemblies = new List (); + string[] files = Directory.GetFiles (asmPath, "*.dll"); + foreach (var file in files) + assemblies.Add (new TaskItem (file)); + IBuildEngine4 engine = new MockBuildEngine (System.Console.Out, errors, warnings); + var task = new CheckClientHandlerType () { + BuildEngine = engine, + ClientHandlerType = handler, + ResolvedAssemblies = assemblies.ToArray (), + ValidHandlerType = validBaseType, + }; + Assert.True (task.Execute (), $"task should have succeeded. {string.Join (";", errors.Select (x => x.Message))}"); + } + + [Test] +#if !NET_6 + [TestCase ("Xamarin.Android.Net.AndroidMessageHandler", "System.Net.Http.HttpClientHandler, System.Net.Http")] +#else + [TestCase ("Xamarin.Android.Net.AndroidClientHandler", "System.Net.Http.HttpMessageHandler, System.Net.Http")] +#endif + public void ErrorIsRaised (string handler, string validBaseType) + { + var path = Path.Combine (Root, "temp", TestName); + Directory.CreateDirectory (path); + string intermediatePath; + var proj = new XamarinAndroidApplicationProject () { + IsRelease = false, + }; + proj.PackageReferences.Add (new Package() { Id = "System.Net.Http", Version = "*" }); + using (var b = CreateApkBuilder ()) { + b.ThrowOnBuildFailure = false; + b.Build (proj); + intermediatePath = Path.Combine (path, proj.IntermediateOutputPath); + } + string asmPath = Path.Combine (intermediatePath, "android", "assets"); + var errors = new List (); + var warnings = new List (); + List assemblies = new List (); + string[] files = Directory.GetFiles (asmPath, "*.dll"); + foreach (var file in files) + assemblies.Add (new TaskItem (file)); + IBuildEngine4 engine = new MockBuildEngine (System.Console.Out, errors, warnings); + var task = new CheckClientHandlerType () { + BuildEngine = engine, + ClientHandlerType = handler, + ResolvedAssemblies = assemblies.ToArray (), + ValidHandlerType = validBaseType, + }; + Assert.False (task.Execute (), $"task should have failed."); + Assert.AreEqual (1, errors.Count, $"An Error should have been raised. {string.Join (" ", errors.Select (e => e.Message))}"); + } + } +} diff --git a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs index 0a630a47619..eaac7f551c2 100644 --- a/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs +++ b/src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/Tasks/LinkerTests.cs @@ -170,13 +170,17 @@ private void PreserveCustomHttpClientHandler (string handlerType, string handler } [Test] - [Category ("DotNetIgnore")] // HttpClientHandler options not implemented in .NET 5+ yet public void PreserveCustomHttpClientHandlers () { - PreserveCustomHttpClientHandler ("Xamarin.Android.Net.AndroidClientHandler", "", - "temp/PreserveAndroidHttpClientHandler", "android/assets/Mono.Android.dll"); - PreserveCustomHttpClientHandler ("System.Net.Http.MonoWebRequestHandler", "System.Net.Http", - "temp/PreserveMonoWebRequestHandler", "android/assets/System.Net.Http.dll"); + if (Builder.UseDotNet) { + PreserveCustomHttpClientHandler ("Xamarin.Android.Net.AndroidMessageHandler", "", + "temp/PreserveAndroidMessageHandler", "android-arm64/linked/Mono.Android.dll"); + PreserveCustomHttpClientHandler ("System.Net.Http.SocketsHttpHandler", "System.Net.Http", + "temp/PreserveSocketsHttpHandler", "android-arm64/linked/System.Net.Http.dll"); + } else { + PreserveCustomHttpClientHandler ("Xamarin.Android.Net.AndroidClientHandler", "", + "temp/PreserveAndroidHttpClientHandler", "android/assets/Mono.Android.dll"); + } } [Test] 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 a415e51ee10..7ca259a29f0 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,79 +5,82 @@ "Size": 3032 }, "assemblies/Java.Interop.dll": { - "Size": 58990 + "Size": 58924 }, "assemblies/Mono.Android.dll": { - "Size": 87490 + "Size": 87710 }, "assemblies/Mono.Android.Runtime.dll": { - "Size": 5860 + "Size": 5924 }, "assemblies/rc.bin": { "Size": 1182 }, "assemblies/System.Console.dll": { - "Size": 6627 + "Size": 6593 }, "assemblies/System.Linq.dll": { - "Size": 9252 + "Size": 9253 }, "assemblies/System.Private.CoreLib.dll": { - "Size": 470830 + "Size": 484001 }, "assemblies/System.Runtime.dll": { - "Size": 2626 + "Size": 2629 }, "assemblies/System.Runtime.InteropServices.dll": { - "Size": 2267 + "Size": 2269 }, "assemblies/UnnamedProject.dll": { - "Size": 3629 + "Size": 3628 }, "classes.dex": { "Size": 18968 }, + "lib/arm64-v8a/libmono-component-marshal-ilgen.so": { + "Size": 93552 + }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 434632 + "Size": 434704 }, "lib/arm64-v8a/libmonosgen-2.0.so": { - "Size": 3076080 + "Size": 3064488 }, "lib/arm64-v8a/libSystem.IO.Compression.Native.so": { "Size": 723840 }, "lib/arm64-v8a/libSystem.Native.so": { - "Size": 94136 + "Size": 94312 }, "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": { - "Size": 149552 + "Size": 150584 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 16128 + "Size": 16632 }, "META-INF/BNDLTOOL.RSA": { "Size": 1213 }, "META-INF/BNDLTOOL.SF": { - "Size": 2794 + "Size": 2914 }, "META-INF/MANIFEST.MF": { - "Size": 2667 + "Size": 2787 }, "res/drawable-hdpi-v4/icon.png": { - "Size": 4762 + "Size": 2178 }, "res/drawable-mdpi-v4/icon.png": { - "Size": 2200 + "Size": 1490 }, "res/drawable-xhdpi-v4/icon.png": { - "Size": 7462 + "Size": 3098 }, "res/drawable-xxhdpi-v4/icon.png": { - "Size": 13092 + "Size": 4674 }, "res/drawable-xxxhdpi-v4/icon.png": { - "Size": 20118 + "Size": 6832 }, "res/layout/main.xml": { "Size": 544 @@ -89,5 +92,5 @@ "Size": 1904 } }, - "PackageSize": 2590859 + "PackageSize": 2603241 } \ 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 1ba0e20a20c..87875ce958d 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 @@ -8,127 +8,127 @@ "Size": 7314 }, "assemblies/Java.Interop.dll": { - "Size": 66843 + "Size": 66797 }, "assemblies/Mono.Android.dll": { - "Size": 444299 + "Size": 444767 }, "assemblies/Mono.Android.Runtime.dll": { - "Size": 5921 + "Size": 5924 }, "assemblies/mscorlib.dll": { - "Size": 3860 + "Size": 3856 }, "assemblies/netstandard.dll": { - "Size": 5576 + "Size": 5572 }, "assemblies/rc.bin": { "Size": 1182 }, "assemblies/System.Collections.Concurrent.dll": { - "Size": 10725 + "Size": 10719 }, "assemblies/System.Collections.dll": { - "Size": 15465 + "Size": 15457 }, "assemblies/System.Collections.NonGeneric.dll": { - "Size": 7638 + "Size": 7629 }, "assemblies/System.ComponentModel.dll": { - "Size": 2158 + "Size": 2154 }, "assemblies/System.ComponentModel.Primitives.dll": { - "Size": 2649 + "Size": 2645 }, "assemblies/System.ComponentModel.TypeConverter.dll": { - "Size": 6206 + "Size": 6202 }, "assemblies/System.Console.dll": { - "Size": 6760 + "Size": 6758 }, "assemblies/System.Core.dll": { - "Size": 1988 + "Size": 1984 }, "assemblies/System.Diagnostics.TraceSource.dll": { - "Size": 6745 + "Size": 6741 }, "assemblies/System.dll": { - "Size": 2344 + "Size": 2340 }, "assemblies/System.Drawing.dll": { - "Size": 2029 + "Size": 2025 }, "assemblies/System.Drawing.Primitives.dll": { - "Size": 12160 + "Size": 12089 }, "assemblies/System.IO.Compression.dll": { - "Size": 16797 + "Size": 16979 }, "assemblies/System.IO.IsolatedStorage.dll": { - "Size": 10155 + "Size": 10160 }, "assemblies/System.Linq.dll": { - "Size": 19493 + "Size": 19598 }, "assemblies/System.Linq.Expressions.dll": { - "Size": 163967 + "Size": 163934 }, "assemblies/System.Net.Http.dll": { - "Size": 67013 + "Size": 66000 }, "assemblies/System.Net.Primitives.dll": { - "Size": 22021 + "Size": 22209 }, "assemblies/System.Net.Requests.dll": { - "Size": 3745 + "Size": 3741 }, "assemblies/System.ObjectModel.dll": { - "Size": 8173 + "Size": 8168 }, "assemblies/System.Private.CoreLib.dll": { - "Size": 775898 + "Size": 794848 }, "assemblies/System.Private.DataContractSerialization.dll": { - "Size": 192465 + "Size": 192421 }, "assemblies/System.Private.Uri.dll": { - "Size": 42550 + "Size": 42530 }, "assemblies/System.Private.Xml.dll": { - "Size": 215747 + "Size": 215888 }, "assemblies/System.Private.Xml.Linq.dll": { - "Size": 16813 + "Size": 16805 }, "assemblies/System.Runtime.dll": { - "Size": 2794 + "Size": 2791 }, "assemblies/System.Runtime.InteropServices.dll": { - "Size": 2273 + "Size": 2269 }, "assemblies/System.Runtime.Serialization.dll": { - "Size": 1950 + "Size": 1946 }, "assemblies/System.Runtime.Serialization.Formatters.dll": { - "Size": 2683 + "Size": 2679 }, "assemblies/System.Runtime.Serialization.Primitives.dll": { - "Size": 3856 + "Size": 3852 }, "assemblies/System.Security.Cryptography.dll": { - "Size": 7949 + "Size": 7946 }, "assemblies/System.Text.RegularExpressions.dll": { - "Size": 154213 + "Size": 155909 }, "assemblies/System.Xml.dll": { - "Size": 1837 + "Size": 1834 }, "assemblies/System.Xml.Linq.dll": { - "Size": 1862 + "Size": 1858 }, "assemblies/UnnamedProject.dll": { - "Size": 117372 + "Size": 117399 }, "assemblies/Xamarin.AndroidX.Activity.dll": { "Size": 5872 @@ -199,23 +199,26 @@ "classes.dex": { "Size": 3090508 }, + "lib/arm64-v8a/libmono-component-marshal-ilgen.so": { + "Size": 93552 + }, "lib/arm64-v8a/libmonodroid.so": { - "Size": 434632 + "Size": 434704 }, "lib/arm64-v8a/libmonosgen-2.0.so": { - "Size": 3078808 + "Size": 3064488 }, "lib/arm64-v8a/libSystem.IO.Compression.Native.so": { "Size": 723840 }, "lib/arm64-v8a/libSystem.Native.so": { - "Size": 94136 + "Size": 94312 }, "lib/arm64-v8a/libSystem.Security.Cryptography.Native.Android.so": { - "Size": 149552 + "Size": 150584 }, "lib/arm64-v8a/libxamarin-app.so": { - "Size": 333376 + "Size": 333632 }, "META-INF/android.support.design_material.version": { "Size": 12 @@ -329,13 +332,13 @@ "Size": 1213 }, "META-INF/BNDLTOOL.SF": { - "Size": 79083 + "Size": 79203 }, "META-INF/com.google.android.material_material.version": { "Size": 10 }, "META-INF/MANIFEST.MF": { - "Size": 78956 + "Size": 79076 }, "META-INF/proguard/androidx-annotations.pro": { "Size": 339 @@ -782,7 +785,7 @@ "Size": 470 }, "res/drawable-hdpi-v4/icon.png": { - "Size": 4762 + "Size": 2178 }, "res/drawable-hdpi-v4/notification_bg_low_normal.9.png": { "Size": 212 @@ -992,7 +995,7 @@ "Size": 309 }, "res/drawable-mdpi-v4/icon.png": { - "Size": 2200 + "Size": 1490 }, "res/drawable-mdpi-v4/notification_bg_low_normal.9.png": { "Size": 215 @@ -1220,7 +1223,7 @@ "Size": 593 }, "res/drawable-xhdpi-v4/icon.png": { - "Size": 7462 + "Size": 3098 }, "res/drawable-xhdpi-v4/notification_bg_low_normal.9.png": { "Size": 221 @@ -1385,7 +1388,7 @@ "Size": 868 }, "res/drawable-xxhdpi-v4/icon.png": { - "Size": 13092 + "Size": 4674 }, "res/drawable-xxxhdpi-v4/abc_btn_check_to_on_mtrl_000.png": { "Size": 275 @@ -1472,7 +1475,7 @@ "Size": 1155 }, "res/drawable-xxxhdpi-v4/icon.png": { - "Size": 20118 + "Size": 6832 }, "res/drawable/abc_btn_borderless_material.xml": { "Size": 588 @@ -1970,5 +1973,5 @@ "Size": 341228 } }, - "PackageSize": 7971397 + "PackageSize": 7991971 } \ No newline at end of file diff --git a/src/Xamarin.Android.Build.Tasks/Utilities/LlvmIrGenerator/LlvmIrGenerator.cs b/src/Xamarin.Android.Build.Tasks/Utilities/LlvmIrGenerator/LlvmIrGenerator.cs index eafeb39e173..2a35b407b67 100644 --- a/src/Xamarin.Android.Build.Tasks/Utilities/LlvmIrGenerator/LlvmIrGenerator.cs +++ b/src/Xamarin.Android.Build.Tasks/Utilities/LlvmIrGenerator/LlvmIrGenerator.cs @@ -1,4 +1,5 @@ using System; +using System.Buffers; using System.Collections.Generic; using System.IO; using System.Text; @@ -405,22 +406,22 @@ void WriteGlobalSymbolStart (string symbolName, LlvmIrVariableOptions options, T { output = EnsureOutput (output); - var sb = new StringBuilder (llvmLinkage[options.Linkage]); - if (options.AddressSignificance != LlvmIrAddressSignificance.Default) { - if (sb.Length > 0) { - sb.Append (' '); - } + output.Write ('@'); + output.Write (symbolName); + output.Write (" = "); - sb.Append (llvmAddressSignificance[options.AddressSignificance]); + var linkage = llvmLinkage [options.Linkage]; + if (!string.IsNullOrEmpty (linkage)) { + output.Write (linkage); + output.Write (' '); } - - if (sb.Length > 0) { - sb.Append (' '); + if (options.AddressSignificance != LlvmIrAddressSignificance.Default) { + output.Write (llvmAddressSignificance[options.AddressSignificance]); + output.Write (' '); } - sb.Append (llvmWritability[options.Writability]); - - output.Write ($"@{symbolName} = {sb.ToString ()} "); + output.Write (llvmWritability[options.Writability]); + output.Write (' '); } object? GetTypedMemberValue (StructureInfo info, StructureMemberInfo smi, StructureInstance instance, Type expectedType, object? defaultValue = null) @@ -476,7 +477,15 @@ bool MaybeWritePreAllocatedBuffer (StructureInfo info, StructureMemberInfo WriteGlobalSymbolStart (variableName, preAllocatedBufferVariableOptions, output); ulong size = bufferSize * smi.BaseTypeSize; - output.WriteLine ($"[{bufferSize} x {irType}] zeroinitializer, align {GetAggregateAlignment ((int)smi.BaseTypeSize, size)}"); + + // WriteLine $"[{bufferSize} x {irType}] zeroinitializer, align {GetAggregateAlignment ((int)smi.BaseTypeSize, size)}" + output.Write ('['); + output.Write (bufferSize); + output.Write (" x "); + output.Write (irType); + output.Write ("] zeroinitializer, align "); + output.WriteLine (GetAggregateAlignment ((int) smi.BaseTypeSize, size)); + instance.AddPointerData (smi, variableName, size); return true; } @@ -505,7 +514,8 @@ void WriteStructureArrayEnd (StructureInfo info, string? symbolName, ulong output = EnsureOutput (output); int alignment = isArrayOfPointers ? PointerSize : GetAggregateAlignment (info.MaxFieldAlignment, info.Size * count); - output.Write ($", align {alignment}"); + output.Write (", align "); + output.Write (alignment); if (named && !skipFinalComment) { WriteEOL ($"end of '{symbolName!}' array", output); } else { @@ -519,8 +529,17 @@ void WriteStructureArrayEnd (StructureInfo info, string? symbolName, ulong public void WriteStructureArray (StructureInfo info, ulong count, LlvmIrVariableOptions options, string? symbolName = null, bool writeFieldComment = true, string? initialComment = null, bool isArrayOfPointers = false) { bool named = WriteStructureArrayStart (info, null, options, symbolName, initialComment); - string pointerAsterisk = isArrayOfPointers ? "*" : String.Empty; - Output.Write ($"[{count} x %{info.NativeTypeDesignator}.{info.Name}{pointerAsterisk}] zeroinitializer"); + + // $"[{count} x %{info.NativeTypeDesignator}.{info.Name}{pointerAsterisk}] zeroinitializer" + Output.Write ('['); + Output.Write (count); + Output.Write (" x %"); + Output.Write (info.NativeTypeDesignator); + Output.Write ('.'); + Output.Write (info.Name); + if (isArrayOfPointers) + Output.Write ('*'); + Output.Write ("] zeroinitializer"); WriteStructureArrayEnd (info, symbolName, (ulong)count, named, skipFinalComment: true, isArrayOfPointers: isArrayOfPointers); } @@ -545,7 +564,15 @@ public void WriteStructureArray (StructureInfo info, ulong count, string? bool named = WriteStructureArrayStart (info, instances, options, symbolName, initialComment, arrayOutput); int count = instances != null ? instances.Count : 0; - arrayOutput.Write ($"[{count} x %{info.NativeTypeDesignator}.{info.Name}] "); + // $"[{count} x %{info.NativeTypeDesignator}.{info.Name}] " + arrayOutput.Write ('['); + arrayOutput.Write (count); + arrayOutput.Write (" x %"); + arrayOutput.Write (info.NativeTypeDesignator); + arrayOutput.Write ('.'); + arrayOutput.Write (info.Name); + arrayOutput.Write ("] "); + if (instances != null) { var bodyWriterOptions = new StructureBodyWriterOptions ( writeFieldComment: true, @@ -556,18 +583,20 @@ public void WriteStructureArray (StructureInfo info, ulong count, string? buffersOutput: info.HasPreAllocatedBuffers ? new StringWriter () : null ); - arrayOutput.WriteLine ("["); + arrayOutput.WriteLine ('['); for (int i = 0; i < count; i++) { StructureInstance instance = instances[i]; - arrayOutput.WriteLine ($"{Indent}; {i}"); + arrayOutput.Write (Indent); + arrayOutput.Write ("; "); + arrayOutput.WriteLine (i); WriteStructureBody (info, instance, bodyWriterOptions, nestedStructureWriter); if (i < count - 1) { arrayOutput.Write (", "); } WriteEOL (output: arrayOutput); } - arrayOutput.Write ("]"); + arrayOutput.Write (']'); WriteBufferToOutput (bodyWriterOptions.StringsOutput); WriteBufferToOutput (bodyWriterOptions.BuffersOutput); @@ -614,14 +643,25 @@ public void WriteArray (IList values, string symbolName, string? initial WriteGlobalSymbolStart (symbolName, options); string elementType = MapManagedTypeToIR (typeof (T), out ulong size); - Output.WriteLine ($"[{values.Count} x {elementType}] ["); + + // WriteLine $"[{values.Count} x {elementType}] [" + Output.Write ('['); + Output.Write (values.Count); + Output.Write (" x "); + Output.Write (elementType); + Output.WriteLine ("] ["); + Output.Write (Indent); for (int i = 0; i < values.Count; i++) { if (i != 0) { if (optimizeOutput) { Output.Write (','); if (i % 8 == 0) { - Output.WriteLine ($" ; {i - 8}..{i - 1}"); + Output.Write (" ; "); + Output.Write (i - 8); + Output.Write (".."); + Output.WriteLine (i - 1); + Output.Write (Indent); } else { Output.Write (' '); @@ -631,7 +671,9 @@ public void WriteArray (IList values, string symbolName, string? initial } } - Output.Write ($"{elementType} {values[i]}"); + Output.Write (elementType); + Output.Write (' '); + Output.Write (values [i]); if (!optimizeOutput) { bool last = i == values.Count - 1; @@ -641,7 +683,8 @@ public void WriteArray (IList values, string symbolName, string? initial string? comment = commentProvider (i, values[i]); if (!String.IsNullOrEmpty (comment)) { - Output.Write ($" ; {comment}"); + Output.Write (" ; "); + Output.Write (comment); } if (!last) { @@ -651,11 +694,15 @@ public void WriteArray (IList values, string symbolName, string? initial } if (optimizeOutput && values.Count / 8 != 0) { int idx = values.Count - (values.Count % 8); - Output.Write ($" ; {idx}..{values.Count - 1}"); + Output.Write (" ; "); + Output.Write (idx); + Output.Write (".."); + Output.Write (values.Count - 1); } Output.WriteLine (); - Output.WriteLine ($"], align {GetAggregateAlignment ((int)size, size * (ulong)values.Count)}"); + Output.Write ("], align "); + Output.WriteLine (GetAggregateAlignment ((int) size, size * (ulong) values.Count)); } void AssertArraySize (StructureInfo info, StructureMemberInfo smi, ulong length, ulong expectedLength) @@ -671,7 +718,8 @@ void RenderArray (StructureInfo info, StructureMemberInfo smi, byte[] b { // Byte arrays are represented in the same way as strings, without the explicit NUL termination byte AssertArraySize (info, smi, expectedArraySize ?? (ulong)bytes.Length, smi.ArrayElements); - output.Write ($"c{QuoteString (bytes, out _, nullTerminated: false)}"); + output.Write ('c'); + output.Write (QuoteString (bytes, bytes.Length, out _, nullTerminated: false)); } void MaybeWriteStructureStringsAndBuffers (StructureInfo info, StructureMemberInfo smi, StructureInstance instance, StructureBodyWriterOptions options) @@ -704,7 +752,9 @@ void MaybeWriteStructureStringsAndBuffers (StructureInfo info, StructureMe throw new InvalidOperationException ($"Out of line arrays aren't supported at this time (structure '{info.Name}', field '{smi.Info.Name}')"); } - output.Write ($"{options.FieldIndent}{smi.IRType} "); + output.Write (options.FieldIndent); + output.Write (smi.IRType); + output.Write (" "); value = valueOverride ?? GetTypedMemberValue (info, smi, instance, smi.MemberType); if (smi.MemberType == typeof(byte[])) { @@ -724,10 +774,17 @@ void MaybeWriteStructureStringsAndBuffers (StructureInfo info, StructureMe void WriteStructureBody (StructureInfo info, StructureInstance? instance, StructureBodyWriterOptions options, Action? nestedStructureWriter = null) { TextWriter structureOutput = EnsureOutput (options.StructureOutput); - structureOutput.Write ($"{options.StructIndent}%{info.NativeTypeDesignator}.{info.Name} "); + + // $"{options.StructIndent}%{info.NativeTypeDesignator}.{info.Name} " + structureOutput.Write (options.StructIndent); + structureOutput.Write ('%'); + structureOutput.Write (info.NativeTypeDesignator); + structureOutput.Write ('.'); + structureOutput.Write (info.Name); + structureOutput.Write (' '); if (instance != null) { - structureOutput.WriteLine ("{"); + structureOutput.WriteLine ('{'); for (int i = 0; i < info.Members.Count; i++) { StructureMemberInfo smi = info.Members[i]; @@ -735,7 +792,8 @@ void WriteStructureBody (StructureInfo info, StructureInstance? instanc WriteStructureField (info, instance, smi, i, options, structureOutput, nestedStructureWriter: nestedStructureWriter); } - structureOutput.Write ($"{options.StructIndent}}}"); + structureOutput.Write (options.StructIndent); + structureOutput.Write ('}'); } else { structureOutput.Write ("zeroinitializer"); } @@ -751,8 +809,9 @@ void MaybeWriteFieldComment (StructureInfo info, StructureMemberInfo sm if (String.IsNullOrEmpty (comment)) { var sb = new StringBuilder (smi.Info.Name); if (value != null && smi.MemberType.IsPrimitive && smi.MemberType != typeof(bool)) { - sb.Append (" ("); - sb.Append ($"0x{value:x})"); + sb.Append (" (0x"); + sb.Append ($"{value:x}"); + sb.Append (')'); } comment = sb.ToString (); } @@ -771,7 +830,9 @@ void FinishStructureField (StructureInfo info, StructureMemberInfo smi, void WritePrimitiveField (StructureInfo info, StructureMemberInfo smi, StructureInstance instance, TextWriter output, object? overrideValue = null) { object? value = overrideValue ?? GetTypedMemberValue (info, smi, instance, smi.MemberType); - output.Write ($"{smi.IRType} {value}"); + output.Write (smi.IRType); + output.Write (' '); + output.Write (value); } void WritePointer (StructureInfo info, StructureMemberInfo smi, StructureInstance instance, TextWriter output, object? overrideValue = null) @@ -829,7 +890,8 @@ void WritePointer (StructureInfo info, StructureMemberInfo smi, Structu void WriteNullPointer (StructureMemberInfo smi, TextWriter output) { - output.Write ($"{smi.IRType} null"); + output.Write (smi.IRType); + output.Write (" null"); } // In theory, functionality implemented here should be folded into WriteStructureArray, but in practice it would slow processing for most of the structures we @@ -900,7 +962,10 @@ public void WritePackedStructureArray (StructureInfo info, IList (StructureInfo info, IList"); + // $"<{{ {psm.ValueIRType}, {psm.PaddingIRType} }}>" + instanceType.Append ("<{ "); + instanceType.Append (psm.ValueIRType); + instanceType.Append (", "); + instanceType.Append (psm.PaddingIRType); + instanceType.Append (" }>"); } instanceType.Append (" }"); @@ -946,12 +1016,27 @@ public void WritePackedStructureArray (StructureInfo info, IList <{{ {psm.ValueIRType} c{QuoteString ((byte[])psm.Value)}, {psm.PaddingIRType} zeroinitializer }}> "); + + // $"{bodyWriterOptions.FieldIndent}<{{ {psm.ValueIRType}, {psm.PaddingIRType} }}> <{{ {psm.ValueIRType} c{QuoteString ((byte[])psm.Value)}, {psm.PaddingIRType} zeroinitializer }}> " + structureBodyOutput.Write (bodyWriterOptions.FieldIndent); + structureBodyOutput.Write ("<{ "); + structureBodyOutput.Write (psm.ValueIRType); + structureBodyOutput.Write (", "); + structureBodyOutput.Write (psm.PaddingIRType); + structureBodyOutput.Write (" }> <{ "); + structureBodyOutput.Write (psm.ValueIRType); + structureBodyOutput.Write (" c"); + structureBodyOutput.Write (QuoteString ((byte []) psm.Value)); + structureBodyOutput.Write (", "); + structureBodyOutput.Write (psm.PaddingIRType); + structureBodyOutput.Write (" zeroinitializer }> "); + MaybeWriteFieldComment (info, psm.MemberInfo, instance, bodyWriterOptions, value: null, output: structureBodyOutput); previousFieldWasPadded = true; } structureBodyOutput.WriteLine (); - structureBodyOutput.Write ($"{Indent}}}"); + structureBodyOutput.Write (Indent); + structureBodyOutput.Write ('}'); } structureOutput.WriteLine ("<{"); @@ -993,7 +1078,8 @@ StructureBodyWriterOptions InitStructureWrite (StructureInfo info, LlvmIrV void FinishStructureWrite (StructureInfo info, StructureBodyWriterOptions bodyWriterOptions) { - bodyWriterOptions.StructureOutput.WriteLine ($", align {info.MaxFieldAlignment}"); + bodyWriterOptions.StructureOutput.Write (", align "); + bodyWriterOptions.StructureOutput.WriteLine (info.MaxFieldAlignment); WriteBufferToOutput (bodyWriterOptions.StringsOutput); WriteBufferToOutput (bodyWriterOptions.BuffersOutput); @@ -1064,7 +1150,8 @@ void WriteGetBufferPointer (string? variableName, string irType, ulong size, boo } if (String.IsNullOrEmpty (variableName)) { - output.Write ($"{irType} null"); + output.Write (irType); + output.Write (" null"); } else { string irBaseType; if (irType[irType.Length - 1] == '*') { @@ -1073,7 +1160,19 @@ void WriteGetBufferPointer (string? variableName, string irType, ulong size, boo irBaseType = irType; } - output.Write ($"{irType} getelementptr inbounds ([{size} x {irBaseType}], [{size} x {irBaseType}]* @{variableName}, i32 0, i32 0)"); + // $"{irType} getelementptr inbounds ([{size} x {irBaseType}], [{size} x {irBaseType}]* @{variableName}, i32 0, i32 0)" + output.Write (irType); + output.Write (" getelementptr inbounds (["); + output.Write (size); + output.Write (" x "); + output.Write (irBaseType); + output.Write ("], ["); + output.Write (size); + output.Write (" x "); + output.Write (irBaseType); + output.Write ("]* @"); + output.Write (variableName); + output.Write (", i32 0, i32 0)"); } } @@ -1114,7 +1213,11 @@ void WriteArrayString (string str, string symbolSuffix) void WriteStringArray (string symbolName, LlvmIrVariableOptions options, List strings) { WriteGlobalSymbolStart (symbolName, options); - Output.Write ($"[{strings.Count} x i8*]"); + + // $"[{strings.Count} x i8*]" + Output.Write ('['); + Output.Write (strings.Count); + Output.Write (" x i8*]"); if (strings.Count > 0) { Output.WriteLine (" ["); @@ -1134,7 +1237,7 @@ void WriteStringArray (string symbolName, LlvmIrVariableOptions options, List 0) { - Output.Write ("]"); + Output.Write (']'); } - Output.WriteLine ($", align {GetAggregateAlignment (PointerSize, arraySize)}"); + Output.Write (", align "); + Output.WriteLine (GetAggregateAlignment (PointerSize, arraySize)); } /// @@ -1168,7 +1272,11 @@ public void WriteVariable (string symbolName, T value, LlvmIrVariableOptions string irType = GetIRType (out ulong size, value); WriteGlobalSymbolStart (symbolName, options); - Output.WriteLine ($"{irType} {GetValue (value)}, align {size}"); + Output.Write (irType); + Output.Write (' '); + Output.Write (GetValue (value)); + Output.Write (", align "); + Output.WriteLine (size); } /// @@ -1236,14 +1344,35 @@ public string WriteString (string symbolName, string value, LlvmIrVariableOption // It might seem counter-intuitive that when we're requested to write a global string, here we generate a **local** one, // but global strings are actually pointers to local storage. WriteGlobalSymbolStart (strSymbolName, global ? LlvmIrVariableOptions.LocalConstexprString : options); - Output.WriteLine ($"[{stringSize} x i8] c{quotedString}, align {GetAggregateAlignment (1, stringSize)}"); + + // WriteLine $"[{stringSize} x i8] c{quotedString}, align {GetAggregateAlignment (1, stringSize)}" + Output.Write ('['); + Output.Write (stringSize); + Output.Write (" x i8] c"); + Output.Write (quotedString); + Output.Write (", align "); + Output.WriteLine (GetAggregateAlignment (1, stringSize)); + if (!global) { return symbolName; } string indexType = Is64Bit ? "i64" : "i32"; WriteGlobalSymbolStart (symbolName, LlvmIrVariableOptions.GlobalConstantStringPointer); - Output.WriteLine ($"i8* getelementptr inbounds ([{stringSize} x i8], [{stringSize} x i8]* @{strSymbolName}, {indexType} 0, {indexType} 0), align {GetAggregateAlignment (PointerSize, stringSize)}"); + + // WriteLine $"i8* getelementptr inbounds ([{stringSize} x i8], [{stringSize} x i8]* @{strSymbolName}, {indexType} 0, {indexType} 0), align {GetAggregateAlignment (PointerSize, stringSize)}" + Output.Write ("i8* getelementptr inbounds (["); + Output.Write (stringSize); + Output.Write (" x i8], ["); + Output.Write (stringSize); + Output.Write (" x i8]* @"); + Output.Write (strSymbolName); + Output.Write (", "); + Output.Write (indexType); + Output.Write (" 0, "); + Output.Write (indexType); + Output.Write (" 0), align "); + Output.WriteLine (GetAggregateAlignment (PointerSize, stringSize)); return symbolName; } @@ -1317,7 +1446,14 @@ public void WriteStructureDeclarations () public void WriteStructureDeclarationStart (string typeDesignator, string name, bool forOpaqueType = false) { WriteEOL (); - Output.Write ($"%{typeDesignator}.{name} = type "); + + // $"%{typeDesignator}.{name} = type " + Output.Write ('%'); + Output.Write (typeDesignator); + Output.Write ('.'); + Output.Write (name); + Output.Write (" = type "); + if (forOpaqueType) { Output.WriteLine ("opaque"); } else { @@ -1327,12 +1463,13 @@ public void WriteStructureDeclarationStart (string typeDesignator, string name, public void WriteStructureDeclarationEnd () { - Output.WriteLine ("}"); + Output.WriteLine ('}'); } public void WriteStructureDeclarationField (string typeName, string comment, bool last) { - Output.Write ($"{Indent}{typeName}"); + Output.Write (Indent); + Output.Write (typeName); if (!last) { Output.Write (","); } @@ -1400,7 +1537,8 @@ public void WriteDirectiveWithComment (TextWriter writer, string name, string? c writer.Write (name); if (!String.IsNullOrEmpty (value)) { - writer.Write ($" = {value}"); + writer.Write (" = "); + writer.Write (value); } WriteEOL (writer, comment); @@ -1433,28 +1571,39 @@ public static string QuoteString (string value, bool nullTerminated = true) public static string QuoteString (byte[] bytes) { - return QuoteString (bytes, out _, nullTerminated: false); + return QuoteString (bytes, bytes.Length, out _, nullTerminated: false); } public static string QuoteString (string value, out ulong stringSize, bool nullTerminated = true) { - return QuoteString (Encoding.UTF8.GetBytes (value), out stringSize, nullTerminated); + var encoding = Encoding.UTF8; + int byteCount = encoding.GetByteCount (value); + var bytes = ArrayPool.Shared.Rent (byteCount); + try { + encoding.GetBytes (value, 0, value.Length, bytes, 0); + return QuoteString (bytes, byteCount, out stringSize, nullTerminated); + } finally { + ArrayPool.Shared.Return (bytes); + } } - public static string QuoteString (byte[] bytes, out ulong stringSize, bool nullTerminated = true) + public static string QuoteString (byte[] bytes, int byteCount, out ulong stringSize, bool nullTerminated = true) { - var sb = new StringBuilder (); + var sb = new StringBuilder (byteCount * 2); // rough estimate of capacity - foreach (byte b in bytes) { + byte b; + for (int i = 0; i < byteCount; i++) { + b = bytes [i]; if (b != '"' && b != '\\' && b >= 32 && b < 127) { sb.Append ((char)b); continue; } - sb.Append ($"\\{b:X2}"); + sb.Append ('\\'); + sb.Append ($"{b:X2}"); } - stringSize = (ulong)bytes.Length; + stringSize = (ulong) byteCount; if (nullTerminated) { stringSize++; sb.Append ("\\00"); diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index b6c1e197f69..d45774675bc 100644 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -38,6 +38,7 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved. + @@ -490,6 +491,19 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved. + + + System.Net.Http.HttpClientHandler, System.Net.Http + System.Net.Http.HttpMessageHandler, System.Net.Http + + + + UpdateGeneratedFiles; diff --git a/tests/MSBuildDeviceIntegration/MSBuildDeviceIntegration.csproj b/tests/MSBuildDeviceIntegration/MSBuildDeviceIntegration.csproj index 8ad46ed085c..2aebfdb3f47 100644 --- a/tests/MSBuildDeviceIntegration/MSBuildDeviceIntegration.csproj +++ b/tests/MSBuildDeviceIntegration/MSBuildDeviceIntegration.csproj @@ -35,7 +35,7 @@ - + diff --git a/tests/api-compatibility/acceptable-breakages-vReference-net8.0.txt b/tests/api-compatibility/acceptable-breakages-vReference-net8.0.txt index 159d1bcaa40..2797394e8d8 100644 --- a/tests/api-compatibility/acceptable-breakages-vReference-net8.0.txt +++ b/tests/api-compatibility/acceptable-breakages-vReference-net8.0.txt @@ -1,6 +1,4 @@ Compat issues with assembly Mono.Android: -CannotSealType : Type 'Java.Interop.JavaTypeParametersAttribute' is actually (has the sealed modifier) sealed in the implementation but not sealed in the contract. -MembersMustExist : Member 'public void Java.Interop.JavaTypeParametersAttribute.TypeParameters.set(System.String[])' does not exist in the implementation but it does exist in the contract. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.AccessibilityServices.AccessibilityService.OnGesture(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.AccessibilityServices.AccessibilityService.MagnificationController.SetCenter(System.Single, System.Single, System.Boolean)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.AccessibilityServices.AccessibilityService.MagnificationController.SetScale(System.Single, System.Boolean)' in the contract but not the implementation. @@ -10,11 +8,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Accounts.AccountAuthenticatorActivity.SetAccountAuthenticatorResult(Android.OS.Bundle)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Accounts.AccountManager.NewChooseAccountIntent(Android.Accounts.Account, System.Collections.Generic.IList, System.String[], System.Boolean, System.String, System.String, System.String[], Android.OS.Bundle)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Accounts.AccountManager.RemoveAccount(Android.Accounts.Account, Android.Accounts.IAccountManagerCallback, Android.OS.Handler)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.ActionBar.IOnNavigationListener.OnNavigationItemSelected(System.Int32, System.Int64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.ActionBar.ITabListener.OnTabReselected(Android.App.ActionBar.Tab, Android.App.FragmentTransaction)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.ActionBar.ITabListener.OnTabSelected(Android.App.ActionBar.Tab, Android.App.FragmentTransaction)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.ActionBar.ITabListener.OnTabUnselected(Android.App.ActionBar.Tab, Android.App.FragmentTransaction)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.ActionBar.Tab..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Activity.EnterPictureInPictureMode()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Activity.FinishActivityFromChild(Android.App.Activity, System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Activity.FinishFromChild(Android.App.Activity)' in the contract but not the implementation. @@ -36,7 +29,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Activity.StartActivityFromChild(Android.App.Activity, Android.Content.Intent, System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Activity.StartActivityFromFragment(Android.App.Fragment, Android.Content.Intent, System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Activity.StartIntentSenderFromChild(Android.App.Activity, Android.Content.IntentSender, System.Int32, Android.Content.Intent, Android.Content.ActivityFlags, Android.Content.ActivityFlags, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.ActivityGroup..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.ActivityManager.GetRunningServices(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.ActivityManager.TaskDescription..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.AlertDialog.Builder.SetInverseBackgroundForced(System.Boolean)' in the contract but not the implementation. @@ -135,16 +127,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Fragment.SavedState' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Fragment.SavedState.DescribeContents()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Fragment.SavedState.WriteToParcel(Android.OS.Parcel, Android.OS.ParcelableWriteFlags)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs..ctor(Android.Content.Context)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.OnBackStackChanged()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.OnLayout(System.Boolean, System.Int32, System.Int32, System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.SetActivity(Android.App.Activity)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.SetMaxVisible(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.SetOnBreadCrumbClickListener(Android.App.FragmentBreadCrumbs.IOnBreadCrumbClickListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.SetParentTitle(Java.Lang.ICharSequence, Java.Lang.ICharSequence, Android.Views.View.IOnClickListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.SetParentTitle(System.String, System.String, Android.Views.View.IOnClickListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.SetTitle(Java.Lang.ICharSequence, Java.Lang.ICharSequence)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.SetTitle(System.String, System.String)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.IOnBreadCrumbClickListener' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentBreadCrumbs.IOnBreadCrumbClickListener.OnBreadCrumbClick(Android.App.FragmentManager.IBackStackEntry, Android.App.BreadCrumbClickFlags)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.FragmentContainer' in the contract but not the implementation. @@ -238,8 +220,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.KeyguardManager.InKeyguardRestrictedInputMode()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.KeyguardManager.IOnKeyguardExitResult' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.KeyguardManager.IOnKeyguardExitResult.OnKeyguardExitResult(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.KeyguardManager.KeyguardLock.DisableKeyguard()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.KeyguardManager.KeyguardLock.ReenableKeyguard()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LauncherActivity' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LauncherActivity..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LauncherActivity.IntentForPosition(System.Int32)' in the contract but not the implementation. @@ -271,17 +251,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LoaderManager.ILoaderCallbacks.OnCreateLoader(System.Int32, Android.OS.Bundle)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LoaderManager.ILoaderCallbacks.OnLoaderReset(Android.Content.Loader)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LoaderManager.ILoaderCallbacks.OnLoadFinished(Android.Content.Loader, Java.Lang.Object)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager..ctor(Android.App.Activity, System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager.DestroyActivity(System.String, System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager.DispatchCreate(Android.OS.Bundle)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager.DispatchDestroy(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager.DispatchPause(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager.DispatchResume()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager.DispatchStop()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager.GetActivity(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager.RemoveAllActivities()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager.SaveInstanceState()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.LocalActivityManager.StartActivity(System.String, Android.Content.Intent)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Notification.Action..ctor(System.Int32, Java.Lang.ICharSequence, Android.App.PendingIntent)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Notification.Action.WearableExtender.SetCancelLabel(Java.Lang.ICharSequence)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Notification.Action.WearableExtender.SetCancelLabel(System.String)' in the contract but not the implementation. @@ -331,8 +300,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.ProgressDialog.Show(Android.Content.Context, Java.Lang.ICharSequence, Java.Lang.ICharSequence)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.ProgressDialog.Show(Android.Content.Context, System.String, System.String)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Service.StopForeground(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.TabActivity..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.TabActivity.SetDefaultTab(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.UiAutomation.ClearWindowAnimationFrameStats()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Admin.DeviceAdminReceiver.OnPasswordChanged(Android.Content.Context, Android.Content.Intent)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.App.Admin.DeviceAdminReceiver.OnPasswordExpiring(Android.Content.Context, Android.Content.Intent)' in the contract but not the implementation. @@ -491,16 +458,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Content.Res.Resources.UpdateConfiguration(Android.Content.Res.Configuration, Android.Util.DisplayMetrics)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.CursorWrapper.Deactivate()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.CursorWrapper.Requery()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.DatabaseUtils.InsertHelper..ctor(Android.Database.Sqlite.SQLiteDatabase, System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.DatabaseUtils.InsertHelper.Bind(System.Int32, System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.DatabaseUtils.InsertHelper.BindNull(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.DatabaseUtils.InsertHelper.Close()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.DatabaseUtils.InsertHelper.Execute()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.DatabaseUtils.InsertHelper.GetColumnIndex(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.DatabaseUtils.InsertHelper.Insert(Android.Content.ContentValues)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.DatabaseUtils.InsertHelper.PrepareForInsert()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.DatabaseUtils.InsertHelper.PrepareForReplace()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.DatabaseUtils.InsertHelper.Replace(Android.Content.ContentValues)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.Sqlite.SQLiteDatabase.OpenParams.Builder.SetIdleConnectionTimeout(System.Int64)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Database.Sqlite.SQLiteOpenHelper.SetIdleConnectionTimeout(System.Int64)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Drm.DrmConvertedStatus' in the contract but not the implementation. @@ -596,72 +553,8 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Graphics.Movie.Width()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Graphics.Outline.SetConvexPath(Android.Graphics.Path)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Graphics.Shader..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Graphics.SurfaceTexture.OutOfResourcesException..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Graphics.Drawables.Drawable.SetDither(System.Boolean)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Graphics.Text.MeasuredText.Builder.SetComputeHyphenation(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.AddCallbackBuffer(System.Byte[])' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.AutoFocus(Android.Hardware.Camera.IAutoFocusCallback)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.CancelAutoFocus()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.EnableShutterSound(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.GetCameraInfo(System.Int32, Android.Hardware.Camera.CameraInfo)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.GetParameters()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Lock()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Open()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Reconnect()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Release()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetAutoFocusMoveCallback(Android.Hardware.Camera.IAutoFocusMoveCallback)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetDisplayOrientation(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetErrorCallback(Android.Hardware.Camera.IErrorCallback)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetFaceDetectionListener(Android.Hardware.Camera.IFaceDetectionListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetOneShotPreviewCallback(Android.Hardware.Camera.IPreviewCallback)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetParameters(Android.Hardware.Camera.Parameters)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetPreviewCallback(Android.Hardware.Camera.IPreviewCallback)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetPreviewCallbackWithBuffer(Android.Hardware.Camera.IPreviewCallback)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetPreviewDisplay(Android.Views.ISurfaceHolder)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetPreviewTexture(Android.Graphics.SurfaceTexture)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.SetZoomChangeListener(Android.Hardware.Camera.IOnZoomChangeListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.StartFaceDetection()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.StartPreview()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.StartSmoothZoom(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.StopFaceDetection()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.StopPreview()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.StopSmoothZoom()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.TakePicture(Android.Hardware.Camera.IShutterCallback, Android.Hardware.Camera.IPictureCallback, Android.Hardware.Camera.IPictureCallback)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Unlock()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Area..ctor(Android.Graphics.Rect, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.CameraInfo..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Face..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.IAutoFocusCallback.OnAutoFocus(System.Boolean, Android.Hardware.Camera)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.IAutoFocusMoveCallback.OnAutoFocusMoving(System.Boolean, Android.Hardware.Camera)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.IErrorCallback.OnError(Android.Hardware.CameraError, Android.Hardware.Camera)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.IFaceDetectionListener.OnFaceDetection(Android.Hardware.Camera.Face[], Android.Hardware.Camera)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.IOnZoomChangeListener.OnZoomChange(System.Int32, System.Boolean, Android.Hardware.Camera)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.IPictureCallback.OnPictureTaken(System.Byte[], Android.Hardware.Camera)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.IPreviewCallback.OnPreviewFrame(System.Byte[], Android.Hardware.Camera)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.IShutterCallback.OnShutter()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.Flatten()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.Get(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.GetFocusDistances(System.Single[])' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.GetInt(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.GetPreviewFpsRange(System.Int32[])' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.Remove(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.RemoveGpsData()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.Set(System.String, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetGpsAltitude(System.Double)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetGpsLatitude(System.Double)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetGpsLongitude(System.Double)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetGpsProcessingMethod(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetGpsTimestamp(System.Int64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetJpegThumbnailSize(System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetPictureSize(System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetPreviewFpsRange(System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetPreviewSize(System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetRecordingHint(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.SetRotation(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Parameters.Unflatten(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Camera.Size..ctor(Android.Hardware.Camera, System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.ISensorListener.OnAccuracyChanged(Android.Hardware.SensorType, Android.Hardware.SensorStatus)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.ISensorListener.OnSensorChanged(Android.Hardware.SensorType, System.Single[])' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Biometrics.BiometricManager.CanAuthenticate()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Biometrics.BiometricPrompt.Builder.SetDeviceCredentialAllowed(System.Boolean)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Hardware.Biometrics.BiometricPrompt.CryptoObject..ctor(Android.Security.Identity.IdentityCredential)' in the contract but not the implementation. @@ -791,41 +684,14 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaDrm.IHdcpLevel' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaDrm.ISecurityLevel' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaExtractor.SetMediaCas(Android.Media.MediaCas)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.AddEditableKey(Android.Media.MediaMetadataEditKey)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.Clear()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.GetBitmap(Android.Media.MediaMetadataEditKey, Android.Graphics.Bitmap)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.GetEditableKeys()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.GetLong(Android.Media.MediaMetadataEditKey, System.Int64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.GetObject(Android.Media.MediaMetadataEditKey, Java.Lang.Object)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.GetString(Android.Media.MediaMetadataEditKey, System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.PutBitmap(Android.Media.MediaMetadataEditKey, Android.Graphics.Bitmap)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.PutLong(Android.Media.MediaMetadataEditKey, System.Int64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.PutObject(Android.Media.MediaMetadataEditKey, Java.Lang.Object)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.PutString(Android.Media.MediaMetadataEditKey, System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaMetadataEditor.RemoveEditableKeys()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaPlayer.SetAudioStreamType(Android.Media.Stream)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.MediaRecorder..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient..ctor(Android.App.PendingIntent)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.EditMetadata(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.SetMetadataUpdateListener(Android.Media.RemoteControlClient.IOnMetadataUpdateListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.SetOnGetPlaybackPositionListener(Android.Media.RemoteControlClient.IOnGetPlaybackPositionListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.SetPlaybackPositionUpdateListener(Android.Media.RemoteControlClient.IOnPlaybackPositionUpdateListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.SetPlaybackState(Android.Media.RemoteControlPlayState)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.SetTransportControlFlags(Android.Media.RemoteControlFlags)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.IOnGetPlaybackPositionListener' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.IOnGetPlaybackPositionListener.OnGetPlaybackPosition()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.IOnMetadataUpdateListener' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.IOnMetadataUpdateListener.OnMetadataUpdate(Android.Media.MediaMetadataEditKey, Java.Lang.Object)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.IOnPlaybackPositionUpdateListener' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.IOnPlaybackPositionUpdateListener.OnPlaybackPositionUpdate(System.Int64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteControlClient.MetadataEditor.Apply()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteController..ctor(Android.Content.Context, Android.Media.RemoteController.IOnClientUpdateListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteController.ClearArtworkConfiguration()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteController.EditMetadata()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteController.SeekTo(System.Int64)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteController.SendMediaKeyEvent(Android.Views.KeyEvent)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteController.SetArtworkConfiguration(System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteController.SetSynchronizationMode(Android.Media.SynchronizationPosition)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteController.IOnClientUpdateListener' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteController.IOnClientUpdateListener.OnClientChange(System.Boolean)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Media.RemoteController.IOnClientUpdateListener.OnClientMetadataUpdate(Android.Media.RemoteController.MetadataEditor)' in the contract but not the implementation. @@ -1279,7 +1145,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Preferences.TwoStatePreference.SetSummaryOn(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Provider.ContactsContract.DataUsageFeedback' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Provider.ContactsContract.DataUsageFeedback..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Provider.ContactsContract.Presence..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Provider.FontRequest' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Provider.FontRequest..ctor(System.String, System.String, System.String)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Provider.FontsContract' in the contract but not the implementation. @@ -1913,7 +1778,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Service.Notification.ConditionProviderService.RequestUnbind()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Service.Voice.VoiceInteractionSession.OnHandleAssist(Android.OS.Bundle, Android.App.Assist.AssistStructure, Android.App.Assist.AssistContent)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Service.Voice.VoiceInteractionSession.OnHandleAssistSecondary(Android.OS.Bundle, Android.App.Assist.AssistStructure, Android.App.Assist.AssistContent, System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Speech.Tts.TextToSpeech.IOnUtteranceCompletedListener.OnUtteranceCompleted(System.String)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Systems.Os.Setegid(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Systems.Os.Seteuid(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Systems.Os.Setgid(System.Int32)' in the contract but not the implementation. @@ -2017,7 +1881,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Text.AndroidCharacter.GetEastAsianWidths(System.Char[], System.Int32, System.Int32, System.Byte[])' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Text.AndroidCharacter.GetMirror(System.Char)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Text.AndroidCharacter.Mirror(System.Char[], System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Text.ClipboardManager..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Text.DynamicLayout..ctor(Java.Lang.ICharSequence, Android.Text.TextPaint, System.Int32, Android.Text.Layout.Alignment, System.Single, System.Single, System.Boolean)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Text.Html.FromHtml(System.String)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Text.Html.ToHtml(Android.Text.ISpanned)' in the contract but not the implementation. @@ -2069,8 +1932,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Text.Method.DigitsKeyListener..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Text.Method.TimeKeyListener..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Transitions.TransitionValues..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Util.EventLogTags..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Util.EventLogTags.Get(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Util.EventLogTags.Description' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Util.FloatMath' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Util.MutableBoolean' in the contract but not the implementation. @@ -2103,12 +1964,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.DisplayCutout..ctor(Android.Graphics.Rect, System.Collections.Generic.IList)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.IViewParent.InvalidateChild(Android.Views.View, Android.Graphics.Rect)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.IViewParent.InvalidateChildInParent(System.Int32[], Android.Graphics.Rect)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.KeyCharacterMap.KeyData..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.OrientationListener..ctor(Android.Content.Context)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.OrientationListener.Disable()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.OrientationListener.Enable()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.OrientationListener.OnAccuracyChanged(Android.Hardware.SensorType, Android.Hardware.SensorStatus)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.OrientationListener.OnSensorChanged(Android.Hardware.SensorType, System.Single[])' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.SurfaceControl.Transaction.SetGeometry(Android.Views.SurfaceControl, Android.Graphics.Rect, Android.Graphics.Rect, Android.Views.SurfaceOrientation)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.View.BuildDrawingCache()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.View.DestroyDrawingCache()' in the contract but not the implementation. @@ -2168,15 +2023,10 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Views.TextService.SpellCheckerSubtype..ctor(System.Int32, System.String, System.String)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.CookieManager..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.CookieManager.SetAcceptFileSchemeCookies(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.CookieSyncManager.CreateInstance(Android.Content.Context)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.CookieSyncManager.Run()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.RenderProcessGoneDetail..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.SafeBrowsingResponse..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.ServiceWorkerController..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.TracingController..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.WebIconDatabase..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.WebIconDatabase.IIconListener.OnReceivedIcon(System.String, Android.Graphics.Bitmap)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.WebStorage.IQuotaUpdater.UpdateQuota(System.Int64)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.WebView.FindAddress(System.String)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.WebView.GetHttpAuthUsernamePassword(System.String, System.String)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.WebView.OverlayHorizontalScrollbar()' in the contract but not the implementation. @@ -2189,8 +2039,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.WebViewDatabase..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.WebViewFragment' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Webkit.WebViewFragment..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.AbsoluteLayout..ctor(Android.Content.Context)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.AbsoluteLayout.OnLayout(System.Boolean, System.Int32, System.Int32, System.Int32, System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.AbsoluteLayout.LayoutParams' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.AbsoluteLayout.LayoutParams..ctor(Android.Content.Context, Android.Util.IAttributeSet)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.AbsoluteLayout.LayoutParams.Debug(System.String)' in the contract but not the implementation. @@ -2209,19 +2057,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.DialerFilter.SetDigitsWatcher(Android.Text.ITextWatcher)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.DialerFilter.SetFilterWatcher(Android.Text.ITextWatcher)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.DialerFilter.SetLettersWatcher(Android.Text.ITextWatcher)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.DigitalClock..ctor(Android.Content.Context)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery..ctor(Android.Content.Context)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.OnDown(Android.Views.MotionEvent)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.OnFling(Android.Views.MotionEvent, Android.Views.MotionEvent, System.Single, System.Single)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.OnLongPress(Android.Views.MotionEvent)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.OnScroll(Android.Views.MotionEvent, Android.Views.MotionEvent, System.Single, System.Single)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.OnShowPress(Android.Views.MotionEvent)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.OnSingleTapUp(Android.Views.MotionEvent)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.SetAnimationDuration(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.SetCallbackDuringFling(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.SetGravity(Android.Views.GravityFlags)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.SetSpacing(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.SetUnselectedAlpha(System.Single)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.LayoutParams' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Gallery.LayoutParams..ctor(Android.Content.Context, Android.Util.IAttributeSet)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.Magnifier..ctor(Android.Views.View)' in the contract but not the implementation. @@ -2230,20 +2065,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.RemoteViews.OnLoadClass(Java.Lang.Class)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.RemoteViews.ShowNext(System.Int32)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.RemoteViews.ShowPrevious(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer..ctor(Android.Content.Context, Android.Util.IAttributeSet)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.AnimateClose()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.AnimateOpen()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.AnimateToggle()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.Close()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.GetHandle()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.Lock()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.OnLayout(System.Boolean, System.Int32, System.Int32, System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.Open()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.SetOnDrawerCloseListener(Android.Widget.SlidingDrawer.IOnDrawerCloseListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.SetOnDrawerOpenListener(Android.Widget.SlidingDrawer.IOnDrawerOpenListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.SetOnDrawerScrollListener(Android.Widget.SlidingDrawer.IOnDrawerScrollListener)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.Toggle()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.Unlock()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.IOnDrawerCloseListener' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.IOnDrawerCloseListener.OnDrawerClosed()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.SlidingDrawer.IOnDrawerOpenListener' in the contract but not the implementation. @@ -2277,7 +2098,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.TabWidget.SetLeftStripDrawable(Android.Graphics.Drawables.Drawable)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.TabWidget.SetRightStripDrawable(Android.Graphics.Drawables.Drawable)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.TextView.SetTextAppearance(Android.Content.Context, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.TwoLineListItem..ctor(Android.Content.Context)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.ZoomButton' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.ZoomButton..ctor(Android.Content.Context)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.ZoomButton.OnLongClick(Android.Views.View)' in the contract but not the implementation. @@ -2301,10 +2121,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.ZoomControls.SetOnZoomOutClickListener(Android.Views.View.IOnClickListener)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.ZoomControls.SetZoomSpeed(System.Int64)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Android.Widget.ZoomControls.Show()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.Annotation.ITestTarget.ConceptName()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.Annotation.ITestTarget.MethodArgs()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.Annotation.ITestTarget.MethodName()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.Annotation.ITestTargetClass.Value()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.SystemInterop.DexFile' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.SystemInterop.DexFile..ctor(Java.IO.File)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.SystemInterop.DexFile.Close()' in the contract but not the implementation. @@ -2312,9 +2128,8 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.S CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.SystemInterop.DexFile.IsDexOptNeeded(System.String)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.SystemInterop.DexFile.LoadClass(System.String, Java.Lang.ClassLoader)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Dalvik.SystemInterop.DexFile.LoadDex(System.String, System.String, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.IO.LineNumberInputStream..ctor(System.IO.Stream)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.IO.StringBufferInputStream..ctor(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.IO.StringBufferInputStream.Read()' in the contract but not the implementation. +CannotSealType : Type 'Java.Interop.JavaTypeParametersAttribute' is actually (has the sealed modifier) sealed in the implementation but not sealed in the contract. +MembersMustExist : Member 'public void Java.Interop.JavaTypeParametersAttribute.TypeParameters.set(System.String[])' does not exist in the implementation but it does exist in the contract. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Lang.Boolean..ctor(System.Boolean)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Lang.Byte..ctor(System.SByte)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Lang.Double..ctor(System.Double)' in the contract but not the implementation. @@ -2330,19 +2145,6 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Lan CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Lang.Invoke.MethodHandleInfo.RefKindIsField(Java.Lang.Invoke.ReferenceKind)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Lang.Invoke.MethodHandleInfo.RefKindIsValid(Java.Lang.Invoke.ReferenceKind)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Lang.Invoke.MethodHandleInfo.RefKindName(Java.Lang.Invoke.ReferenceKind)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.ICertificate.Decode(System.IO.Stream)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.ICertificate.Encode(System.IO.Stream)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.ICertificate.ToString(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Identity..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Identity.AddCertificate(Java.Security.ICertificate)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Identity.Certificates()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Identity.Equals(Java.Lang.Object)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Identity.IdentityEquals(Java.Security.Identity)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Identity.RemoveCertificate(Java.Security.ICertificate)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Identity.ToString(System.Boolean)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.IdentityScope..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Signer..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Signer.SetKeyPair(Java.Security.KeyPair)' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Acl.AclNotFoundException' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Acl.AclNotFoundException..ctor()' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Java.Security.Acl.IAcl' in the contract but not the implementation. @@ -2814,44 +2616,3 @@ CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Apac CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Apache.Http.Util.ExceptionUtils' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Apache.Http.Util.LangUtils' in the contract but not the implementation. CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Apache.Http.Util.VersionInfo' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.Characters(System.Char[], System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.EndDocument()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.EndElement(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.Error(Org.Xml.Sax.SAXParseException)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.FatalError(Org.Xml.Sax.SAXParseException)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.IgnorableWhitespace(System.Char[], System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.NotationDecl(System.String, System.String, System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.ProcessingInstruction(System.String, System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.ResolveEntity(System.String, System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.SetDocumentLocator(Org.Xml.Sax.ILocator)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.StartDocument()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.StartElement(System.String, Org.Xml.Sax.IAttributeList)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.UnparsedEntityDecl(System.String, System.String, System.String, System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.HandlerBase.Warning(Org.Xml.Sax.SAXParseException)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IAttributeList.GetName(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IAttributeList.GetType(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IAttributeList.GetValue(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IDocumentHandler.Characters(System.Char[], System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IDocumentHandler.EndDocument()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IDocumentHandler.EndElement(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IDocumentHandler.IgnorableWhitespace(System.Char[], System.Int32, System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IDocumentHandler.ProcessingInstruction(System.String, System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IDocumentHandler.SetDocumentLocator(Org.Xml.Sax.ILocator)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IDocumentHandler.StartDocument()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IDocumentHandler.StartElement(System.String, Org.Xml.Sax.IAttributeList)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IParser.Parse(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IParser.SetDocumentHandler(Org.Xml.Sax.IDocumentHandler)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IParser.SetDTDHandler(Org.Xml.Sax.IDTDHandler)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IParser.SetEntityResolver(Org.Xml.Sax.IEntityResolver)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IParser.SetErrorHandler(Org.Xml.Sax.IErrorHandler)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.IParser.SetLocale(Java.Util.Locale)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.Helpers.AttributeListImpl..ctor()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.Helpers.AttributeListImpl.AddAttribute(System.String, System.String, System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.Helpers.AttributeListImpl.Clear()' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.Helpers.AttributeListImpl.GetName(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.Helpers.AttributeListImpl.GetType(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.Helpers.AttributeListImpl.GetValue(System.Int32)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.Helpers.AttributeListImpl.RemoveAttribute(System.String)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.Helpers.AttributeListImpl.SetAttributeList(Org.Xml.Sax.IAttributeList)' in the contract but not the implementation. -CannotRemoveAttribute : Attribute 'System.ObsoleteAttribute' exists on 'Org.Xml.Sax.Helpers.ParserFactory.MakeParser()' in the contract but not the implementation.