来自: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易用。相关比较可以看这个:http://www.zhihu.com/question/19762068/answer/15544195
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:http://zengrong.net/post/1654.htm
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的关系,可看这篇文章:http://zengrong.net/post/1295.htm

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

  1. 与Xcode比照Adobe AIR开发iOS的优势和局限

    AIR的优势 AIR的优势其实就是Flash或者ActionScript语言的优势.这些优势大家已经在互联网上看过许多了,我还是啰嗦一下: 1. 优秀的2D性能和渲染机制 网络上关于Flash性能底下 ...

  2. 分享用Adobe Air向iOS移植游戏的经验

    分享用Adobe Air向iOS移植游戏的经验 http://gamerboom.com/archives/47931 发布时间:2012-02-21 17:04:42 Tags:Adobe Air, ...

  3. AIR开发ios游戏总结

    1,尽量使用位图,如果是纯色块的话,可以用矢量. 2,资源和素材最好用外部加载的方式,特别是皮肤,这样可以动态的更新皮肤 3,遮罩的效率不高,如果非要用的话,最好把里面的图片先加载好.因为在移动设备里 ...

  4. 抛开xcode:怎么使用AppCode开发ios

    Appcode破解版 可以随意升级到最新版都没有问题的 我的网盘连接 链接: http://pan.baidu.com/s/1sj8wmNr 密码: rwhe AppCode 是一个全新的 Objec ...

  5. AIR for IOS开发问题小结

    昨天终于成功地向APP STORE提交了应用,个人感觉用AIR做IOS开发就是个坑啊.出了问题之后,问苹果的技术支持,人家说"对于非XCODE环境下开发及发布所造成的问题我们在资料库中无法找 ...

  6. 开发Adobe AIR的原生扩展

    要求 必备知识 对AIR和ActionScript 3具有中等或深入的理解,熟悉Flash Builder和Java. 用户级别 中级 必需产品 Adobe AIR 3 范例文件 ane-hello- ...

  7. 开发Adobe AIR移动应用程序的考虑事项

    来自:http://www.infoq.com/cn/news/2011/08/considerations-air-apps-mobile 扩展:http://mobile.51cto.com/Ad ...

  8. android移动应用开发 基于adobe air 下载,基于Adobe AIR的下一代移动应用开发

    摘要:本文通过与传统的Web应用程序的比较,深入地阐述Adobe AIR的特点及优势,详细介绍了实现Adobe AIR应用的Flex Builder 4.5在改善.增强用户体验方面的技术支持及程序开发 ...

  9. Developing native extensions for Adobe AIR

    原文:http://www.adobe.com/devnet/air/articles/developing-native-extensions-air.html 以下为摘译 Note: Adobe ...

最新文章

  1. Java学习总结:19
  2. 新疆弃光量下降14% 弃光问题仍然难解
  3. LeetCode: 13. Roman to Integer
  4. linux 运行多个docker,Docker 中如何连接多个 Container 协同工作
  5. 关闭或启动linux防火墙后,docker启动容器报错
  6. LeetCode之Relative Ranks
  7. java持续集成soapui_接口自动化测试持续集成--Soapui接口功能测试参数化
  8. Mobius反演定理-BZOJ2154
  9. java修炼手册下载_Java修炼手册
  10. PS2015下载PSCC2015安装教程
  11. Oracle 临时表空间 SQL语句
  12. web个人学习笔记(待完善)
  13. 旗舰手机的拍照芯片(上)
  14. YDOOK: Putty 下载安装详细教程 可用 已解决
  15. 等保测评--管理制度安全测评
  16. java压缩解压缩rar、zip文件
  17. Java知识整理(Netty/索引/锁/JMM)-增强篇
  18. 第 1 章 计算机系统概述
  19. 数字电路设计之各种触发器的verilog实现
  20. 【美团杯2020】字符串处理:查查查乐乐

热门文章

  1. 力扣——合并两个有序链表
  2. 精灵图的使用(HTML、CSS)
  3. Open3d之内部形状描述子ISS
  4. PCL之统计异常值去除滤波器--StatisticalOutlierRemoval
  5. Linux安装MySQL-MariaDB版本
  6. 虚拟机+centOS挂载ISO步骤
  7. 每天多采一半油!中东联手中国阿里云的研究有望降低国际油价
  8. 7.15 HTMl + CSS 笔记整理(一)
  9. 数据库授予用户增删改查的权限的语句_mysql数据库终端上的增删改查及权限等相关操作...
  10. java io密集型任务_IO密集型的线程池大小设置