Haxe/NME game failing on iOS devices after AIR version updated

499 Views Asked by At

So, I inherited a game project with the following setup:

  • A core SWF of the game itself, written in Haxe (3.0)/NME (4.0.2), utilizing the Starling framework, compiled to a Flash target using FlashDevelop
  • An AS3 wrapper which deals with assorted device communication needs (e.g. detecting device capabilities, managing phone lock state and pausing game/muting music, etc). This is compiled into own SWF (AIR 3.6), which is what is actually launched, and subsequently loads the "core" SWF and adds it the stage.
  • This AS3 SWF is subsequently packaged into the target formats (APK/IPA) using ADT (also AIR 3.6), along with its assets (including the core SWF).

Despite the odd complexity, the whole thing worked just fine; we created functional, usable apps that a)worked on both Android and iOS devices, and b) passed submission criteria.

Flash forward several months; the game has now passed beta and is ready for initial release. Android, everything goes fine. iOS, the other hand... Just days before we attempted to upload 1.0 to iTunes Connect, Apple changed their requirements. Suddenly, we were getting the error "Apps and app updates submitted to the App Store must be built with the public (GM) versions of Xcode 5.1.1 or later, and iOS 7 SDK or later. Don’t submit apps built with beta software." Fine, an error that tripped up many a developer back in September. Eventually Adobe released AIR 15, and packaged IPAs once again met Apple's submission requirements.

Unfortunately, updating to AIR 15 upset the applecart. We were now able to upload the IPA, but, ironically, it would not work on iOS devices. The loading screen (generated by the pure AS3 "wrapper" SWF) comes up, but then when the title screen (generated by the "core" SWF) should be appearing, there's nothing. Black screen, no activity, or alternatively (on some later attempts), instant, message-less app disappearance). No errors generated on the iOS console, nothing untoward happening when stepping through the app in FDB (right up until the app evaporates and FDB loses its connection to the remote host).

Other salient information:

I have tried updating literally every component involved in the process, assorted updates of AIR 15, and 16 beta. All of the listed haxelibs. We've even tried porting the "core" project (in the most cursory of manners) to OpenFL. All of these have resulted in versions that work on Windows (desktop, not phone), work on Android, but do not work on iOS.

Haxelib libraries: Original:

actuate: 1.6.4 [1.6.5]
air3: [0.0.1]
haxelib_client: [3.1.0-rc.3]
hxcpp: [3.0.2]
nme: [4.0.2]
openfl: [1.0.6]
openfl-tools: [1.0.10] 1.0.8
starling: [1.2.2]
swf: [1.0.2]

Extra tasty crashy:

actuate: 1.7.0 [1.7.5]
air3: [0.0.1]
haxelib_client: 3.1.0-rc.3 [3.1.0-rc.4]
hxcpp: 3.0.2 [3.1.39]
hxcs: [3.1.1]
lime: [2.0.0-alpha.4]
nme: [4.0.2] 5.1.8
openfl-compatibility: [1.0.1]
openfl-html5: [1.4.2-beta]
openfl-native: [1.4.0]
openfl-tools: [1.0.10]
openfl: 1.1.1 2.0.1 [2.1.2]
starling: [1.2.2]
swf: 1.0.2 [1.5.2]

tl;dr: Old version of AIR app works on iOS but can't be submitted to iTunes. New version can be submitted, but does not work on iOS (resulting in either a frozen black screen or a crash)

Any help whatsoever-- suggestions of what the problem might be, other ways we might be able to figure out the problem, or even ways to get the working app through the submission blockage (e.g. re-signing)-- would be greatly appreciated. Having to rework the entire game in some other framework, etc, is an extremely untenable solution at this time. This is basically a life or death situation for a very promising indie game dev company.

0

There are 0 best solutions below