Xamarin.iOS 12.14 Release Notes

System Requirements | What's New | Known Issues | Blogs | Open Source

To see installation instructions for both Visual Studio for Mac and Visual Studio 2019, please visit https://releases.xamarin.com/

Requirements

  • The latest features and APIs requires Xcode 10.2 and the bundled iOS, tvOS and watchOS SDKs
  • Apple Xcode 10.2 requires a Mac running OSX 10.14.3 (Mojave) or newer

What's New in this Release

Release History

This version of Xamarin.iOS corresponds to our 16.2 (d16-2) milestone.

  • August 5, 2019 - Xamarin.iOS 12.14.0.114
  • July 15, 2019 - Xamarin.iOS 12.14.0.110
  • June 6, 2019 - Xamarin.iOS 12.14.0.55

You can learn more about how we ship our releases in the Visual Studio 2019 Release Rhythm document.

August 5, 2019 - Xamarin.iOS 12.14.0.114

This version is included in Visual Studio for Mac 8.2 service release 2.

Issues Fixed

  • 6665 - Support installing on macOS 10.15

July 15, 2019 - Xamarin.iOS 12.14.0.110

This version is included in Visual Studio for Mac 8.2 preview 5.

Enhancements

  • 4864 - [watchOS] Implement support for ARM64_32

Issues Fixed

  • 5941 - [metal] Sprinkle [return: Release] on all 'new*' selectors
  • 6135 - [generator] Fix generation of ReturnRelease code for third-party bindings
  • 6148 - [generator] Check if an object/pointer is null before trying to call release on it
  • 6179 - [generator] Don't print multiple EditorBrowsable attributes
  • 6216 - [simulator] Fix issue starting a simulator after installed Xcode 11 beta
  • 6356 - [coregraphics] Fix lifetime of delegates passed to CGPatternCreate

June 6, 2019 - Xamarin.iOS 12.14.0.55

This version is included in Visual Studio for Mac 8.2 preview 1.

Enhancements

  • 6016 - [foundation] Updated NSUrlSessionHandler to support TLS 1.3.

  • 5987 - [msbuild] Add more details to MSBuild errors for provisioning profiles.

  • 4170 - [foundation] Add custom trust/certificate validation to NSUrlSessionHandler.

    Basic application (size) for doing an HttpClient.GetAsync, release/llvm, 64bits only

    • NSUrlSessionHandler (master): 6.4 MB
    • NSUrlSessionHandler (PR #5936): 7.7 MB
    • NSUrlSessionHandler (this PR): 6.4 MB

    The size increase occurs because of the reference to .NET X509* types. This brings a lot of additional code, including managed cryptographic code, inside the application. Even when the feature is not used.

    The solution is to expose an API that only use native (OS) types, which are mostly already part of the application. This has a very low impact on existing applications.

    It's still possible to hook back to .NET validation if needed (it should not in most cases) but, in this case, the extra price will only be paid if used (and can be lower if the code is needed by something else from the application).

    In comparison using other HttpClient handler produce app sizes of:

    • HttpClientHandler (managed): 10.4 MB
    • CFNetworkHandler: 6.8 MB
  • 3655 - [linker] The custom attributes removal step is now optional. This is useful in cases where one or many custom attributes are required by the application at runtime (e.g: the assembly attribute). While not ideal, disabling this single step is much better than disabling linking for the whole application.

Issues Fixed

  • 6008 - [msbuild] Lock variables accessed in a Parallel.ForEach callback since the callback must be thread-safe because it's executed in parallel using multiple threads.
  • 13483 - [msbuild] Add reference to System.Drawing.Common.dll to Xamarin.iOS projects to fix compilation issues.
  • 5171 - [runtime] Improved marshalling of out/ref parameters, arrays, classes and selectors to avoid exceptions such as: "Unable to marshal byref parameter type".

Known Issues

CS0246 / Build failure for missing System.Drawing types

Some existing projects might not compile anymore and generated a CS0246 error like:

x.cs(1,1): error CS0246: The type or namespace name 'SizeF' could not be found (are you missing a using directive or an assembly reference?) 	

Workaround: Manually add a reference to the System.Drawing.Common.dll assembly.

This issue is tracked in 13483.

Application Submissions

Submitting an application to the AppStore might result in a rejection like this one:

Non-public API usage:

  • The app references non-public symbols in APP: _FSEventStreamCreate, _FSEventStreamInvalidate, _FSEventStreamRelease, _FSEventStreamScheduleWithRunLoop, _FSEventStreamStart, _FSEventStreamStop, _FSEventStreamUnscheduleFromRunLoop

Workaround: Ensure the managed linker is enabled (e.g. Link Framework SDKs Only or Link All).

This issue is tracked in 14290.

Using an older Xcode version

Using an older Xcode version (than the one mentioned in the above requirements) is often possible. For more information see the following documentation.

API Diff

The following documents contains a complete list of the API changes since the Xamarin.iOS 12.10 stable release:

Integrated Mono Features/Fixes

Xamarin.iOS uses a customized runtime and base class libraries (BCL) from Mono 6.0 Commit e6f5369

Feedback welcome

Your feedback is important to us. If there are any problems with this release, check the Xamarin.iOS Forums and Xamarin Mac/iOS Github Repository for existing issues. If you do not find any matching issue, please feel free to start a new discussion and report an issue.

Open Source

Xamarin.iOS is based on the following open-source repositories:

Contributors

A big Thank You! to external contributors who made improvements in this release: wouter.meuwis@3factr.be