引用:http://sswilliam.blog.163.com/blog/static/189696383201191094227313/

是不一个不错的跨平台路径,但是整合也会导致性能下降,但总体来说划算

简介

AIR3刚刚发布,带来的最令人激动的新特性莫过于Native Extension了。Native Extension就是让AIR可以调用各个平台上的本地代码(native code,ios上的object-candroid上的javadesktop上的c++c#),从而完成对AIRActionscript API的自定义扩展。即可以让开发者通过编写基于平台的本地代码扩展ActionScript。从而完成一些原有Actionscript无法完成的功能。

众所周知,AIRFlash平台的一个重要组成部分。其优势在于显示和渲染,开发者可以使用ActionScript或者Flex快速高效的开发出有良好用户体验的RIA应用。但是对于一些高性能的运算和对特定硬件设备的调用,AIR由于自身的限制而无法实现。

AIR 2中引入的NativeProcess的概念,从而让AIR可以再桌面平台可以启动一个本地进程以协助AIR实现更多功能,AIR程序和NativeProcess的进程之间使用标准输入输出流(stdin,stdout,stderr)进行通信。这里需要说明一点,NativeProcesswindows上只能启动exe,在mac上只能启动dmg。其他任何格式的文件都无法启动。官方文档里的范例启动了一个.py文件,经过实验是无法运行的,只能是启动python里的python.exe,然后参数跟上相应的.py文件的路径,才能正确的执行python脚本。NativeProcess大大扩展了AIR在桌面上的应用开发能力。

AIR 2.6开始,AIR开始支持移动平台,包括AndroidiOS。在移动设备上,由于设备和操作系统的种种限制,NativeProcess就无法工作了。由于移动设备的CPU普遍比桌面的CPU主频要低很多,因此对程序的性能要求更高。同时不同的移动设备的硬件设施各不相同(如陀螺仪,前后摄像头,GPS)AIR也无法完整及时的提供所有硬件设备的API,因此,为了让AIR能更好的适应移动平台的开发,急需要一种让AIR在移动设备上执行本地代码的解决方案。从而NativeExtension应运而生。

最初引入Native Extension的版本是AIR 2.5 for TV。引入的目的主要是由于TV有很多特性不可能被AIR原生API所支持,如操纵电视频道。因此adobeAIR 2.5 for TV中加入了NativeExtension这个特性,让AIRTV上可以执行TV的本地代码从而更好的适应TV的开发。

随着AIR在越来越多的平台上被支持,NativeExtension所带来的优势越来越明显,所以AdobeAIR3中将这个特性扩展到了所有的平台上。注意,是所有平台而不仅仅是移动平台,在桌面上也是可以使用NativeExtension的。

NativeExtension VS NativeProcess

NativeExtensionNativeProcess的主要区别在于,NativeProcess是新开一个进程完成相应的工作,而NativeExtensionAIR直接执行相应的本地代码,然后将结果返回给AIR。所有工作都在AIR本进程中完成。NativeExtension是让开发者自己扩展ActionScriptAPI,在ActionScript与底层代码之间建立了一个桥接,让开发基于系统的底层代码来扩展ActionScript

NativeExtension VS Alchemy

Alchemy也是flash平台扩展的一大利器,NativeExtensionAlchemy的主要区别在于,Alchemy是将C/C++代码编译为AVM可以执行的字节码,并生成一个相应的swc文件从而完成对Flash平台的扩展,由于是编译为AVM可执行的字节码,因此Alchemy适用于Flash PlayerAIRNativeExtension是将本地代码打包进ane文件,并且提供了从Actionscript到本地代码的桥接,真正执行本地代码的还是操作系统本身而非AVM。而且NativeExtension只适用于AIR而不适用于Flash Player

简单的来说,AIR NativeExtension就是一个带有本地代码实现的SWC库文件。

组织结构

本文首先介绍NativeExtension的结构和实现原理,然后以最简单的Hello World为例,介绍如何进行NativeExtension的开发,最后介绍如何使用AIR3SDK进行NativeExtension项目的打包和部署。

更多相关文章

  1. Android(安卓)ViewGroup事件分发机制
  2. android沉浸式状态栏的问题解决
  3. Android平台实现与Apache Tomcat服务器数据交互(MySql数据库)
  4. Android使用外部字体
  5. neon优化的yuv420转rgb24汇编代码,iOS/Android可用
  6. 20162319 实验四 Android程序设计
  7. 下载 Android(安卓)源代码 (2011-09-24 00:17)
  8. eclipse查看Android源代码
  9. Android(安卓)使用根据手机屏幕来进行比例拉伸接口获取的照片

随机推荐

  1. android线程学习
  2. android ExpandableListView
  3. 编写自定义的 Android(安卓)Preference
  4. android 源码编译打包的apk出现accessed
  5. iWidsets公告
  6. Android(安卓)使用android:inputType属性
  7. 安卓入门及界面带参数跳转
  8. android的启动过程
  9. android studio 获取签名(秘钥口令android
  10. 中国移动开发者社区专访:学习Android的两