Adobe AIR 和 iPhone - 它是如何工作的?

Posted

技术标签:

【中文标题】Adobe AIR 和 iPhone - 它是如何工作的?【英文标题】:Adobe AIR and iPhone - how it works? 【发布时间】:2012-04-11 18:28:12 【问题描述】:

有人知道 Adob​​e AIR 应用程序是如何转换为 iPhone 应用程序的吗?我看到了两种方法 - Adob​​e AIR 虚拟机必须成为每个应用程序的一部分,或者他们必须以某种方式将所有 ActionScript 调用转换为 Cocoa Touch 调用,或者为每个 ActionScript 类提供一个 Objective-C 孪生,然后将其编译为 ARM 汇编程序。

我只是好奇它在技术上是如何完成的。

BR 钢

【问题讨论】:

【参考方案1】:

与其他平台不同,当您构建 ios 应用程序时,Adobe Air 会被编译为本机代码。

这是来自 Adob​​e 的 blog post 的一部分:

我们创建了一个新的编译器前端,让 LLVM 能够理解 ActionScript 3,并使用其现有的 ARM 后端输出本机 ARM 汇编代码。我们将此称为 Ahead of Time (AOT) 编译,与 Adob​​e Flash Player 和 Adob​​e AIR 在桌面上使用 Just in Time (JIT) 编译的方式形成对比。由于我们能够提前将 ActionScript 编译到 ARM,因此该应用程序可以获得 JIT 将提供的所有性能优势以及最终应用程序中不需要运行时的许可合规性。

这意味着:

    Air 运行时未打包在应用程序中。

    AS3 代码不转换成 Objective-C 代码,而是直接编译成原生汇编代码。

【讨论】:

嗨,请参阅 Adrian Pirvulescu 的帖子 - 我们建议应用程序有一个运行时部分,与您所说的完全相反“:) @STeN - 不幸的是,由于 Apple 的限制,iOS 并非如此。这不是我说的 :) 它是 Adob​​e:“在最终应用程序中不需要运行时” 这是否意味着我将在 Adob​​e AIR 中使用的 UI 组件在某些将添加到我的应用程序中的 Adob​​e Objective-C 库中具有它们的“镜像”?我认为他们不能使用 Cocoa Touch iOS UI 组件。 @STeN 不,事实并非如此。您的应用程序最终拥有的 UI 组件只不过是生成位图的调用。这些调用将被转换为原生 iOS 调用,但“位图”将是相同的。【参考方案2】:

取自 adobe 网站:http://www.adobe.com/devnet/air/articles/air3-install-and-deployment-options.edu.html

请注意,当使用 AIR 以 iOS 为目标时,强制运行时是唯一可用的选项。由于 iOS 不支持共享运行时模型,因此捕获模型仍然是该平台上的唯一选择。

任何使用强制运行时的人都应该知道它有两个缺点:

增加了应用程序的大小。由于运行时的完整副本包含在您的应用程序中,因此应用程序包的大小必然会增加。

增加了安全负担。

【讨论】:

以上是关于Adobe AIR 和 iPhone - 它是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

Adobe AIR 3.0自带运行时兼容什么版本的Android和iOS?

Adobe AIR 和不同的操作系统文件系统

worklight 5上的adobe air和vista如何使用校验和

Adobe Air 应用程序在 iOS 上启动屏幕后自动崩溃

如何在Adobe Air上运行现有的SWF文件

如何在 adobe air 中显示计费权限?