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:
- xamarin-macios branch
d16-2
- mono branch
2019-02
Contributors
A big Thank You! to external contributors who made improvements in this release: wouter.meuwis@3factr.be