Flex 4.6 ADT 工具编译异常

最近在编译flex 程序为ipa 的时候,出现以下的异常:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 24

        at adobe.abc.GlobalOptimizer$InputAbc.readCode(GlobalOptimizer.java:1391
)
        at adobe.abc.GlobalOptimizer$InputAbc.readBody(GlobalOptimizer.java:682)

        at adobe.abc.GlobalOptimizer$InputAbc.readBodies(GlobalOptimizer.java:40
3)
        at adobe.abc.LLVMEmitter.generateBitcode(LLVMEmitter.java:331)
        at com.adobe.air.ipa.AOTCompiler.convertAbcToLlvmBitcodeImpl(AOTCompiler
.java:512)
        at com.adobe.air.ipa.BitcodeGenerator.main(BitcodeGenerator.java:80)
Compilation failed while executing : ADT

这个是用adt 命令行编译为ipa 时出现的异常,但是在模拟器里不会出现,运行都是ok。最后没有办法,我从svn 库里导出一个以前的版本,发现时可以编译的。所以我只能这样去定位问题所在。
有可能出错的地方:
1, 强制类型转换
出错的代码:

     var configString:String = ;
                    var configCount:int = int(

ModelLocator.getInstance().systemConfig.rcuNumber
);
ModelLocator.getInstance().systemConfig 这个是一个全单例类的对象,类型为object。
真确的代码:

     var configString:String = ModelLocator.getInstance().systemConfig.rcuNumber;
                    var configCount:int = int(configString);
2, 类的XML 变量的初始化:
错误的代码:
private var currentSelectItem:XML;
正确的代码:
private var currentSelectItem:XML = new XML();
3 ,还有一些就是, 在Flash builder 里边出现告警的地方,我都该改了过来。
4, Eembed 的慎用, 因为网上有人提出来过。有可能是这个原因。
[Embed(source="assets/gpsA.png")]
               private var m_gpsA:Class;
               [Embed(source="assets/gpsB.png")]
               private var m_gpsB:Class;
所以,我把不使用的这些全部给删掉了。

5, 实在没有办法:, 编译成为 ipa-test-interpreter ,这样是可以编译为ipa,这样就可以在ipad 上运行程序。 什么地方有错误的话,就在那里写日志。

找到问题所在。

最后
com.adobe.air.ipa.BitcodeGenerator.java 这个类没有源代码,也没有办法调试,所以没有确切的定位 问题所在。
希望牛人解决。
原文地址:https://www.cnblogs.com/csharponworking/p/2658679.html