03 December 2014
Corona’s iOS 64-bit Transition Plan
[UPDATE] Please go here for the latest.
Starting Feb 1, 2015, Apple is requiring all new app submissions to be 32/64-bit-universal.
Before diving in, I should emphasize that between now and Jan 31, 2015, you can continue to submit your apps to the iTunes App Store using the current public release, just as you are doing today. The 64-bit requirement only comes into play starting Feb 1.
Alright, so here’s what we are going to do to address this to make your lives as iOS app developers as smooth as possible. We’ll cover this across various categories:
- CoronaCards developers
- Corona Enterprise developers
- Corona SDK developers
- Plugin Users, i.e. Corona devs that use plugins in their projects
- Plugin Developers, i.e. 3rd party partners that are creating plugins
CoronaCards developers will not have to worry about Corona-specific issues. This is because
CoronaCards.framework is already 32/64-bit universal.
However, you may have existing code and/or legacy Xcode projects that need to be transitioned. Please refer to Apple’s 64-bit transition guide to ensure your project is ready.
Our CoronaCards iOS samples have been updated and should be emitting 32/64-bit universal binaries.
Corona Enterprise developers will be able to build 32/64-bit universal binaries starting with daily build 2014.2515 or after. This is compatible with older Corona Enterprise projects and new ones.
Before diving in, I should mention that older Corona Enterprise projects are designed to be 32-bit only so if you are not ready to transition your Corona Enterprise project to 32/64-bit universal, you can still use the latest 32/64-bit universal daily builds of Corona Enterprise. Your older Xcode projects are already setup to ignore the 64-bit slice available in the latest versions of CoronaEnterprise.
The primary reason you would not be ready to transition is that you may depend on plugins which do not have 32/64-bit universal binaries available yet. If that’s the case, then the plugin will appear to be missing when run on a 64-bit device such as an iPhone 6 — see 32-bit-only plugins: No Forward Compatibility for more information.
For those of you who have decided you are ready to make the transition, here’s what you need to know:
- For existing Corona Enterprise Xcode projects, you will need to make simple changes to your Xcode project settings. These changes are explained under the ‘Xcode’ section of our 64-bit Transition Guide. These changes will ensure that both 32-bit and 64-bit slices available in 2014.2515 are bundled into your app executable.
- For new projects, you should model off the projects off the project templates and/or samples in this daily build (or after) so that you are building 32/64-bit universal binaries.
- Most likely, as a Corona Enterprise developer, you have native (C/C++/Obj-C) code. If that’s the case, you need to make sure that code is 64-bit compliant. Please refer to Apple’s 64-bit transition guide for additional guidance.
REMINDER: If you are transitioning and are using plugins, you must ensure that the plugin binary files include both 32-bit and 64-bit slices. See ‘Plugin Users’ for additional details.
Starting in early Jan 2015, we will be making a 32/64-bit universal version of Corona SDK available to all subscription tiers. Depending on the progress of our plugin partners, we may make daily builds available to Pro (and higher) subscribers earlier than that.
When this build becomes available, you will just need to rebuild your app with this version of Corona SDK.
The primary reason for not making this available sooner is because we want to give our 3rd party plugin partners time to update their plugins.
We could make a 32/64-bit universal version of Corona SDK available immediately, but we have decided that it makes more sense to wait:
- You can continue to submit apps to Apple using 32-bit only builds until Jan 31, 2015.
- We do not want to disrupt your app development plans prior to the holiday rush.
- A 32/64-bit universal Corona SDK requires 32/64-bit plugin binaries to be available to operate correctly.
- In particular, if (instead) a 32-bit-only plugin binary is used, this plugin will appear to be missing when run on a 64-bit device (e.g. iPhone 6) – see 32-bit-only plugins: No Forward Compatibility for more information.
- 3rd party partner plugins need time to upgrade their plugins to 32/64-bit universal.
For these reasons, we have decided it makes the most practical and pragmatic sense to wait until early Jan 2015.
[UPDATE] Please go here for the latest.
Plugin binaries are being migrated to be 32/64-bit universal:
- Plugins offered by Corona have already been transitioned to universal and are posted on our servers.
- These will not affect existing daily builds. The pre-existing Corona SDK and Corona Enterprise are setup to ignore 64-bit slices.
- Once a 32/64-bit universal version of Corona SDK is available, both 32-bit and 64-bit slices of the plugin will automatically be bundled into your app binary.
- 3rd party plugin partners are in the process of upgrading their plugins to 32/64-bit universal.
For Corona Enterprise developers who want to transition, you should check whether a plugin binary is 32/64-bit universal. You can use the
file command line tool to perform this check, as explained in the ‘Plugin Submission’ of our 64-bit transition guide.
If you are a 3rd party partner, you should consult our Corona 64-bit Transition Guide so you can update your plugins that are hosted on our servers.
Starting today, any plugin binary updates posted to our server are required to be 32/64-bit universal. In addition, by Jan 5, 2015, your plugin binaries MUST BE universal. We will remove all plugins that have not been updated to be 32/64-bit universal.