Update to macOS High Sierra The next version of Xcode (9.3) requires macOS High Sierra. In order to support the Xcode 9.3 SDKs, a future version of Xamarin.iOS will also require macOS High Sierra. Xamarin.iOS developers should update to macOS High Sierra as soon as possible.
- The latest features and API requires Xcode 9.2 and the bundled iOS, tvOS and watchOS SDKs
- Apple Xcode 9.2 requires a Mac running macOS 10.12.6 (Sierra) or newer
What's New in this Release
This is a set of optimizations that makes the dynamic registrar removable by the linker (under most circumstances). This results in:
- Smaller applications - The linked
Xamarin.iOS.dllis between 30-50% smaller than before since the information (e.g. custom attributes) needed only at build time can now be removed. This also allows the linker to remove more code than before (since less code is being referenced);
- Faster application startup - More registration work is being done at build time instead of at runtime. E.g. this removes the need to use (slow) reflection on custom attributes to register types and methods;
- Reduced memory usage - The avoided work also reduces the memory required for applications. Initial (startup) memory requirement is down 30% for a minimal application and 20% for extensions. This makes it easier to create some type of extensions where iOS imposes memory limits (e.g. 16MB for Today extensions).
Xamarin.Analysis: Use LLVM rule
We added a new rule to our project analysis tool which recommends enabling the LLVM compiler for Release|iPhone configuration. LLVM generates code that is faster to execute at the expense of build time.
As a reminder to run the rules, in Visual Studio for Mac's menu, select Project > Run Code Analysis.
Note: all existing rules are documented here.
- 3127 - [watchos][accelerate] Enable Accelerate framework on watchOS
- 3247 - [generator] Add support for
[DesignatedDefaultCtorAttribute]as a type-level attribute
- 3392 - [scenekit] Adds
- 34135 - [security] Add new
- 35009 - [foundation] Add
- 40520 - [uikit] Add
UIImage.FromBundleto mention it was not thread safe before iOS9
- 41292 - [foundation] Add
- 59294 - [coreimage] Enable
ImageRepresentationstrong dictionary helpers
- 60740 - [foundation] Add
- 3200 - [mtouch][mmp] Warn for invalid debug symbols files (e.g. out of sync)
- 56501 - [mtouch][mmp][bgen] Add support for response files
- 57531 - [generator] Support the use of
- 57870 - [generator] Teach generator about
[WrapAttribute]on getters and setters
- 58350 - [generator] Handle sharpie's
This version Xamarin.iOS correspond to our 15.7 (
- March 8, 2018 - Xamarin.iOS 126.96.36.199
You can learn more about how we ship our releases in the Visual Studio 2017 Release Rhythm document.
March 8, 2018 - Xamarin.iOS 188.8.131.52
This version is included in the Visual Studio 2017 version 15.7 Preview 1 release.
- 3265 - [mtouch] Make sure the
xamarin_localized_string_format*functions are available in
- 3372 - [linker] Mark all
- 60088 - [debugger] Fixed
Assertion at ../../../../external/mono/mono/mini/debugger-agent.c:4765, conditionarray->len == 1` not met
- 60771 - [aot] Fixed
Attempting to JIT compile method 'System.Runtime.CompilerServices.Unsafe:Add (byte&,int)' while running in aot-only mode
- PR3170: [metalperformanceshaders] Fix
MPSImageLanczosScalebase class. As part of the fix the
MPSImageScale.ScaleTransformproperty changed to be a nullable value-type. The previous API did not work correctly so this should not affect applications being re-compiled.
Integrated Mono Features/Fixes
Additional information can be found in Mono release notes.
Failure to launch on device
In Visual Studio 15.7 Preview 2, launching an app on device might cause the following error:
error MT1007: Failed to launch the application 'myapp.app' on the device 'mydevice': Session Active Error (error: 0xe800001d). You can still launch the application manually by tapping on it.
- Launch the app by tapping on it.
- Reboot the device.
This will be fixed in an upcoming release.
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 requires workarounds, e.g:
- The static registrar requires Xcode headers files to build applications, leading to
MT4109errors if API 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.
The following documents contains a complete list of the API changes since the Xamarin.iOS 11.8 stable release:
Your feedback is important to us. If there are any problems with this release, check the Xamarin.iOS Forums and GitHub Issues for existing issues. If you do not find any matching issue, please feel free to start a new discussion and report an issue.
Xamarin.iOS is based on the following open-source repositories: