3

据我了解,Apple 已禁止在 iPhone 上使用 Flash 运行时,因为 Apple 不想要 Apple 通过自己的工具提供的运行时环境的替代运行环境。根据 Apple 的说法,允许 Flash 运行时将允许开发人员绕过 Apple 实施的应用程序更新策略和其他控制措施。而此时,Adobe 还没有选择构建工具来静态编译在 Flash 中创建的应用程序。

我进一步的理解是,通过 MonoTouch 创建的 .NET 应用程序是静态预编译的,并作为本机代码在 iPhone 上运行,而不是在 .NET 公共语言运行时 (CLR) 中运行,Apple 肯定会不允许这样做。由于 .NET 代码不是在 Microsoft 的运行时中执行,而是在 iPhone CPU 上本地执行,因此 Apple 没有抱怨。

我的问题是:

  1. 我对为什么 Apple 允许在 iPhone 上使用 .NET 开发的应用程序是否正确?

  2. 一个供应商在 iPhone(或我想的任何平台)上的预编译本机代码是否与其他供应商有区别?换句话说,MonoTouch 生成的本机代码与编译的 Objective C 代码生成的本机代码没有区别吗?本机代码的来源完全不透明吗?

4

6 回答 6

19

正如您刚才所说,Apple 并没有“允许”.NET 在 iPhone 上运行——无论应用程序是用 MonoTouch 开发的,还是用 Cocoa 或 COBOL 编写的,或者其他无关紧要的;它只重要它被编译成什么。它可以用 JavaScript 编写,这并不重要。

如果我用英文写了一些东西然后翻译成法文,法国读者能说原来的版本是用英文写的吗?也许,也许不是,这完全取决于翻译的特点,而不是读者。Apple 所要求的只是你给他们的版本是用法语写的。到那时,它没有任何区别。

对此的一个逻辑扩展是,理论上,您可以为 Flash 文件编写一个编译器,以创建自包含的 iPhone 二进制文件。如果在 Flash 中开发对您来说很重要。(这可能已经完成,也可能尚未 完成。这已经完成了。

于 2010-01-30T23:32:07.877 回答
4

MonoTouch 所做的只是将 Mono 代码转译为目标 C 并将其编译为本机代码,因此一旦编译它就可以“运行”,尽管使用 Mono。它实际上是单声道代码的包装器,它被转换为目标 C 本机代码和运行时库的等价物。

它们本身并不是真正的 .NET 运行时代码。所以根本没有真正可区分的区别!一旦它被编译为本机代码,就是这样。

于 2010-01-30T23:43:57.403 回答
1

Apple 并不关心在 iPhone 上运行的 VM。它关心的是允许外部的、非应用商店的代码在 iPhone 上运行。

这就是为什么 Apple 不会关心 Adob​​e 提出的用于制作独立 Flash 应用程序的“Flash 编译器”。这就是 Apple 不关心已编译的 .NET 项目的原因。

回想一下 C64 模拟器的问题。Apple 只关心它捆绑了内部 BASIC,但模拟器是 VM 的完美示例。该 VM 执行的所有 C64 代码都是 6502 机器代码。但是模拟器缺乏从网络下载任意代码并执行它的能力。

这就是苹果所关心的。

于 2010-01-30T23:39:03.463 回答
0

似乎很快你就可以直接从 Flash 制作原生 iPhone 应用程序了。

http://labs.adobe.com/technologies/flashcs5/appsfor_iphone/

了解这些应用程序的性能会很有趣,但对于一般媒体/营销/商业领域,我认为这正是很多应用程序的发展方向。

于 2010-03-10T11:30:13.743 回答
0

1 - 你是非常正确的。我不会说苹果在平台上“允许”MonoTouch 应用程序,他们只是没有公开发表任何言论,而且应用商店中已经有一些 MonoTouch 应用程序。并不意味着他们明天不会开始阻止他们。

2 - 我对 Mono Touch 的内部了解不多,但我想 MT 应用程序一定有一些共同特征(它扩大二进制大小的方式,那里一定有一些共性)Apple 可以用来挑出它们。当然,这可能需要付出难以置信的巨大努力而收效甚微,而且他们可能更愿意花时间将 3.2 及更高版本推出市场。

我认为您对用于开发本机应用程序的工具与 Apple 希望在 Safari 中支持的浏览器插件类型之间的差异感到困惑。完全不同的概念。我认为您应该阅读John Gruber 最近的文章,了解为什么 Flash 可能永远不会出现在 iPhone 或 iPad 上的一个非常全面的理论。

于 2010-01-31T04:38:16.027 回答
0

看看这里,苹果

为各种操作系统/设备开发 Flash 的是 Adob​​e,而不是 Apple。Adobe 一直无法为 iOS 设备开发出令人满意的 Flash。

http://www.apple.com/hotnews/thoughts-on-flash/

于 2013-09-26T07:07:33.633 回答