在限制取消后,在ios上部署Adobe Air应用程序似乎有很多混乱之处。在苹果取消这些限制之前,你必须通过这里记录的流程:使用iPhone的Packager进行http://blogs.adobe.com/cantrell/archives/2010/09/packager-for-iphone-refresher.html。但现在限制已经解除,Air 2.7更新,我们可以在flex SDK中使用与所有air应用程序相同的ADT工具。
我的理解是,旧的iPhone打包器( Packager for actionscript )在某种程度上是如何将actionscript代码转换成原生的objective C的,以便被苹果接受。
如果这是正确的,那么取消的限制是否意味着ADT工具不会转换到objective C,而只是在创建.ipa应用程序文件时将AS3 .swf和air播放器捆绑在一起?
在苹果取消限制后,Air部署流程到底发生了什么变化?
如果有人能告诉我一些关于.ipa文件是如何在幕后创建的文档,我认为这真的可以澄清一些困惑。
谢谢你的帮助
发布于 2011-08-02 09:31:58
没有什么真正的改变;苹果刚刚解除了禁令。禁令不仅针对flash创建的应用程序,还针对创建任何类型的中间语言或使用虚拟机等的任何工具。PFI的作用:它实际上使用LLVM编译器将actionscript3字节码(而不是AS3源代码)静态编译成原生ARM汇编。所以从本质上讲,当你部署一个IPA的时候,它和发布SWF到一个exe (在发布设置中)是一样的,因为你的SWF应用程序和flash虚拟机捆绑在一起,不同的是,它不是一个exe,里面的代码是带有在虚拟机上执行的AS3字节码的x86 ASM,它是ARM。PFI及其所有类被简单地合并到ADT工具中。PFI包含一个LLVM,可以通过添加到ASC或actionscript编译器的内部adobe版本的各种LLVM类来访问它。然而,这些LLVM类和其他相关类不是开源的,这是允许adobe做到的,即使ASC是开源的,因为它是在MPL或mozilla公共许可证下获得许可的,这允许在专有的封闭源代码应用程序中使用开源代码,而无需共享您的更改。
为了证明我已经告诉你的一切,只需下载新的flex SDK,其中包括合并了PFI的ADT,您将找到LLVM等。此外,您可以反编译ADT jar并查看所有LLVM类。LLVM类(我相信)通过类GlobalOptimizer截取ASC字节码,或者至少在以前是这样做的……他们可能已经改变了这一点。唯一改变的是,显然Adobe已经对PFI (现在合并到ADT)进行了相当多的优化。更多信息请点击此处:
http://blogs.adobe.com/cantrell/archives/2010/09/packager-for-iphone-refresher.html
http://www.leebrimelow.com/?p=2754
更新
这是一篇Adobe官方文章,证实了我告诉你的事情:
http://www.adobe.com/devnet/logged_in/abansod_iphone.html。我还应该澄清的是,我真的过度简化了幕后的过程,在我看来,我的其中一个观点是错误的。我猜不知何故,PFI实际上将AS3字节码和VM合并到一个无缝的可执行文件中,该文件不使用JIT编译,因此从技术上讲不是虚拟机?在这一点上不确定,但上面的文章似乎暗示了这一点:
“当您为iOS构建应用程序时,最终的二进制文件中没有解释代码和运行时。您的应用程序是真正的本机iOS应用程序。”
https://stackoverflow.com/questions/6903202
复制相似问题