最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程

一,平台介绍

1, ANE(全名Adobe AIR Native Extension)本机扩展,就是对Air运行的本机的功能的扩展,因为Flash Air可以开发各种跨平台的项目;由于Flash可能没有提供实现一些特定需求功能的API或者平台不提供对外的API接口,导致Flash项目不能实现想要实现一些功能,或者调用平台的底层API。这时候通过ANE桥接原平台的方法的方式来实现一些flash平台不能实现的功能<打开硬件设备(摄像头,打开相册,获取定位信息),获取硬件信息...

二,开发环境及工具

2.1,开发环境:

mac OS10.13.6

2.2,开发工具:

Xcode10.0(每个iOS开发都在使用的工具,就不用多介绍了吧)

FlashBuilder4.7(Flash Builder是Adobe公司的Flash Builder的最新一代产品,Flash Builder将构成应用程序的资源(文件夹和文件)组合到一个容器中,项目包含一组属性,这些属性控制应用程序的构建方式、构建的应用程序所在的位置、调试的处理方式以及该项目于工作空间中其他项目的关系)下载地址:FlashBuilder下载地址(提示,如果用浏览器下载,速度慢的无法忍受,如果用下载工具下载,速度还可以)。

Flash Builder后续就简称FB了。

2.3,SDK配置

FB4.7下载之后,可以试用60天,至于破解方法自己去度娘那里找,FB4.7下载之后自带的AirSDK的版本是3.1,Flex SDK的版本是4.6,在后续的调取真机来调试的时候会有很大的麻烦,所以最好先把SDK都先升级一下。

2.3.1,更新Air SDK 

下载时不要点击上面的那个DownLoad Now,那个是独立的Adobe AIR SDK包,包含的有一些调试开发工具,咱们可以点我画圈的那个链接直接下载。AirSDK下载地址

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第1张图片
1

2.3.2,将已下载的最新SDK覆盖到FB上去

将已经下载好的SDK(截止到我发文,最新的SDK版本应该是31.0)解压放置到本地,路径/Users/user/download/sdks/NewAirSDK

接下来需要认清下面2个路径的airSDK , 

/Applications/Adobe FlashBuilder4.7/eclipse/plugins/com.adobe.flash.compiler_4.7.0.349722/AIRSDK 路径是AIRSDK;   

  /Applications/Adobe Flash Builder 4.7/sdks/4.6.0 路径是Flex SDK包含AIRSDK。

建议在做下一步操作前先将这两个文件夹做一下备份。有备无患嘛。

打开终端 使用ditto命令(MAC终端已经有了这个工具了,直接使用吧)来合并文件夹 

ditto /Users/user/download/sdks/NewAirSDK /Applications/Adobe Flash Builder 4.7/sdks/4.6.0 

ditto /Users/user/download/sdks/NewAirSDK /Applications/Adobe FlashBuilder4.7/eclipse/plugins/com.adobe.flash.compiler_4.7.0.349722/AIRSDK

这时候咱们就已经把最新的Air SDK给更新到了FB上

2.3.3 下一步是更新Flex的版本    

FB下载之后自带的Flex版本是4.6.0,如果不升级最新版,到后面建立Flex手机项目来进行打包的时候,可能会报出“swf version is lower Rooter SWF version ”这样的错误。但是如果你的项目是ActionScript的手机项目的话,应该就不用更新这个。  

   FlexSDK的下载地址

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第2张图片
2

我是直接下载下面的那个二进制文件,然后安装。安装目录选择在 /Applications/Adobe Flash Builder 4.7/sdks下新建一个文件夹4.16.1

这个时候,咱们才算是把安装环境配置好,简单吧!

三,开始制作ANE

3.1 开始制作打包ANE使用的SWC文件

FB->文件->新建-> ActionScript库项目

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第3张图片
3

选择工程创建的路径和项目名称,注意下面的包括AirSDK 的勾一定要勾选上,然后下一步,完成。

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第4张图片
4

FB->文件->新建-> ActionScript类

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第5张图片
5

点击完成之后,在生成的as文件中开始愉快的coding

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第6张图片
6

最后command +B编译之后,在bin文件夹下生成SWC文件。 FB的工作就可以暂时告一段落了。其实在最开始的时候选择建立Flex库项目也是可以的,在Flex库项目里再创建AS类,最终目的是生成SWC文件。

3.2 开始创建打包中要用到的.a文件

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第7张图片
7

建立Xcode工程, 将自己已经封装好的功能模块的库文件打包进来,(我在这个demo中是把友盟的统计功能给集成进来,如果有同学不知道怎么封装静态库的,可以去网上查找一下资料,在这里推荐两篇,xcode制作iOS静态库SDK<包含第三方.a或者.framework静态库>,iOS静态库SDK制作),将封装好的库文件的.a文件和暴露接口的.h文件引入到新创建的项目中,再将FlashRuntimeExtensions.h文件引入到项目中。这个文件的路径如下图所示

8

最后重写新建项目的.h和.m文件,使得Ai r平台可以通过ANE文件调用到OC的方法

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第8张图片
.h文件中暴露出的方法
最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第9张图片
.m文件中方法的实现
最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第10张图片
.m中方法的调用和实现
最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第11张图片
设置Scheme为release

选择Generic iOS Device,Command+B,编译成功生成打包所需的.a文件

3.3 制作打包所需的 platform.xml文件和extension.xml

现在要开始另外一个工作,创建 platform.xml文件,在这里设置你在.a文件中需要依赖的框架,比如我在引入的友盟,需要引入四个库分别是 CoreTelephony.framework, libz.tbd , libsqlite.tbd  和 SystemConfiguration.framework  ,一定按照格式写,要不然后面生成ANE文件时会报错

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第12张图片
 platform.xml

另外一个重要的文件:extension.xml, 这个文件非常重要,连接了swc文件、.a文件;id 是在咱们在AS库工程中定义的id,必须与此文件对应,如果想要ANE文件在安卓机型上也可以使用,就需要在这里加入安卓使用的jar包,和安卓的platform,因为我做的这个只要在iPhone上运行,所以extension.xml文件里的东西稍微简单一些。

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第13张图片
extension.xml

至此,打包ANE的准备工作已经基本完成了,准备开始下一步吧

3.4 打包ANE文件

建议新建一个文件夹,文件夹内包含以下文件 ,其中library.swf文件是由.swc 改名.zip解压后生成的文件

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第14张图片
createANE所需的文件

adt -package 

-target ane UMForANE.ane 

extension.xml 

-platform iPhone-ARM

library.swf

libUMForANE.a

-swc ASUMForANE.swc 

-platformoptions platformoptions.xml 

ADT 工具包含在 AIR SDK 的 bin 文件夹中,将文件的路径添加到 PATH 环境变量中,使用终端打包,最终生成UMForANE.ane文件。

至此,制作ANE文件就大功告成了,还是有点繁琐的,怕麻烦的朋友可以使用一位大神做的一个Xcode插件,xcode-template-ane,将其安装在Xcode中,这个插件大概是2012年完成的一个东西,安装完成后创建一个ANE静态库模板项目,他会帮你创建 platformoptions.xml  platformoptions.xml 和.h文件以及.m文件中的大部分代码,还有最后的打包的过程都已经用脚本写好了,我刚开始没有跟大家说用这个模版,是因为我用这个模版(使用最新的AIR SDK)最后生成ANE文件的那一步,一直是build success但是ANE文件不能产生。百思不得其解,如果大家对这个过程感兴趣,可以移步这位大神的这篇文章Flash Air ANE for iOS 集成最新版本的友盟统计SDK.framework功能;

四,创建工程来验证ANE的使用

重新打开FB,创建Flex手机项目向项目中添加ane扩展库

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第15张图片
创建flex手机项目
最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第16张图片
选择最新的SDK
最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第17张图片
添加ANE文件

点击完成之后,就创建flex手机项目成功,并且咱们把ANE文件导入到了这个工程中去!

修改工程的XML文件,将咱们前面一直强调的唯一的ID,添加到XML文件中

修改XML文件中的ID

在mxml文件中添加简单的测试代码

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第18张图片
添加测试代码

在工程上右键点击,进入属性,选择Flex构建打包,开始导入用唯一的ID,在苹果开发平台上创建的配置文件,和对应的P12 文件,将其导入

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第19张图片
添加构建打包所需要的证书和配置文件

点击确定之后,连接真机,在工程上点击运行。

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第20张图片
真机运行画面

点击view上的按钮

最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第21张图片
点击之后修改按钮状态
最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程_第22张图片
同时在友盟的后台观察到数据变化

至此,才算是 把整个ANE的流程走通,第一次写文章,原来把自己走过的流程全部变成文字和图片也这么难!给自己留下点笔记,省的以后忘记,也欢迎大家来交流!

五,参考资料

 1,  https://www.jianshu.com/p/175f07e1cc1a

2, http://www.voidcn.com/article/p-ttlcfffw-bhs.html

3,https://www.jianshu.com/p/155a3cfb765e?utm_source=itdadao&utm_medium=referral

4,https://www.jianshu.com/p/62a682792db8

5,https://blog.csdn.net/u010784415/article/details/18038443

你可能感兴趣的:(最近做了一个基于AIR平台的ANE,趟坑无数,自己记录一下流程)