首页 > 其他分享 >与Xcode相比Adobe AIR开发iOS的优势和局限

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

时间:2023-01-05 23:08:23浏览次数:75  
标签:ANE Adobe Xcode Flash iOS AIR ActionScript 调试



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​


标签:ANE,Adobe,Xcode,Flash,iOS,AIR,ActionScript,调试
From: https://blog.51cto.com/kenkao/5991909

相关文章

  • Adobe AIR移动App的互相调用实现方式
    在使用AdobeAIR进行移动应用开发的时候,我们或许会有这样的需求:假如我们开发的是两个应用(A和B),同时安装到手机上,那么能否在A中呼叫B并传递参数呢(或者反过来B操作后,再把参数......
  • 开发Adobe AIR移动应用程序的考虑事项
    扩展:​​http://mobile.51cto.com/Adobe-302658.htm​​ AdobeAIR经过发展演进,已经超越了最初作为桌面应用程序平台的目标。如今,它支持跨移动、桌面和数字家用设备的独立......
  • iOS上架流程​
    ​有3D-touch机型的坑​昨天在上线的时候遇到了一个坑,最后导致的结果是找了好几个小时,直接到半夜才能上线。​入正题:坑是:项目运行在456上没什么问题,但是在6S以上的机型就有......
  • Ios上架时间​
    ​苹果APP上架难,不用越狱,下载未上架APP!​苹果的ios系统生态一项是流畅安全的,没有乱七八糟的东西,APP都是在苹果AppStore应用商店来下载,对于开发者来说,一个APP上架需要经历严......
  • Ios上架需要多久​
    ​很多同学都觉得公有云、私有云、混合云这些概念的认识比较混乱,开始我面对网上很多专业的解释不明所以,直到我遇到这个说法:​大白话解释一下​你娶了一个老婆,这叫传统IT架构......
  • Adobe AIR * 设置移动应用程序属性
    ​ 对于其他AIR应用程序,可以在应用程序描述符文件中设置基本应用程序属性。移动应用程序会忽略某些特定于桌面的属性,例如窗口大小和透明度。移动应用程序还可以使用自己......
  • 在 Adobe AIR 中为不同屏幕尺寸的多种设备提供支持
    ​​http://www.adobe.com/cn/devnet/air/articles/multiple-screen-sizes.html​​ 无论是改编原本在浏览器FlashPlayer中运行的游戏使其在iOS(使用AdobeAIR)上运行,还......
  • Adobe AIR for Android 缓存本地数据常用方法
    Local SharedObject这种方法比较简单方便的保存少的数据到到设备中。你不用自己去管理这些数据,设备会自动管理他。SharedObject 在 flash.net 包中,继承自EventDispatche......
  • Ios上架app流程​
    ​一、上架基本需求资料​1、苹果开发者账号(公司已有可以不用申请,需要开通开发者功能,每年99美元)​2、开发好的APP​二、证书​上架版本需要使用正式的证书​1、创建证书A......
  • Ios app如何上架
    ​前几天在忙着上线,尽管之前已经上线过一次,但由于本身比较菜,还是状况百出.好在今天终于成功提交,因此来写写心得.​接下来我讲一讲关于我版本更新过程中的一些问题.​Bu......