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

一,平台介绍

1, ANE(全名Adobe AIR Native Extension)本机扩展,就是对Air运行的本机的功能的扩展,因为Flash Air可以开发各种跨平台的项目<windows,iOS,安卓...>;由于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下载地址

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的下载地址

2

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

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

三,开始制作ANE

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

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

3

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

4

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

5

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

6

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

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

7

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

8

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

.h文件中暴露出的方法
.m文件中方法的实现
.m中方法的调用和实现
设置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文件时会报错

 platform.xml

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

extension.xml

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

3.4 打包ANE文件

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

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扩展库

创建flex手机项目
选择最新的SDK
添加ANE文件

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

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

修改XML文件中的ID

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

添加测试代码

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

添加构建打包所需要的证书和配置文件

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

真机运行画面

点击view上的按钮

点击之后修改按钮状态
同时在友盟的后台观察到数据变化

至此,才算是 把整个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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,219评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,363评论 1 293
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,933评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,020评论 0 206
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,400评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,640评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,896评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,597评论 0 199
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,327评论 1 244
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,581评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,072评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,399评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,054评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,083评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,849评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,672评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,585评论 2 270

推荐阅读更多精彩内容

  • 里面有一张原图,其他都是修过的,修图软件真的很神奇,我也可以做手机屏幕图片了。 你看得出哪张是原图吗?
    胖啊土阅读 695评论 4 1
  • 你不仅仅是特殊物种智人的一个成员,而且还是在特定的历史时期生存在地球上的特定地点的物种。这个时间和地点被具体...
    邓洁儿阅读 226评论 0 1