Xamarin v11.0.0.3 Release Notes

Release Date: 2020-08-05 // over 3 years ago
  • August 5, 2020 โ€” Xamarin.Android 11.0.0.3 was published as part of Visual Studio 2019 version 16.7 and Visual Studio 2019 for Mac version 8.7.

    ๐Ÿš€ Corresponding Visual Studio 2019 release notes

    What's new compared to Xamarin.Android 10.3

    ๐Ÿ”ง Deprecations, removals, and default configuration changes

    ๐Ÿš€ Build and deployment performance

    • ๐Ÿ— GitHub PR 4190: Switch to running AAPT2 in single-file mode rather than --dir mode. This reduced the total incremental build time from about 16.4 seconds to about 5.5 seconds for a test project when a single Android resource file was changed between builds.
    • ๐Ÿ— GitHub PR 4750: Skip checking for uses of AppDomain.CreateDomain() in assemblies provided by Xamarin.Android. This reduced the time for the LinkAssembliesNoShrink from about 2.6 seconds to about 1.8 seconds for an initial clean build of small Xamarin.Forms test app.
    • โšก๏ธ Java.Interop GitHub PR 624, Java.Interop GitHub PR 627, Java.Interop GitHub PR 628: Update the CRC-64 algorithm used during builds to take advantage of a more efficient calculation technique. This reduced the total incremental build time from about 8.7 seconds to about 8.5 seconds for a small Xamarin.Forms app when one line of a C# file was changed between builds.

    ๐Ÿ“ฆ Smaller app package sizes

    ๐Ÿš€ Managed assemblies are now compressed by default for Release configuration builds, resulting in significantly smaller APK and Android App Bundle sizes. Assemblies are compressed with the LZ4 algorithm during builds and then decompressed on device during app startup.

    For a small example Xamarin.Forms application, this reduced the APK size from about 23 megabytes to about 17 megabytes while only increasing the time to display the first page of the app from about 780 milliseconds to about 790 milliseconds.

    If needed, the new behavior can be disabled for a particular project by opening the project file in Visual Studio or another text editor and setting the AndroidEnableAssemblyCompression MSBuild property to false in the .csproj file:

    \<PropertyGroup\> \<AndroidEnableAssemblyCompression\>false\</AndroidEnableAssemblyCompression\> \</PropertyGroup\>
    

    Note: This feature is intended to replace the older Bundle assemblies into native code Visual Studio Enterprise feature for purposes of app size savings. The AndroidEnableAssemblyCompression property takes precedence if both features are enabled. Project authors who no longer need the Bundle assemblies into native code feature can now disable it or remove the BundleAssemblies MSBuild property from the .csproj file:

     \<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "\> \<DebugSymbols\>True\</DebugSymbols\> \<DebugType\>portable\</DebugType\> \<Optimize\>True\</Optimize\> \<OutputPath\>bin\Release\\</OutputPath\> \<DefineConstants\>TRACE\</DefineConstants\> \<ErrorReport\>prompt\</ErrorReport\> \<WarningLevel\>4\</WarningLevel\> \<AndroidManagedSymbols\>true\</AndroidManagedSymbols\> \<AndroidUseSharedRuntime\>False\</AndroidUseSharedRuntime\> \<AndroidLinkMode\>SdkOnly\</AndroidLinkMode\> \<EmbedAssembliesIntoApk\>True\</EmbedAssembliesIntoApk\>- \<BundleAssemblies\>true\</BundleAssemblies\> \</PropertyGroup\>
    

    Background information

    For comparison, for the small test Xamarin.Forms application with all target ABIs enabled, the Bundle assemblies into native code feature increases the APK size from about 23 megabytes to about 26 megabytes while increasing the time to display the first page of the app from about 780 milliseconds to about 850 milliseconds.

    If only one target ABI is enabled for the test application, such as arm64-v8a, the Bundle assemblies into native code feature decreases the APK size from around 16 megabytes to around 7.5 megabytes, while the new LZ4 approach decreases the size to around 8 megabytes. Time to display the first page is the same in this case as with all target ABIs enabled.

    The number of target ABIs affects the size comparison because Bundle assemblies into native code uses a separate copy of the compressed assemblies for each ABI, while the new LZ4 approach shares them across all target ABIs.

    Bindings for Android 11 Beta

    This version includes bindings for the Android 11 Beta from Google. See the Android 11 Beta documentation for additional information about the behavior and API changes in this new Android version. Because Android 11 Beta provides the finalized SDK and NDK APIs, the Xamarin.Android bindings are now also finalized and the Xamarin.Android SDK version number has been updated to 11.0. To use the bindings for the new APIs in a Xamarin.Android project, set Compile using Android version: (Target Framework) to Android 11 (R) under the Application tab of the Visual Studio project property pages. This sets the TargetFrameworkVersion property to v11.0 in the .csproj file:

    \<TargetFrameworkVersion\>v11.0\</TargetFrameworkVersion\>
    

    Note: The default and recommended Android SDK Build-Tools version for Xamarin.Android is still 29 because Build-Tools version 30.0 currently requires Java JDK 9 or higher, while both Xamarin.Android and Android Studio still require JDK 8. Android SDK Build-Tools 29 is compatible with the Android 11 bindings, so it is recommended to continue using Android SDK Build-Tools 29 for now.

    ๐Ÿ— Attempting to use Android SDK Build-Tools 30.0 with Java JDK 8 results in the following error:

    java.lang.UnsupportedClassVersionError: com/android/apksigner/ApkSignerTool has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0
    

    Project authors who wish to try Android SDK Build-Tools 30.0 can follow the steps under Preliminary Java JDK 11 compatibility to install and configure Java JDK 11.

    ๐Ÿ†• New features

    0๏ธโƒฃ These bindings take advantage of C# 8.0's support for default and static interface members to provide C# interface APIs that more closely match the original Android APIs.

    For example, in the Android.Views.TextClassifiers namespace, TextClassifier.HintTextIsEditable is now available as ITextClassifier.HintTextIsEditable, and the old TextClassifier.HintTextIsEditable field is marked [Obsolete].

    Note: An older set of bindings for interface constants were also available in Consts classes like TextClassifierConsts in earlier target framework versions. Those classes were marked [Obsolete] for several years. They have been removed completely for the Android 11 (R) target framework version. Project authors are encouraged to switch to the new interface members like ITextClassifier.HintTextIsEditable at their earliest convenience.

    Preliminary Java JDK 11 compatibility

    ๐Ÿ— Xamarin.Android can now use Java JDK 11 to build libraries and applications.

    ๐Ÿ— JDK 11 is not yet installed or required by default for Xamarin.Android, but the apksigner tool in Android SDK Build-Tools version 30 does require JDK 11, so project authors who are using the bindings for Android 11 Beta and want to experiment with setting the AndroidSdkBuildToolsVersion MSBuild property to version 30.0.0 or higher will need to use JDK 11.

    To do so:

    Install a distribution of JDK 11, such as JetBrains Runtime jbrsdk.

    On Windows, open Tools > Options in Visual Studio, select the Xamarin > Android Settings node, and set Java Development Kit Location to the root of the JDK 11 installation.

    On macOS, open Visual Studio > Preferences , select the Projects > SDK Locations > Android node, open the Locations tab, and set the Java SDK (JDK) Location to the root of the JDK 11 installation.

    ๐Ÿ”ง Alternatively, to configure the JDK path per project, open the project file in Visual Studio or another text editor and set the JavaSdkDirectory MSBuild property to the root of the JDK 11 installation. For example:

    \<PropertyGroup\> \<JavaSdkDirectory\>C:\Program Files\jbrsdk\</JavaSdkDirectory\> \</PropertyGroup\>
    

    Note: The error that appears when attempting to use Android SDK Build-Tools 30.0 th Java JDK 8 is:

    java.lang.UnsupportedClassVersionError: com/android/apksigner/ApkSignerTool has been compiled by a more recent version of the Java Runtime (class file version 53.0), this version of the Java Runtime only recognizes class file versions up to 52.0
    

    Known Issues

    • GitHub 4789: error XACLP7004: System.ArgumentException: Directory ... obj\Debug\javadocs...' does not appear to be an android doc reference directory. prevents using the JavaSourceJar Build Action in bindings projects.

    Mono.Android nullable reference types compatibility

    The Mono.Android assembly has been annotated for compatibility with C# 8.0 nullable reference type checks. Projects can now optionally place code that uses types from Mono.Android in a nullable context to take advantage of additional compiler nullability checks. For example, to enable nullability checks for all code in a project, set the Nullable MSBuild property to enable in the .csproj file:

    \<PropertyGroup\> \<Nullable\>enable\</Nullable\> \</PropertyGroup\>
    

    ๐Ÿ— When this property set, the build will emit warnings if any code does not properly account for possible null values passed into or returned from APIs in the Mono.Android assembly.

    ๐Ÿ“š See the nullable reference types documentation for more information.

    Note: The majority of Mono.Android, including the nullability annotations, is automatically generated from the Android Java source. The annotations intentionally preserve any upstream bugs in the nullability information provided by the Android source code.

    Tidier IntelliSense suggestions for Java.Lang.Object subclasses

    ๐Ÿ‘ Java.Lang.Object contains several properties and methods that are required to be public to support Xamarin.Android Java bindings but are not intended to be used in hand-written code. These members are now hidden from IntelliSense, making it easier to find the useful members.

    Example IntelliSense suggestions before and after

    ๐Ÿ‘ Bindings projects support for methods with more than 14 parameters

    ๐Ÿ‘ Xamarin.Android bindings projects now support binding Java methods that have any number of parameters instead of the previous limit of 14.

    Bindings projects enumeration enhancements

    The Transforms\EnumFields.xml file in bindings projects now allows <mapping> and <field> elements that use just clr-enum-type and clr-name attributes, with no jni-interface or jni-name attributes. This provides additional flexibility to define custom C# enumerations that are visible to the bindings generation process and do not correspond to any Java type in the bound Java library. For example:

    \<mapping clr-enum-type='Contoso.Permissions' bitfield='true'\> \<field clr-name='Read' value='0' /\> \<field clr-name='Write' value='1' /\> \<field clr-name='Execute' value='2' /\> \</mapping\>
    

    For enumerations that do correspond to Java types, project authors should continue to include the jni-interface and jni-name attributes as before.

    JI_JAVA_HOME environment variable for custom Java JDK paths

    Xamarin.Android will now look for the contents of an environment variable named JI_JAVA_HOME as another way to customize the Java JDK path used during the build. In cases where both the JI_JAVA_HOME environment variable and the JavaSdkDirectory MSBuild property are set to custom values, the MSBuild property takes precedence.

    In general, this environment does not need to be adjusted, but in certain special scenarios, having the option to customize the JDK path via an environment variable might provide useful flexibility.

    ๐Ÿ—„ XA1023 warning for upcoming DX DEX compiler deprecation

    Projects that have Dex compiler set to dx in the Visual Studio project property pages will now get a build warning:

    warning XA1023: Using the DX DEX Compiler is deprecated. Please update `$(AndroidDexTool)` to `d8`.
    

    To resolve this warning, set the Dex compiler in the Visual Studio project property pages to d8 or edit the project file in Visual Studio or another text editor and set the AndroidDexTool MSBuild property to d8:

    \<PropertyGroup\> \<AndroidDexTool\>d8\</AndroidDexTool\> \</PropertyGroup\>
    

    Background information

    ๐Ÿš€ Google has deprecated the DX DEX compiler in favor of the D8 DEX compiler. After February 1, 2021, DX will no longer be a part of the Android SDK or Android Studio. Project authors are encouraged to migrate their projects to D8 at their earliest convenience to prepare for this change.

    โš  Other warning and error changes

    โšก๏ธ Updated XA0113 warning for Google Play submission requirements

    The XA0113 warning has been updated to reflect a more recent minimum target version of Android 9 (API level 28) for submissions to the Google Play store. The following warning will now appear for projects that have an earlier version set under Compile using Android version: (Target Framework) in the Visual Studio project property pages:

    warning XA0113: Google Play requires that new applications and updates must use a TargetFrameworkVersion of v9.0 (API level 28) or above. You are currently targeting v8.0 (API level 26).
    

    ๐Ÿ”ง XA0119 error for incompatible use of Android App Bundle format in Debug configuration

    ๐Ÿ“ฆ The Android App Bundle publishing format is not currently compatible with the recommended fast deployment settings for Debug configuration deployments. Previously, projects that had Android Package Format (AndroidPackageFormat) set to aab in the Debug configuration that also had the recommended Use Shared Runtime ( Use Shared Mono Runtime on macOS) setting enabled would produce a build warning and then fail to launch on device.

    ๐Ÿ”ง Because this configuration is not currently supported, Xamarin.Android now produces an error for it instead of a warning:

    error XA0119: Using the shared runtime and Android App Bundles at the same time is not currently supported. Use the shared runtime for Debug configurations and Android App Bundles for Release configurations.
    

    ๐Ÿ“ฆ To resolve this error, change the Android Package Format setting in the Visual Studio project property pages to apk for the Debug configuration. This corresponds to the apk value for the AndroidPackageFormat MSBuild property in the .csproj file:

    \<PropertyGroup\> \<AndroidPackageFormat\>apk\</AndroidPackageFormat\> \</PropertyGroup\>
    

    ๐Ÿš€ This error is only relevant for Debug configuration builds. Release configuration builds can continue to use the Android App Bundle packaging format.

    ๐Ÿ—„ Bindings projects XA4231 warning for deprecated jar2xml parser

    ๐Ÿ— Any bindings project that has the AndroidClassParser MSBuild property set to the old jar2xml parser or any other unrecognized value will now get a XA4231 build warning:

    warning XA4231: The Android class parser 'jar2xml' is deprecated and will be removed in a future version of Xamarin.Android. Update the project properties to use 'class-parse' instead.
    

    ๐Ÿ“œ To resolve this warning, update the Android Class Parser setting in the Visual Studio project property pages or the .jar file parser setting in Visual Studio for Mac to class-parse. This corresponds to the class-parse value for the AndroidClassParser MSBuild property in the .csproj file:

    \<PropertyGroup\> \<AndroidClassParser\>class-parse\</AndroidClassParser\> \</PropertyGroup\>
    

    ๐Ÿ—„ Bindings projects XA4232 warning for deprecated XamarinAndroid code generation target

    ๐Ÿ— Any bindings project that has the AndroidCodegenTarget MSBuild property set to the old XamarinAndroid code generation target or any other unrecognized value will now get a XA4232 build warning:

    warning XA4232: The Android code generation target value 'XamarinAndroid' is deprecated and will be removed in a future version of Xamarin.Android. Update the project properties to use 'XAJavaInterop1'.
    

    To resolve this warning, update the Android Codegen target setting in the Visual Studio project property pages or the Code generation target setting in Visual Studio for Mac to XAJavaInterop1. This corresponds to the XAJavaInterop1 value for the AndroidCodegenTarget MSBuild property in the .csproj file:

    \<PropertyGroup\> \<AndroidCodegenTarget\>XAJavaInterop1\</AndroidCodegenTarget\> \</PropertyGroup\>
    

    โšก๏ธ Tool and library version updates

    โšก๏ธ D8 and R8 version update to 1.6.82

    โšก๏ธ The version of the D8 DEX compiler and R8 code shrinker included in Xamarin.Android has been updated from 1.5.68 to 1.6.82.

    โšก๏ธ bundletool version update to 0.14.0

    ๐Ÿš€ The version of the bundletool executable included in Xamarin.Android has been updated from 0.10.2 to 0.14.0, bringing in several improvements and bug fixes.

    โšก๏ธ AAPT2 version update to 4.0.0

    โšก๏ธ The version of the Android Asset Packaging Tool AAPT2 included in Xamarin.Android has been updated from 3.5.3 to 4.0.0.

    โšก๏ธ Manifest merger tool version update to 27.0.0

    ๐Ÿš€ The version of the manifest merger tool included in Xamarin.Android has been updated from 26.5.0 to 27.0.0.

    โšก๏ธ ProGuard version update to 6.2.2

    โšก๏ธ The version of ProGuard included in Xamarin.Android has been updated from 5.3.2 to 6.2.2, bringing in a number of improvements and bug fixes.

    Note: ProGuard is only relevant for projects configured to use the older DX DEX compiler. Project authors are recommended to update to the newer D8 DEX compiler at their earliest convenience.

    โšก๏ธ Mono.Data.Sqlite SQLite version update

    The version of SQLite used by Mono.Data.Sqlite in Xamarin.Android has been updated from 3.31.1 to 3.32.1, bringing in security fixes, improvements, and bug fixes.

    ๐Ÿ›  Issues fixed in Xamarin.Android 11.0.0.3

    ๐Ÿ— Design-time builds

    • โšก๏ธ Developer Community 896179, GitHub 4273: The IDE could become unresponsive for tens of seconds after changes were saved to an Android layout file in projects configured to use AAPT2.

    Application behavior on device and emulator

    • Developer Community 970610, Java.Interop GitHub 661: System.TypeLoadException: 'Could not load type 'Android.App.Application.IActivityLifecycleCallbacks' could cause apps using the Android 11 Developer Preview bindings to abort during startup.
    • Developer Community 1045818: Starting in Xamarin.Android 10.3 on Windows, errors similar to Java.Lang.RuntimeException: 'Font asset not found Fonts/fontello.ttf' could cause apps to abort unexpectedly on device after they were updated and redeployed from Visual Studio on Windows.
    • ๐Ÿ“œ Developer Community 1050379, GitHub 4795: Starting in Xamarin.Android 10.3, Unable to activate instance of type Android.Util.SparseArray`1[E] could cause apps built in the Debug configuration to abort.
    • โšก๏ธ GitHub 3784, GitHub 4471: An outdated version of the Mono Shared Runtime package was sometimes left on target development devices and emulators after Xamarin.Android version updates. This could result in unexpected behaviors in Debug configuration apps until the old shared runtime was manually uninstalled.
    • GitHub 4152: Unable to read profile ... The system cannot find the file specified prevented the FinishAotProfiling MSBuild target from completing successfully if the location of adb was not in the PATH environment variable.
    • GitHub 4542: error CS1681: You cannot redefine the global extern alias prevented building app projects successfully if the .csproj file included global in the <Aliases></Aliases> metadata element of a referenced Xamarin.Android class library.
    • GitHub PR 4589: ObjectDisposedException could in theory be thrown during cancellation of AndroidClientHandler requests, depending on the particular timing of cancellation and object disposal. The time window where this can happen is now narrower.
    • GitHub 4662: In projects configured to use the recently added manifestmerger.jar Android manifest merging option, tools:node="remove" did not yet remove AndroidManifest.xml nodes generated by C# attributes in referenced library projects.
    • GitHub 4772, GitHub 4852: System.DllNotFoundException: libmono-native.so assembly:<unknown assembly> type:<unknown type> member:(null) could cause apps to abort during startup on certain Android 5.0 Lollipop (API level 21) and Android 5.1 Lollipop (API level 22) devices.
    • โšก๏ธ GitHub PR 4779: error XA1011: Using ProGuard with the D8 DEX compiler is no longer supported. Please update $(AndroidLinkTool) to r8. did not mention the corresponding term code shrinker that is used in the Visual Studio project property pages and did not mention that AndroidLinkTool is an MSBuild property.
    • GitHub 4791: Starting in Xamarin.Android 10.3, many typemap: module matching MVID [...] not found. messages were logged to the application output for certain running apps, obscuring other logging statements of interest. These messages were diagnostic and did not indicate problems in the apps.
    • GitHub 4805: Starting in Xamarin.Android 10.3, localized resources from .resx files in Xamarin.Android application projects were no longer deployed when building and deploying from within Visual Studio to an attached device or emulator. In contrast, clean builds started on the command line worked as expected.
    • GitHub 4809: Starting in Xamarin.Android 10.3, System.MemberAccessException: Cannot create an instance of ... could cause apps built in the Debug configuration to abort when attempting to use certain APIs involving types that have both generic and non-generic versions such as Android.Widget.ArrayAdapter.
    • GitHub PR 4846: On Android 11 (API level 30) devices and emulators, java.lang.RuntimeException: Unable to get provider mono.MonoRuntimeProvider: java.lang.RuntimeException: Unable to find application Mono.Android.Platform.ApiLevel_30! caused apps to abort during startup for projects with the Target Android version set to API level 30 in the Android Manifest tab of the project property pages.

    ๐Ÿš€ Application and library build and deployment

    • ๐Ÿ”— Developer Community 1061307 Changes to files set to use the LinkDescription Build Action were not included as expected in incremental builds. Clean rebuilds were required to propagate the changes as expected.
    • Developer Community 1076396: DllImport error loading library '__Internal': 'Could not load library: Library '/system/lib64/libmonodroid.so' not found.' caused apps to abort during startup when built in an unsupported Debug configuration, with Android Package Format set to aab , because the build only provided a warning. The build now produces an error instead.
    • GitHub 2042: The Mono.Android assembly did not yet surface the nullability information provided by the upstream Android source code for use in C# 8.0 nullable contexts.
    • ๐Ÿš€ GitHub 4439: Invalid values of the AndroidDexTool MSBuild property produced a misleading error during deployment instead of an error during the build. Invalid values are now ignored and the default D8 DEX tool is used instead.
    • GitHub PR 4578: The source directory is under the output directory. Skip it. build error did not yet mention the relevant MSBuild item type or the current path of the invalid item.
    • GitHub PR 4640: System.ArgumentException: Illegal characters in path could prevent successful automatic detection of the Android SDK location during builds in some cases. One possible cause of this issue has now been addressed.
    • GitHub 4790: Starting in Xamarin.Android 10.3, errors similar to error XA3006: Could not compile native assembly file: typemaps.x86.s caused incremental builds to fail after changes to the Supported architectures (AndroidSupportedAbis) in the Advanced section of the Android Options tab in the project property pages.
    • ๐Ÿ“œ GitHub 4804: Starting in Xamarin.Android 10.3, Failed to parse APK info: failed to parse AndroidManifest.xml, error: %!s() prevented incremental deployments of certain projects that had references to libraries containing AndroidManifest.xml files.
    • โš  Java.Interop GitHub PR 622: warning : Failed to read ... with debugging symbols. Retrying to load it without it. and Mono.Cecil.Cil.SymbolsNotMatchingException: Symbols were found but are not matching the assembly could appear during builds, for example for projects using obfuscation tools. To align more closely with the behavior of other common .NET project types that do not warn about mismatched debugger symbols, Xamarin.Android projects now log these as informational messages instead of warnings.
    • For Android 11 (API level 30) emulators, failed to install Mono.Android.Platform.ApiLevel_30.apk:Failure [INSTALL_PARSE_FAILED_NO_CERTIFICATES: Scanning Failed.: No signature found in package of version 2 or newer for package Mono.Android.Platform.ApiLevel_30] prevented deploying successfully in the Debug configuration with the shared runtime enabled, which is the recommended default.

    Application Mono Framework behavior on device and emulator

    ๐Ÿš€ This version of Xamarin.Android updates the Mono 6.12 runtime and class libraries from Commit 165f4b03 to Commit 83105ba2, adding 21 new commits.

    ๐Ÿ›  Fixes included for issues reported with Xamarin.Android applications:

    • Developer Community 952568, Mono GitHub 18865: Starting in Xamarin.Android 10.2, SslStream.BeginRead() and SslStream.BeginWrite() would block if called at the same time.
    • GitHub 4713: Starting in Xamarin.Android 10.3, SIGSEGV during monodroid_typemap_java_to_managed could cause apps to abort if the application was built with the AndroidEnablePreloadAssemblies MSBuild property set to false.
    • GitHub 4817: * Assertion at ... mono/mini/method-to-ir.c:12332, condition `var->opcode == OP_REGOFFSET' not met caused apps to abort in the Release configuration when attempting to use the new() type constraint in combination with the XElement type.

    IDE compatibility

    • GitHub 4582: Some Java.Lang.Object properties and methods like Handle and PeerReference appeared in IntelliSense suggestions even though they were primarily intended for use only in generated code.
    • ๐Ÿ— GitHub 4675: The project ... is missing Android SDKs required for building. prevented building without the Android NDK installed for projects with Enable Startup Tracing or AOT Compilation enabled.

    Android API bindings

    • ๐Ÿ‘ GitHub 4752: error XAGJS7004: System.ArgumentException: Unsupported ForegroundServiceType value '9'. prevented using bitwise combinations of multiple values of Android.Content.PM.ForegroundService.

    Bindings projects

    • GitHub PR 4579: Unrecognized transform root element build error did not yet mention the relevant MSBuild item type.
    • GitHub PR 4579: Specified source jar not found and Specified reference jar not found build errors did not yet mention Java library types other than JAR files.
    • Java.Interop GitHub 515: Bindings projects did not yet have a convenient way to add C# enumerations that did not correspond to Java types.
    • โš  Java.Interop GitHub 588: Warnings similar to warning BG8503: Invalidating Java.Util.IMap and all nested types because some of its methods were invalid. could prevent the bindings generator from providing bindings for interfaces even when the invalid methods were all marked static. Because classes are not required to implement static methods from Java interfaces, the bindings generator now ignores invalid static methods and continues generating bindings for interfaces in these cases.
    • ๐Ÿ— Java.Interop GitHub PR 611: Building a binding project that had a reference to another binding project performed some redundant work for assemblies referenced by both projects.
    • ๐Ÿ‘ Java.Interop GitHub 631: Xamarin.Android bindings projects did not yet support binding Java methods with more than 14 parameters.
    • โš  Java.Interop GitHub PR 651: Unactionable warning : class-parse: warning: method ... Local variables array has 0 entries ... descriptor has 1 entries! prevented the bindings generator from detecting parameter names for constructor methods marked with the Kotlin @JvmOverloads annotation.

    Thank you

    A big _ Thank You! _ to community members who contributed improvements in this release:

    Installing

    โšก๏ธ To get the new version in Visual Studio, update Visual Studio:

    For other scenarios, the latest commercial .vsix and .pkg installer packages can be found in the project README.

    ๐Ÿ”– Versions for continuous build environments

    ๐ŸŽ For users installing Xamarin.Android on macOS continuous build environments, the corresponding version of the Mono Framework MDK to use is Mono Framework MDK 6.12.0.89.

    For special scenarios where users require Xamarin.Android SDK version 11.0.0.3 without any subsequent 11.0 servicing fixes, the fixed-version Visual Studio 2019 version 16.7.0 BuildTools installer can be used on Windows, and the fixed-version .pkg installer package can be used on macOS. The fixed-version .vsix installer package is another alternative for Windows.

    Open source

    Xamarin.Android 11.0 is based on the open-source Xamarin.Android repositories: