Xamarin.iOS 12.6 Release Notes

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

Requirements

  • The latest features and APIs requires Xcode 10.1 and the bundled iOS, tvOS and watchOS SDKs
  • Apple Xcode 10.1 requires a Mac running OSX 10.13.6 (High Sierra) or newer

What's New in this Release

Release History

This version of Xamarin.iOS corresponds to our 16.0 (d16-0) milestone.

  • April 2, 2019 - Xamarin.iOS 12.6.0.25
  • March 20, 2019 - Xamarin.iOS 12.6.0.25
  • March 5, 2019 - Xamarin.iOS 12.6.0.23
  • January 23, 2019 - Xamarin.iOS 12.6.0.10
  • December 4, 2018 - Xamarin.iOS 12.3.1.28

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

April 2, 2019 - Xamarin.iOS 12.6.0.25

This version is included in Visual Studio for Mac 8.0 and Visual Studio 2019 version 16.0.

Note: Due to close release dates this version does not include Xcode 10.2 API but is compatible with the Xcode 10.2 toolchain. A newer version of Xamarin.iOS based on d16-0 and includes Xcode 10.2 API will be available shortly. If required the latest 12.4 release (based on d15-9) is available and include full support for Xcode 10.2.

March 20, 2019 - Xamarin.iOS 12.6.0.25

This version is included in Visual Studio for Mac 8.0 Preview 4.

March 5, 2019 - Xamarin.iOS 12.6.0.23

This version is included in Visual Studio 2019 version 16.0 beta 3.

Issues Fixed

  • GitHub 5524 - [msbuild] .dSYM is not properly generated unless configuration is Release
  • GitHub 5345 - [mapkit] Add missing [NullAllowed] in initWithAnnotation:reuseIdentifier:
  • GitHub 5524 - [uikit] UIGestureRecognizer.Dispose crash when ran from the finalizer thread
  • PR 5575 [msbuild] Fixed assembly resolution issue with some iOS projects that used netstandard

Integrated Mono Features/Fixes

Xamarin.iOS uses a customized runtime and base class libraries (BCL) from Mono 5.18 Commit 163f45

January 23, 2019 - Xamarin.iOS 12.6.0.10

This version is not installed by default with Visual Studio 2019 version 16.0 preview 2 release. To install it please follow the instructions from this document.

Enhancements

  • GitHub 3647 - [documentation] Replace Bugzilla references by GitHub in error messages
  • GitHub 4445 - [documentation] Update MT5216 error
  • GitHub 4606 - [CoreFoundation] Implement missing dispatch API
  • GitHub 4698 - [CoreGraphics] Add MatrixOrder overload for Scale, Rotate and Translate
  • GitHub 5028 - [mtouch] Display a specific MT0140 error if a .framework binary is invalid

Issues Fixed

  • GitHub 4039 - [SceneKit] Avoid possible NullReferenceException in ScnTool task
  • GitHub 4190 - [UIKit] Avoid cycles when unsubscribing UIGestureRecognizer
  • GitHub 4810 - [msbuild][watchOS] Fix "Binary uploaded is invalid" when submitting watchOS applications
  • GitHub 4893 - [UIKit] Add correct availability information on UIScrollView.ContentOffset
  • GitHub 4894 - [Foundation] Fix NSUserActivity.SuggestedInvocationPhrase to work if nothing else from Intents (SiriKit) framework is used
  • GitHub 4895 - [linker] Properly parse [InternalsVisibleTo] attribute
  • GitHub 4978 - [linker] Set flag when processing ParameterInfo.get_Name from XML files to avoid conflict errors
  • GitHub 4988 - [MediaPlayer] Fix NullReferenceException in MPNowPlayingInfoCenter when encountering null dictionary entries
  • GitHub 5024 - [UIKit] Preserve method associated with updateSearchResultsForSearchController:
  • GitHub 5058 - [SceneKit] Fix SCNAction.TimingFunction signature to take a Func<float,float>
  • GitHub 5065 - [msbuild] Tasks do not log notices as errors anymore. This caused issues with Xcode 10.1 where error: Could not get traitsetID for iPhone11,6 was incorrectly reported
  • GitHub 5094 - [msbuild] Fix CompileEntitlements target so it's not skipped when the project doesn't contain entitlements. Even if there is no user-created entitlement, this target needs to run to generate the application-identifier entitlement in order to deploy the app on device
  • GitHub 5124 - [runtime] Clean up runtime public symbols to avoid crashes when binding static libraries
  • GitHub 5148 - [Foundation] Ensured we use the cookies from the cookie storage in NSUrlSessionHandler
  • GitHub 5183 - [registrar] Throw EntryPointNotFoundException when generating P/Invoke wrappers for objc_msgSend*_stret on arm64
  • GitHub 5190 - [Foundation] Respect HttpClient.Timeout for NSUrlSessionHandler
  • GitHub 5252 - [aot][watchOS] Fixed "MT3001: Could not AOT the assembly" in mono
  • GitHub 5277 - [msbuild] Fixed error MSB4018: The "DetectSigningIdentity" task failed unexpectedly

