`

与Xcode相比Adobe AIR开发iOS的优势和局限

 
阅读更多

来自:http://www.zhihu.com/question/20001972/answer/15572624

 

AIR的优势

AIR的优势其实就是Flash或者ActionScript语言的优势。这些优势大家已经在互联网上看过许多了,我还是啰嗦一下:
1. 优秀的2D性能和渲染机制
网络上关于Flash性能底下的言论是绝对错误的。其实Flash的性能相当高,而且大多数情况下都比Javascript高。ActionScript经过如此长时间的专制发展,形成了一套易于使用的显示列表(DisplayObject)机制,加上灵活的MovieClip和Sprite等等对象,在制作2D动画方面,是目前互联网技术中最好的选择。即使是你认为显示列表的性能底下(在显示对象超过1K的情况下确实低下),你也完全可以使用BitmapData这个高性能的引擎做位图渲染。
2. 蓬勃发展的3D技术
Stage3D比OpenGL要更容易掌握。使用各种开源、付费的引擎,程序员可能不需要了解3D工作机制,就能制作3D动画(或者游戏)。当然,目前的Stage3D的驱动支持还有待完善,但Adobe目前很努力(不努力就挂掉了),驱动情况会慢慢解决掉。
更让人激动的是Starling这类使用Stage3D进行2D渲染的引擎。完全为游戏而生,把Flash的2D性能又提高了一个数量级。
3. 比较完善的框架和社区
Flash社区经过多年发展,已经非常完善,有很多的优秀的框架、工具、引擎、调试器、甚至编译器可以使用。当然,OC社区或许更完善,所以这个有优势并不明显。
4. 简单易用的语言
ActionScript是简化版的JAVA。我无法把ActionScript与OC对比,但ActionScript绝对比JAVA易用。相关比较可以看这个:zhihu.com/question
5. 使用ANE可以完成所有OC能做的事情
AIR使用的ANE插件技术,让你用OC开发一些本机插件,以API的方式来调用它,让你能完成AIR本不能完成的事情。后面我会提到,其实这个也算劣势。

AIR的劣势

1. 大文件
AIR在iOS上并非采用的是虚拟机模式。它直接把ActionScript代码编译成二进制代码,这与XCode变成成的二进制代码没有区别。整个AIR运行时也变成二进制代码。这就导致了无论是什么大小的程序,你总要在它的基础上加上运行时的大小。
准确的编译文件大小测试:

  • AIR3.5,AS项目,仅使用了graphics中的drawRect方法,3.8MB
  • AIR3.5,Flex4.6项目,没有放任何组件,5.8MB

2. 不是BUG的BUG
由于上面描述的原因,你要把ActionScript当作OC来用,否则可能会碰到某些不是BUG的BUG。我在这篇文章中就讲到了这样一个BUG:zengrong.net/post
3. 痛苦的调试
FlashBuilder并不是面向iOS开发的,所以它的调试过程复杂且痛苦。在FlashBuilder 4.6上,我必须利用iTunes这个垃圾软件把打包好的Debug版本的ipa文件安装到iOS设备上,然后在FlashBuider上启动调试进程。Debug版本的ipa运行十分缓慢(对,是十分),甚至因为它的缓慢,很多BUG都无法发生。
当然,这种情况在AIR 3.4出现之后有所好转。AIR 3.4不需要iTunes就能把ipa部署到iOS设备中进行调试。但是,目前的FlashBuilder4.6还不支持这种方式,你要使用AIR3.4的新的直接部署调试功能,就必须使用命令行,然后调用fdb来调试。
AIR 3.5支持在Release版本(非Debug版本)中输出调试堆栈,这能让我们用正常的速度来调试ipa,但这其实是让我们更麻烦了。
4. 痛苦的编译
你能忍受一次编译需要20分钟么?如果你的程序很复杂,那么这个时间还会延长。你能忍受在发布程序之前,突然发现一个小bug,然后等待20分钟编译调试么?注意,某些bug,只能在编译之后才会出现。
5.痛苦的ANE调试
和上面的调试不同,ANE的调试更加痛苦可不可捉摸。很多情况下,ANE的错误是直接FC,没有报错代码,没有消息,解决问题只能靠猜,你能猜中么?
更痛苦的是,大部分情况下,使用AIR的程序员都在Windows下工作,使用AIR自带的ADL在Windows系统上调试,这种调试方法是不支持ANE的,你要测试ANE,必须打包后在iOS真实设备上调试,这又碰到了上面说的“痛苦的调试”的情况。

不完善的小结
这种情况下可以使用AIR

  • 你要开发的东西是游戏(不要用AIR开发应用)
  • 有一个Flash游戏需要移植到iOS上(移植)
  • 开发一个新游戏,只有1个月时间(快速开发)
  • 只会ActionScript和Flash(技术限制)
  • 跨平台优先级高于一切(跨平台)

关于Flex
Flex SDK包含swf编译器、swf相关工具、MXML语言和一套名为Flex的框架,这套框架大部分是做界面的事情。但即使是Adobe说他们的Flex中包含的UI组件为移动设备做了多少优化,也千万不要用它来开发移动设备上的程序,否则你会痛苦一被子。

Flex/Flex SDK/AIR的关系,可看这篇文章:zengrong.net/post

分享到:
评论

相关推荐

    flash as3 Air for ios 应用内支付 IPA ANE

    在移动应用开发领域,Flash AS3 Air for iOS的内购功能是开发者常用的一种技术,用于在应用程序内部提供付费服务或商品。这篇教程将深入探讨如何实现这一功能,并结合ANE(Adobe Native Extensions)来构建IPA(iOS...

    Flash 免证书 开发 iOS app

    在IT行业中,开发iOS应用程序通常需要使用Apple的官方开发工具,如Xcode,并且需要注册成为Apple Developer Program的成员,获取对应的开发证书来签署代码,确保应用能够在iOS设备上运行。然而,标题“Flash免证书...

    IOS-安卓内购 for air

    本教程主要聚焦于如何在Adobe Air框架下实现跨平台的iOS和Android内购功能。Adobe Air允许开发者使用Flash技术创建原生的移动应用程序,它支持多种操作系统,包括iOS和Android。 一、iOS内购 1. **配置App Store ...

    ane在xcode上面的模板

    ANE,全称Adobe Native Extension,是Adobe Flash Platform的一部分,它允许开发者使用ActionScript与原生移动平台(如iOS和Android)进行交互,扩展Flash Player或Air的功能。在Xcode上创建ANE项目时,通常需要一个...

    flash cs5 免证书 开发 iOS app

    标题中的“Flash CS5 免证书开发 iOS app”指的是使用Adobe Flash Professional CS5这个软件工具,结合特定的技术和方法,来开发iOS应用程序,而无需购买和使用Apple的官方开发者证书。这一过程通常是为了规避苹果对...

    DBZ.zip_ios flash_ios game

    描述提到“develop IOS game with flash”,意味着游戏的开发是通过Adobe Flash平台进行的,利用ActionScript(Flash的主要编程语言)以及与JavaScript的交互来实现与iOS设备的兼容性。 在iOS平台上使用Flash进行...

    Developing iOS Applications with Flex 4.5.pdf

    3. **iOS开发环境**:要将Flex应用部署到iOS设备上,开发者需要安装Apple的Xcode IDE和Adobe AIR SDK。AIR为Flex应用提供了跨平台运行时环境,使得应用能在iOS操作系统上运行。 4. **Adobe AIR for iOS**:Adobe ...

    ADOBE FLEX 和 ADOBE FLASH BUILDER 开发手机应用程序

    - **连接 iOS 设备**:同样地,通过 USB 连接 iOS 设备,并确保安装了 Xcode 和 Apple 的移动设备软件开发工具包 (SDK)。 #### 2. 用户界面和布局 **手机应用程序的布局** 在移动应用中,布局设计需要特别注意...

    Flash Mobile Developing Android and iOS Applications

    这包括安装 Adobe Animate(前身为 Flash Professional)、Adobe AIR SDK、以及 Android 和 iOS 的开发工具(如 Android Studio 和 Xcode)。 2. **基础概念**:理解 Flash 中的关键概念对于高效开发至关重要。...

    FlashDevelop打包IOS应用教程

    3. **Adobe AIR**:Adobe AIR(Adobe Integrated Runtime)允许开发者使用Flash技术创建跨平台的应用程序,包括在iOS设备上运行的APP。AIR提供了iOS SDK,使得Flash内容能在iOS设备上运行。 4. **iOS SDK集成**:...

    ANE-HapticFeedback:适用于iOS的触觉反馈API的Adobe AIR本机扩展

    ANE触觉反馈适用于iOS的触觉反馈API的Adobe AIR本机扩展。先决条件在使用AIR 24或更早版本的iOS打包应用程序时,需要使用adt的-platformsdk选项或通过IDE的相应UI指向带有iOS 10 SDK(在Xcode 8中可用)的目录: -...

    测试flash上IOS的效率

    总之,测试Flash在iOS上的效率是一个涉及多方面知识的过程,包括AS3编程、Adobe AIR框架、iOS平台特性、性能优化技巧以及使用相应的调试和分析工具。通过这样的实践,开发者可以创造出既能在iOS设备上良好运行,又...

    ANE中用到的Xcode模板修改版

    标题中的“ANE中用到的Xcode模板修改版”指的是在使用Adobe Native Extension(ANE)进行iOS开发时,对Xcode工程模板的定制化修改。ANE是Adobe Flex和Air平台提供的一种方式,允许开发者使用原生的iOS或Android代码来...

    as3移动开发教程

    在移动开发领域,AS3配合Adobe AIR(Adobe Integrated Runtime)可以构建跨平台的应用程序,支持iOS和Android系统,发布为IPA(iOS应用程序)和APK(Android应用程序)。 本教程将深入探讨AS3移动开发的基础与进阶...

    Packtpub.Flash.iOS.Apps.Cookbook.Feb.2012

    1. **环境配置**:设置开发环境,包括安装Adobe Flash Professional、Adobe AIR SDK以及Xcode等必要的工具,以便在iOS设备上部署和测试应用程序。 2. **ActionScript基础**:复习ActionScript的基础知识,如变量、...

    ane打包规范及开发技巧

    ANE(Adobe Native Extensions)是Adobe AIR为扩展Flash和ActionScript的功能而引入的一种技术。它允许开发者使用本地代码(如Java、Objective-C或C++)创建功能丰富的桌面和移动应用程序。在"ANE打包规范及开发技巧...

    Flash Builder iOS设备的应用程序进行打包

    Flash Builder是Adobe推出的一款用于开发富互联网应用(Rich Internet Applications, RIA)的集成开发环境(IDE),支持使用Flex和ActionScript编程语言开发跨平台应用。4.5版本的Flash Builder为开发者提供了打包应用...

    iPhone Developer Program

    对于希望将Flash内容移植到iOS设备的开发者来说,Flash CS5引入了一个特别的功能——Adobe AIR for iOS,允许开发者使用Flash工具直接创建原生iOS应用程序。然而,需要注意的是,自iOS 14更新以来,Apple不再支持...

    友盟统计ANE,android and ios

    友盟统计ANE是针对Android和iOS应用开发的一款统计分析工具,它通过Air Native Extension(ANE)的方式,使得开发者能够方便地在跨平台的应用程序中集成友盟的统计服务。友盟是中国领先的移动互联网开放服务平台,提供...

Global site tag (gtag.js) - Google Analytics