Adobe Air ios 打包器 [英] Adobe Air ios packager

查看:47
本文介绍了Adobe Air ios 打包器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在限制解除后,关于将 Adob​​e Air 应用程序部署到 ios 似乎有很多困惑.在苹果取消限制之前,您必须完成此处记录的流程:http://blogs.adobe.com/cantrell/archives/2010/09/packager-for-iphone-refresher.html 使用 iPhone 的 Packager.但是现在限制已经解除并且 Air 2.7 更新了,我们可以在 flex SDK 中使用与所有空中应用程序相同的 ADT 工具.

我的理解是旧的 iPhone 打包程序 (PFI) 是如何将 actionscript 代码转换为原生目标 C 以便被苹果接受的.

如果这是正确的,解除限制是否意味着 ADT 工具不会转换为目标 C,而只是在创建 .ipa 应用程序文件时将 AS3 .swf 和空中播放器捆绑在一起?

苹果解除限制后,Air部署过程究竟发生了什么变化?

如果有人能指点我一些关于如何在幕后创建 .ipa 文件的文档,我认为这会真正消除一些混乱.

感谢您的帮助

解决方案

没有真正改变;苹果刚刚解除禁令.禁令不仅针对闪存创建的应用程序,还针对任何创建任何类型的中间语言或使用虚拟机等的工具. PFI 的作用:它实际上使用 LLVM 编译器来静态编译动作脚本 3 BYTECODE (不是 AS3 源代码)转换为原生 ARM 程序集.所以本质上,当您部署 IPA 时,它与将 SWF 发布到 exe 的想法相同(如在发布设置中),因为您的 SWF 应用程序和 Flash 虚拟机都捆绑在一起,除了不是一个 exe里面的代码是 x86 ASM 和沿 VM 执行的 AS3 字节码,它是 ARM.PFI 及其所有类都简单地合并到 ADT 工具中.PFI 包含一个 LLVM dll,可通过添加到 ASC 或 actionscript 编译器的内部 adobe 版本的各种 LLVM java 类访问该 dll.然而,这些 LLVM 类和其他相关类不是开源的,adobe 允许这样做,即使 ASC 是开源的,因为它是根据 MPL 或 mozilla 公共许可证获得许可的,允许在专有的闭源应用程序,无需共享您的更改.

为了证明我告诉过你的一切,只需下载包含 ADT 的新 flex SDK 并合并了 PFI,你就会找到 LLVM dll 等.此外,你可以反编译 ADT jar 并查看所有内容LLVM 类.LLVM 类(我相信)通过类 GlobalOptimizer 拦截 ASC 字节码,或者至少在当天确实如此......他们可能已经改变了这一点.唯一发生变化的另一件事是 Adob​​e 显然对 PFI(现已合并到 ADT)进行了大量优化.更多信息在这里:

http://blogs.adobe.com/cantrell/archives/2010/09/packager-for-iphone-refresher.html

http://www.leebrimelow.com/?p=2754

更新

这是一篇 Adob​​e 官方文章,证实了我告诉你的事情:

http://www.adobe.com/devnet/logged_in/abansod_iphone.html.我还应该澄清一下,我真的过度简化了幕后的过程,在我看来,我的观点之一是错误的.我猜想不知何故 PFI 实际上将 AS3 字节码和 VM 合并到一个不使用 JIT 编译的无缝可执行文件中,因此从技术上讲不会是虚拟机?在这一点上不确定,但上面的文章似乎暗示了这一点:

当您为 iOS 构建应用程序时,最终二进制文件中没有解释代码和运行时.您的应用程序是真正的原生 iOS 应用程序."

There seems to be a lot of confusion regarding deploying Adobe Air apps to ios after the restrictions were lifted. Before apple lifted the restrictions you had to go through the process documented here: http://blogs.adobe.com/cantrell/archives/2010/09/packager-for-iphone-refresher.html using the Packager for iPhone. But now that the restrictions have been lifted and the Air 2.7 update we can use the same ADT tool in the flex SDK that we use with all air applications.

My understanding is that the old Packager for iPhone (PFI) some how converted actionscript code into native objective C in order to be accepted by apple.

If that is correct does the restrictions being lifted mean that the ADT tool is not converting to objective C and is only bundling the AS3 .swf and air player together when creating the .ipa app file?

What exactly changed in the Air deployment process after apple lifted its restrictions?

If anyone could point me to some documentation on how the .ipa file is being created behind the scenes I think this would really clear some confusion.

Thanks for the help

解决方案

Nothing really changed; apple just lifted the ban. The ban wasn't just on flash-created apps, it was on any tool that created any kind of intermediary language or used a virtual machine, etc. What the PFI does: it actually uses the LLVM compiler to statically compile actionscript 3 BYTECODE (not AS3 source) into native ARM assembly. So essentially when you're deploying an IPA it's the same idea as publishing a SWF to an exe (as in the publish settings) in the sense that both your SWF application and the flash virtual machine are bundled together, except instead of being an exe where the code inside is x86 ASM with AS3 bytecode executed along the VM, it's ARM. The PFI and all its classes were simply merged into the ADT tool. The PFI contained a LLVM dll which is accessed through various LLVM java classes that were added to the internal adobe version of the ASC or actionscript compiler. These LLVM classes and other associated classes, however, are not open source, which adobe is allowed to do, even though the ASC is open source because it's licensed under the MPL or mozilla public license, which permits the use of the open source code in proprietary closed source applications without sharing your changes.

For proof of all that I've told you, just download the new flex SDK that includes the ADT with the PFI merged in and you'll find the LLVM dll's etc. Further, you can decompile the ADT jar and see all the LLVM classes. The LLVM classes ( I believe ) intercept the ASC bytecode through the class GlobalOptimizer, or at least it did back in the day... they've probably changed that. The only other thing that has changed is that apparently Adobe has optimized the PFI (now merged into ADT) quite a lot. More info here:

http://blogs.adobe.com/cantrell/archives/2010/09/packager-for-iphone-refresher.html

http://www.leebrimelow.com/?p=2754

Update

Here is an official Adobe article confirming the things I've told you:

http://www.adobe.com/devnet/logged_in/abansod_iphone.html. I also should clarify that I've really over-simplified the process behind the scenes and appear to me mistaken in one of my points. I guess somehow the PFI actually merges the AS3 bytecode and the VM into a single seamless executable that doesn't use JIT compilation, and thus would technically not be a virtual machine? Not sure on that point, but the above article does seem to imply this:

"When you build your application for iOS, there is no interpreted code and no runtime in your final binary. Your application is truly a native iOS app."

这篇关于Adobe Air ios 打包器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