Integrated Mono Features/Fixes

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

December 4, 2018 - Xamarin.iOS 12.3.1.28

This version is not installed by default with Visual Studio 2019 version 16.0 preview 1 release. To install it please follow the instructions from this document.

Enhancements

  • 4255 - [registrar] Ignore availability warnings from clang
  • 4430 - [debugger] Wireless Debugging Warning Still Appears After Disabled in VS and XCode
  • 4525 - [scenekit] Add advice to SCNMatrix4 about it's row major representation
  • 4549 - [mtouch/mmp/docs] Improve MT0091 to include how to enable the linker
  • 4688 - [coremedia] Expose the CMSampleAttachmentKey interface.
  • 4813 - [foundation] Add bindings for NSMutableDictionary addEntriesFromDictionary:
  • 4893 - [uikit] Duplicate bindings for 'UIScrollView.ContentOffset' to get correct availability information

Issues Fixed

  • 4102 - [runtime] Add support for delegates as return values in protocol members
  • 4611 - [metal] Fix incorrect structure sizes in Metal/Defs.cs
  • 4988 - [mediaplayer] Fix NRE in MPNowPlayingInfoCenter wrt null dictionary entries

Integrated Mono Features/Fixes

Xamarin.iOS uses a customized runtime and base class libraries (BCL) from Mono 5.14 Commit 969357ac

Known Issues

LLVM Optimization Regression

  • A last minute regression was found inside the LLVM AOT backend that is commonly used for release builds. An API that return generics might not work properly, e.g. the following code would return false for both bool values when LLVM is enabled.
public static async Task<(bool a, bool b)> Test ()
{
	return (true, true);
}
  • This issue will be fixed in a future 16.0 service release. In the mean time you should disable LLVM for your release builds (Project Options, Build) unless your tests were successfully executed using using the LLVM backend (and not the normal/mono AOT backend or a debug build).

64 bits watchOS support

  • Xcode 10 GM added support for 64 bits watch application, aka arm64_32. The current app store submission process requires this architecture to be included in your application when including watch support. You can workaround this with [https://github.com/xamarin/xamarin-macios/issues/4810#issuecomment-421338365](these instructions).

  • Trying to run a watch app on the new Series 4 Apple Watch will fail with this error:

    IncorrectArchitecture: Failed to find matching arch for 32-bit Mach-O input file ...
    error MT1006: Could not install the application 'MyTestApp.app' on the device 'MyDevice': AMDeviceSecureInstallApplicationBundle returned: 0xe8000087 (kAMDIncorrectArchitectureError).
    

    This is because the S4 device can only execute native arm64_32 code, not armv7k like previous watches.

    Please read https://github.com/xamarin/xamarin-macios/issues/4864 for more information and a workaround.

Apple Breaking Changes

  • rdar://41123682 Apple changed TVElementUpdateType* enum values. Please test your application if you're using this type.
  • rdar://43425168 Apple changed IN*WorkoutIntentResponseCode enum values. Please test your application if you're using this type.

Apple Non-Breaking Issues

  • rdar://41135211 RPBroadcastPickerView symbol is not present in simulator. If needed you'll need to test this on devices.

Using an older Xcode version

Using an older Xcode version (than the one mentioned in the above requirements) is often possible, but some features may not be available. Also some limitations might require workarounds, e.g.:

  • The static registrar requires Xcode headers files to build applications, leading to MT0091 or MT4109 errors if APIs are missing. In most cases enabling the managed linker will help (by removing the API).
  • Bitcode builds (for tvOS and watchOS) can fail submission to the App Store unless an Xcode 9.0+ toolchain is used.

API Diff

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

Feedback

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 contributors who made improvements in this release: