Can't get our game working/submittable on iOS


#1

So, I’m working on 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. StackOverflow: [http://stackoverflow.com/questions/27916075/haxe-nme-game-failing-on-ios-devices-after-air-version-updated


#2

Question: Does everything appear normal in the preview image (when you double-press the home button)? If so, I might be seeing the same error as you.

Also, have you been able to reproduce the issue in a simpler app?


#3

Does it seem to matter if there’s a wrapper or not? It may be helpful to try doing a very simple proof-of-concept, and see if that appears – it’s easier to start from a point of things working (and then seeing what breaks it) than to try and do the reverse :confused: