我们的团队一直在努力工作2周(工作和个人),以及有关Ios部署和Adobe Air的以下问题。以下是我们的问题应用程序的详细信息。如果有人可以帮助我们调试此任务,我们非常感谢。
该团队使用IntelliJ / Flashbuilder设置airsdk 17,以下描述也影响AirSdk19和Beta Build AirSDK20。我们正在尝试在IOS上编译一个Adobe Air项目,但是当使用Apple规定的AOT编译器编译应用程序时会遇到很多麻烦(我们的Android应用程序使用JIT编译器运行得很好)。
在我讨论我们的问题之前,我想讨论我们正在开发的应用程序,以及在帮助会话中可能有帮助或可能没有帮助的任何规范。
应用程序的工作原理: 我们的应用程序设置的方式是我们在他们自己的swf中有一系列活动,以及其中的主要应用程序自己的Swf。活动分为两类:解释活动和挑战活动。所有challange活动都继承自ItemActivity类,同时所有说明活动都继承自ItemActivityVideo类,而ItemActivityVideo类继承自ItemActivity。
我们的活动继承结构如下:
说明活动:
Main(每个活动的具体内容)< - ItemActivityVideo< - ItemActivity
挑战活动:
Main(每项活动专用)< - ItemActivity。
主要的Swf有一系列的屏幕,其中一个是" ItemSelect"屏幕显示一个按钮网,每个按钮指示应用程序加载一个外部活动swfs。所有swf都在主swf旁边本地托管,因此在项目加载时没有网络呼叫。解释活动是唯一利用声音的活动,它位于"语音控制器" class,每当引用这个类时(只需通过诸如" new VoiceController()之类的指令),Ios App崩溃,某些项目在时间线的各个部分崩溃,而没有任何关于为什么的指示来自Flash调试器或崩溃日志。调试器只是打印"播放器会话已退出"同时,崩溃日志会产生一个段错误信号" SigSegV",而没有任何关于导致内存滥用的指示。
帮助我们的团队调试此问题的任何帮助都会对我们有很大帮助,我们在使用dsymutils对崩溃日志进行符号化方面存在问题,因为当前的Apple架构与Adobes&#39之间发生了巨大变化;日期文件。
以下是我们App的崩溃日志的一部分:
Incident Identifier: FC5E0968-20E5-4A52-BF7E-38FCBA425D00
CrashReporter Key: ----------------------------------------------
Hardware Model: iPad2,5
Process: myApp [1848]
Path: /private/var/mobile/Containers/Bundle/Application/30740408-6AAD-447E-8ED3-0ECAEF7A7B0A/myApp.app/myApp
Identifier: myApp
Version: 0.4.0 (0.4.0)
Code Type: ARM (Native)
Parent Process: launchd [1]
Date/Time: 2015-12-04 13:29:38.38 -0500
Launch Time: 2015-12-04 13:29:22.22 -0500
OS Version: iOS 9.1 (13B143)
Report Version: 104
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x00000083
Triggered by Thread: 0
Filtered syslog:
None found
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 myApp 0x0248debe 0x74000 + 37854910
1 myApp 0x00797598 0x74000 + 7484824
2 myApp 0x00797598 0x74000 + 7484824
3 myApp 0x00794b7c 0x74000 + 7474044
4 myApp 0x007b6794 0x74000 + 7612308
5 myApp 0x0247aab8 0x74000 + 37776056
6 myApp 0x0248f926 0x74000 + 37861670
7 myApp 0x024506b6 0x74000 + 37602998
8 myApp 0x02450648 0x74000 + 37602888
9 myApp 0x021fb188 0x74000 + 35156360
10 myApp 0x0225027c 0x74000 + 35504764
11 myApp 0x01facb90 0x74000 + 32738192
12 myApp 0x01fb2650 0x74000 + 32761424
13 myApp 0x0010b80c 0x74000 + 620556
14 myApp 0x007b74d0 0x74000 + 7615696
15 myApp 0x007eda9c 0x74000 + 7838364
16 myApp 0x0247aab8 0x74000 + 37776056
17 myApp 0x0248f926 0x74000 + 37861670
18 myApp 0x024506b6 0x74000 + 37602998
19 myApp 0x02450648 0x74000 + 37602888
20 myApp 0x021fb188 0x74000 + 35156360
21 myApp 0x021fbd08 0x74000 + 35159304
22 myApp 0x021fba9c 0x74000 + 35158684
23 myApp 0x021fb614 0x74000 + 35157524
24 myApp 0x021bd364 0x74000 + 34902884
25 myApp 0x00237d18 0x74000 + 1850648
26 myApp 0x00237dec 0x74000 + 1850860
27 myApp 0x0247aab8 0x74000 + 37776056
28 myApp 0x0248f926 0x74000 + 37861670
29 myApp 0x0219b9fc 0x74000 + 34765308
30 myApp 0x0219c198 0x74000 + 34767256
31 myApp 0x021f8bf8 0x74000 + 35146744
32 myApp 0x0208b79c 0x74000 + 33650588
33 myApp 0x0208c2f4 0x74000 + 33653492
34 myApp 0x01fc0a9c 0x74000 + 32819868
35 QuartzCore 0x2999b7f2 0x29941000 + 370674
36 QuartzCore 0x2999b63e 0x29941000 + 370238
37 IOMobileFramebuffer 0x2f87957a 0x2f874000 + 21882
38 IOKit 0x270524d8 0x2704e000 + 17624
39 CoreFoundation 0x25f48058 0x25ea2000 + 680024
40 CoreFoundation 0x25f5a3b2 0x25ea2000 + 754610
41 CoreFoundation 0x25f59ac6 0x25ea2000 + 752326
42 CoreFoundation 0x25f57ed8 0x25ea2000 + 745176
43 CoreFoundation 0x25eab118 0x25ea2000 + 37144
44 CoreFoundation 0x25eaaf04 0x25ea2000 + 36612
45 GraphicsServices 0x2f035ac8 0x2f02c000 + 39624
46 UIKit 0x2a0edf14 0x2a072000 + 507668
47 myApp 0x020b6e40 0x74000 + 33828416
48 libdyld.dylib 0x3819d872 0x3819b000 + 10354
答案 0 :(得分:0)
任何事情都可能导致您的Ios应用程序崩溃而不会导致Android版本崩溃,例如:文件名。您可以加载一个名为“test.mp3”的声音,并在文件系统“Test.mp3”中真正调用它,它将在调试中工作,在Android中工作,甚至在Ios中播放几次然后崩溃应用程序。 Ios中的所有文件名都应该是小写的,不包含花哨的字符。一般来说,调试AIR中的Ios应用程序实际上只是追踪,没有真正简单的方法将DYSM转换为AS3中的任何有意义的跟踪,跟踪,跟踪。 我使用扩展的Sprite类在每个项目中工作,该类可以在一次调用中删除所有已注册的侦听器。非常方便,但第一个版本在Ios中随机崩溃。我把痕迹全部放在最后,最后发现我的最后一条痕迹就在'removeListeners()'调用之前。所以我注释掉了方法代码而没有崩溃。然后我重新设计了系统,使其更加稳固,一切都运行良好,没有在Ios中发生任何崩溃。
总结一下:
在Ios中,如果在外部加载任何内容时要密切关注文件名,它们应该是小写的,不包含花哨的字符,否则......请注意崩溃!
要调试并真正知道发生了什么,只有跟踪,在任何地方放置跟踪并注意最后一个,错误的代码将在之后。我确实有一个系统可以将所有跟踪实时输出到服务器,所以即使在testflight安装中也能捕获它们。把类似的东西放在一起。