So, I inherited a game project with the following setting:
- The main SWF of the game itself, written in Haxe (3.0) / NME (4.0.2), using the Starling platform, compiled into a Flash target using FlashDevelop
- An AS3 wrapper that deals with the various communication needs of a device (for example, detecting device capabilities, managing phone lock status and pausing music / muting music, etc.). This is compiled into a native SWF (AIR 3.6), which actually launches and then loads the “main” SWF and adds it to the stage.
- This ASF SWF is subsequently packaged in target formats (APK / IPA) using ADT (also AIR 3.6) along with its assets (including the main SWF).
Despite the odd complexity, it all worked perfectly; we created functional, usable applications that: a) worked on both Android and iOS devices, and b) passed the sending criteria.
Fast forward a few months; the game is now in beta and ready for initial release. Android, everything is going well. iOS, on the other hand ... A few days before we tried to download 1.0 into iTunes Connect, Apple changed its requirements. Suddenly, we received the error message “Applications and application updates presented on the App Store must be built with public (GM) versions of Xcode 5.1.1 or later and iOS 7 SDK or later. Do not send applications created using beta . " Great, a mistake that many developers reappeared in September. Adobe eventually released AIR 15, and packaged IPAs once again met Apple's filing requirements.
Unfortunately, upgrading to AIR 15 is frustrating to applecart. Now we were able to download the IPA, but, paradoxically, it would not work on iOS devices. The boot screen (generated by the clean SWF ASF wrapper) appears, but when the title screen (generated by the "main" SWF) appears, nothing appears. The black screen, no action, or, alternatively (for some subsequent attempts), instantly disappear applications without Messages: There are no errors on the iOS console, nothing happens when you go through the application in FDB (until the application disappears, and FDB loses its connection to the remote host).
Other important information:
I tried to update literally every component involved in the process, various updates to AIR 15 and 16 beta. All listed haxelibs. We even tried porting the "main" project (in the most fluent manners) to OpenFL. All this led to the fact that versions running 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 delicious 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: The old version of the AIR application runs on iOS but cannot be sent to iTunes. A new version can be sent, but does not work on iOS (as a result of which either a frozen black screen or an accident)
Any help — suggestions on what might be the problem, other ways we could figure out the problem, or even ways to get a working application through a feed lock (for example, re-signing) would be greatly appreciated. The need to remake the whole game in some other frameworks, etc. It is an extremely untenable decision at the present time. This is basically a life situation or a fatal situation for a very promising company indie game dev.