一,平台介绍
1, ANE(全名Adobe AIR Native Extension)本机扩展,就是对Air运行的本机的功能的扩展,因为Flash Air可以开发各种跨平台的项目
二,开发环境及工具
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下载地址
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的下载地址
我是直接下载下面的那个二进制文件,然后安装。安装目录选择在 /Applications/Adobe Flash Builder 4.7/sdks下新建一个文件夹4.16.1
这个时候,咱们才算是把安装环境配置好,简单吧!
三,开始制作ANE
3.1 开始制作打包ANE使用的SWC文件
FB->文件->新建-> ActionScript库项目
选择工程创建的路径和项目名称,注意下面的包括AirSDK 的勾一定要勾选上,然后下一步,完成。
FB->文件->新建-> ActionScript类
点击完成之后,在生成的as文件中开始愉快的coding
最后command +B编译之后,在bin文件夹下生成SWC文件。 FB的工作就可以暂时告一段落了。其实在最开始的时候选择建立Flex库项目也是可以的,在Flex库项目里再创建AS类,最终目的是生成SWC文件。
3.2 开始创建打包中要用到的.a文件
建立Xcode工程, 将自己已经封装好的功能模块的库文件打包进来,(我在这个demo中是把友盟的统计功能给集成进来,如果有同学不知道怎么封装静态库的,可以去网上查找一下资料,在这里推荐两篇,xcode制作iOS静态库SDK<包含第三方.a或者.framework静态库>,iOS静态库SDK制作),将封装好的库文件的.a文件和暴露接口的.h文件引入到新创建的项目中,再将FlashRuntimeExtensions.h文件引入到项目中。这个文件的路径如下图所示
最后重写新建项目的.h和.m文件,使得Ai r平台可以通过ANE文件调用到OC的方法
选择Generic iOS Device,Command+B,编译成功生成打包所需的.a文件
3.3 制作打包所需的 platform.xml文件和extension.xml
现在要开始另外一个工作,创建 platform.xml文件,在这里设置你在.a文件中需要依赖的框架,比如我在引入的友盟,需要引入四个库分别是 CoreTelephony.framework, libz.tbd , libsqlite.tbd 和 SystemConfiguration.framework ,一定按照格式写,要不然后面生成ANE文件时会报错
另外一个重要的文件:extension.xml, 这个文件非常重要,连接了swc文件、.a文件;id 是在咱们在AS库工程中定义的id,必须与此文件对应,如果想要ANE文件在安卓机型上也可以使用,就需要在这里加入安卓使用的jar包,和安卓的platform,因为我做的这个只要在iPhone上运行,所以extension.xml文件里的东西稍微简单一些。
至此,打包ANE的准备工作已经基本完成了,准备开始下一步吧
3.4 打包ANE文件
建议新建一个文件夹,文件夹内包含以下文件 ,其中library.swf文件是由.swc 改名.zip解压后生成的文件
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手机项目成功,并且咱们把ANE文件导入到了这个工程中去!
修改工程的XML文件,将咱们前面一直强调的唯一的ID,添加到XML文件中
在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