一、简介
一提到AIR,大家可能都会联想到那些丰富多彩、绚丽的界面,令人激动的互联网桌面应用能力。但是AIR贫乏的本地代码(Native Code)调用能力,使得它把大多数本地应用都拒之门外。
FluorineFx Aperture framework作为Fluorine的子项目,为我们提供了一个对本地OS支持的框架(windows only)。它以非侵入性的方式为AIR应用提供了对本地代码的扩展能力。在运行时期间,框架也会自动与您的AIR应用挂钩,而不需要额外安装和配置任何东西。
Aperture framework提供了一个AIR应用软件和自动化对象交互的桥梁。同时框架使用后期绑定访问自动化对象。
二、Hello World
1、建立本地代码:
1) 首先,我们新建一个ATL应用——airexec
2) 然后,选择创建DLL项目,并完成向导
3) 配置项目
a ) 使用静态链接
b) 运行时库配置:DEBUG —— /MTd RELEASE —— /MT
c) 由于AIR需要向导安装,同时不需要人工干预,故本地DLL也不要进行注册表登记:
4) 构建我们自己的本地实现类——MyClass
5)修改IDispatchImpl的参数wMajor 和 wMinor,改为 0xFFFF:
指定的值0xFFFFF告诉IDispatchImpl直接从您的模块的资源和类型库加载类型库,而这些类型库根本不需要被注册。
6) 好了,现在可以添加我们的自定义方法了,在IMyClass接口上添加方法Test:
7) 实现代码:
STDMETHODIMP CMyClass::Test(BSTR Something, BSTR* Result)
{
_bstr_t b = Something;
char* ch = b;
char ch2[256] = "已显示";
::MessageBoxA(NULL,ch,"",0); // 直接在Window下执行
strcat(ch2,ch);
*Result = _bstr_t(ch2); // 返回给Flex
return S_OK;
}
8) 编译程序
9) 打开本类型对应的.rgs文件,记下CLSID的值:
2、实现我们的AIR应用:
制作AIR的过程很简单,具体的步骤如下:
a) 导入相关DLL和AS文件,ATL项目生成的airexec.dll也同样导入:
b) 引入Aperture控件,并实现对本地DLL的CLSID的访问:
注意source属性,格式为——ATL项目名:CLASID
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
xmlns:aperture="com.fluorinefx.aperture.*" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
import mx.rpc.events.FaultEvent;
private function init() : void {
lc.Test("Hello World"); // 访问Test方法
}
private function onTest(event : ResultEvent) : void {
Alert.show(event.result.toString()); // 打印返回值
}
]]>
</mx:Script>
<aperture:LocalObject id="lc" showBusyCursor="true" source="airexec:3657D1C6-0D94-4CC3-8976-37E813C49B63">
<aperture:methods>
<aperture:method name="Test" result="onTest(event)"/>
</aperture:methods>
</aperture:LocalObject>
</mx:WindowedApplication>
c) 测试这个AIR:
先将Console.exe拷贝到big-debug目录下,并运行这个EXE:
用FLEX BUILDER运行这个AIR,运行结果如下:
此时的Hello World为C++的MessageBoxA所产生,也就是说已经调用本地代码了。点击确定后,结果如下:
此时的结果为C++返回给FLEX的结果,也就是返回的BSTR*指针的内容。
三、部署,最终验收
测试期间,我们用额外的Console.exe进行测试,而部署就不再需要了。我们只是把相关的dll参与部署:
直接生成AIR文件,然后再最终客户机器直接安装,并测试,结果与测试结果相同。
除了客户点击TestExec.air进行安装外,我们并没有额外干预客户机,也没有进行任何其他的操作。
这说明这个AIR跟正常的AIR没有区别,却可以直接调用本地DLL或EXE代码。
四、内建的基本操作
除了自定义本地代码外,Aperture framework也把常用的本地调用封装成了DLL,目前Documented的部分有3个DLL中的5个方法(参见官方文档aperture.chm),当然UnDocumented的方法就需要开发人员自己去发掘了。
- 大小: 31.5 KB
- 大小: 103.5 KB
- 大小: 103.9 KB
- 大小: 93.4 KB
- 大小: 61.8 KB
- 大小: 54.6 KB
- 大小: 21.8 KB
- 大小: 50.9 KB
- 大小: 69.9 KB
- 大小: 20.5 KB
- 大小: 77.3 KB
- 大小: 37.6 KB
- 大小: 33.6 KB
- 大小: 51.7 KB
分享到:
相关推荐
Adobe AIR(Adobe Integrated Runtime)是Adobe公司开发的一款跨平台的应用程序运行环境,它允许开发者创建桌面应用程序,这些程序可以运行在Windows、Mac OS X以及Android和iOS等移动平台上。Adobe AIR为开发人员...
5. **数据存储与本地化**:学习如何使用AIR的本地文件系统接口和SQLite数据库进行数据持久化,以及如何实现多语言支持和资源文件的管理。 6. **性能优化**:源代码可能包含了针对Android设备性能优化的技巧,如减少...
首先,理解AIR运行exe程序的基本原理:AIR提供了NativeProcess类,它是用来与操作系统本地进程进行交互的核心工具。通过创建NativeProcess对象,可以启动一个本地可执行文件(如.exe文件),并且能够监听其标准输入...
通过编写本地代码(如Java或Objective-C),开发者可以创建自定义的扩展,这些扩展可以被AIR应用程序调用,从而实现对特定平台的深度定制。 三、Android开发中的本地扩展 在Android平台上,开发者需要编写Java代码...
1. **Adobe AIR SDK**:首先需要下载并安装Adobe AIR SDK,它是开发AIR应用的基础工具集,包括编译器和运行库。 2. **开发工具**:可以选择Flash Builder、IntelliJ IDEA、Visual Studio Code等支持AIR开发的IDE,...
本实例聚焦于如何利用Flash Air来实现打开本地文件的功能,这对于构建文件管理和处理应用至关重要。下面将详细阐述这一过程。 首先,我们需要了解Adobe AIR(Adobe Integrated Runtime)的基础知识。它是一个跨平台...
**Android 移动开发——基于Adobe AIR 源代码** 在Android移动开发中,Adobe AIR(Adobe Integrated Runtime)提供了一种跨平台的方式,允许开发者使用熟悉的Flash、Flex或ActionScript技术来构建原生的移动应用。...
5. **学习点**: 分析这个源代码可以帮助开发者了解如何在Adobe AIR中集成数据服务(如REST API)、本地文件系统访问、数据库连接、事件处理、数据绑定和图形渲染等。此外,还可能涉及性能优化、错误处理和安全性措施...
AirPlay的核心在于Bonjour服务发现协议,它允许设备在本地网络中找到并连接到其他支持AirPlay的设备。AirPlay协议基于HTTP和RTSP(实时流协议),通过加密的方式保证传输的安全性。在iOS9中,AirPlay2的引入进一步...
根据提供的文件信息,文章标题“flex air 代码运行 exe 、bat”以及描述部分都明确指出了这一主题的核心——利用Flex程序启动本地的可执行文件与批处理文件。 ### 一、Flex与Adobe AIR简介 Flex是一种开源框架,...
Flex Air调用C代码是跨平台开发中的一个重要技术,它允许使用ActionScript 3的Flex应用程序与本地系统资源进行交互,比如C/C++编写的动态链接库(DLLs)或共享对象(SOs)。这个技术主要依赖于Adobe AIR的Native ...
它与AIR结合使用时,开发者可以利用Flex的组件库和强大的数据绑定机制来构建用户界面,同时利用AIR的本地运行环境在桌面系统上提供离线应用体验。而Flash是Adobe开发的一种广泛应用于网页动画和交互设计的技术,它与...
Adobe AIR为开发人员提供了一个统一的平台,让他们能够编写一次代码,然后在Windows、Mac OS X以及Android和iOS等移动平台上运行。 标题提到的“Adobe AIR 阅读器”实际上是指用于打开和交互.AIR文件的应用程序。....
在Adobe AIR (Adobe Integrated Runtime)中,开发者可以通过使用Android本地扩展(ANE)来实现更强大的功能,尤其是那些需要与原生代码进行交互的功能。这种方式允许开发者利用Java语言编写Android本地库,并通过特定...
因此,开发者需要注意优化代码,如减少不必要的渲染,使用位图数据,避免内存泄漏,以及利用Adobe AIR提供的本地API以提高性能。 8. **设备兼容性和适配**:开发Android应用时,需考虑到设备的多样性,包括不同屏幕...
Flex Air是中国Adobe公司开发的一款基于Flash技术的富互联网应用程序(RIA)开发平台,它允许开发者创建可以在桌面运行的跨平台应用程序。本“Flex Air中文官方帮助文档”是开发者的重要参考资料,详细介绍了Flex ...
当iOS设备或Mac电脑上的AirPlay功能被启用并选择Shairport作为播放目的地时,音频数据就会通过Wi-Fi网络传输到运行Shairport的设备。Shairport接收到这些数据后,将其解码并传递给本地的音频系统进行播放。这个过程...
3. **数据存储与网络通信**:AIR支持SQLite数据库和XML/JSON数据交换,通过"chX"中的代码,读者可以学习如何在Android设备上实现数据的本地存储和远程数据的请求。 4. **设备访问与功能集成**:AIR允许开发者访问...
- **定义与特点**:Adobe AIR是一个跨平台的运行时环境,可以运行用Flash、Flex、HTML、JavaScript等技术编写的本地应用程序。 - **历史背景**:Adobe AIR最初是在2007年发布的,旨在提供一种简单的方式来将网络...