iOS Unified / 64 bit support

Hi there,

starting February 1, 2015, Apple will only accept new binaries, which are build with the iOS 8 SDK and 64 bit support: https://developer.apple.com/news/?id=10202014a

This raises the question: Is there alrady a plan to port monogame to the new Xamarin Unified architecture, which supports 64 bit? Is already someone working on it? Or are there any technical reasons, why it won’t work?

Otherwise, I would take a look at unified support this weekend.

AFAIK nobody started working on it, but it seems like a pretty straightforward thing. You can already build for 64 bit architectures in a way that will give you two dlls: one for 32 bit and one for 64 bit. This is similar to the previous architecture change from ARMv6 to ARMv7.

Xamarin is now trying to unify the two architectures

It was really easy to port MonoGame to the new unified API. Some GL function calls changed (out instead of ref), MonoTouch.Constants is not available anymore, and some changes to use CGRect/CGPoint, etc.

But there’s one really big problem: When build for all three architectures, the binary size goes insane. I’ve posted it at the Xamarin Forums: http://forums.xamarin.com/discussion/26842/insane-binary-size-when-creating-an-armv7-armv7s-arm64-app

Wow, that’s really strange. You might be better off posting the bug on https://bugzilla.xamarin.com/, and/or sending a mail to ios@xamarin.com.

Using bugzilla was a good idea. Xamarin found the bug and they fixed it.

Here’s the pull reques for the unified apit: https://github.com/mono/MonoGame/pull/3139

So just to clarify - does the current development version of Monogame support 64 bit iOS? And if so, what are the steps to set up a project, and the differences with this setup prior to the 64 bit requirement?

Just asking because I only have limited access to a Mac, so any time I can shave off getting up and running would be good!

The support for Universal was merged in a week or two ago. I believe you may need to recreate your project files. Someone who has actually used it might be able to correct me there if I’m wrong.

You can either recreate the project or follow the steps described in the pull request. It’s pretty easy, you only need to make 3 changes.