最近做了一個(gè)基于AIR平臺(tái)的ANE,趟坑無(wú)數(shù),自己記錄一下流程

一,平臺(tái)介紹

1, ANE(全名Adobe AIR Native Extension)本機(jī)擴(kuò)展,就是對(duì)Air運(yùn)行的本機(jī)的功能的擴(kuò)展,因?yàn)?b>Flash Air可以開發(fā)各種跨平臺(tái)的項(xiàng)目<windows,iOS,安卓...>;由于Flash可能沒有提供實(shí)現(xiàn)一些特定需求功能的API或者平臺(tái)不提供對(duì)外的API接口,導(dǎo)致Flash項(xiàng)目不能實(shí)現(xiàn)想要實(shí)現(xiàn)一些功能,或者調(diào)用平臺(tái)的底層API。這時(shí)候通過ANE橋接原平臺(tái)的方法的方式來(lái)實(shí)現(xiàn)一些flash平臺(tái)不能實(shí)現(xiàn)的功能<打開硬件設(shè)備(攝像頭,打開相冊(cè),獲取定位信息),獲取硬件信息...

二,開發(fā)環(huán)境及工具

2.1,開發(fā)環(huán)境:

mac OS10.13.6

2.2,開發(fā)工具:

Xcode10.0(每個(gè)iOS開發(fā)都在使用的工具,就不用多介紹了吧)

FlashBuilder4.7(Flash Builder是Adobe公司的Flash Builder的最新一代產(chǎn)品,F(xiàn)lash Builder將構(gòu)成應(yīng)用程序的資源(文件夾和文件)組合到一個(gè)容器中,項(xiàng)目包含一組屬性,這些屬性控制應(yīng)用程序的構(gòu)建方式、構(gòu)建的應(yīng)用程序所在的位置、調(diào)試的處理方式以及該項(xiàng)目于工作空間中其他項(xiàng)目的關(guān)系)下載地址:FlashBuilder下載地址(提示,如果用瀏覽器下載,速度慢的無(wú)法忍受,如果用下載工具下載,速度還可以)。

Flash Builder后續(xù)就簡(jiǎn)稱FB了。

2.3,SDK配置

FB4.7下載之后,可以試用60天,至于破解方法自己去度娘那里找,F(xiàn)B4.7下載之后自帶的AirSDK的版本是3.1,F(xiàn)lex SDK的版本是4.6,在后續(xù)的調(diào)取真機(jī)來(lái)調(diào)試的時(shí)候會(huì)有很大的麻煩,所以最好先把SDK都先升級(jí)一下。

2.3.1,更新Air SDK?

下載時(shí)不要點(diǎn)擊上面的那個(gè)DownLoad Now,那個(gè)是獨(dú)立的Adobe AIR SDK包,包含的有一些調(diào)試開發(fā)工具,咱們可以點(diǎn)我畫圈的那個(gè)鏈接直接下載。AirSDK下載地址

1

2.3.2,將已下載的最新SDK覆蓋到FB上去

將已經(jīng)下載好的SDK(截止到我發(fā)文,最新的SDK版本應(yīng)該是31.0)解壓放置到本地,路徑/Users/user/download/sdks/NewAirSDK

接下來(lái)需要認(rèn)清下面2個(gè)路徑的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。

建議在做下一步操作前先將這兩個(gè)文件夾做一下備份。有備無(wú)患嘛。

打開終端 使用ditto命令(MAC終端已經(jīng)有了這個(gè)工具了,直接使用吧)來(lái)合并文件夾?

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

這時(shí)候咱們就已經(jīng)把最新的Air SDK給更新到了FB上

2.3.3 下一步是更新Flex的版本 ? ?

FB下載之后自帶的Flex版本是4.6.0,如果不升級(jí)最新版,到后面建立Flex手機(jī)項(xiàng)目來(lái)進(jìn)行打包的時(shí)候,可能會(huì)報(bào)出“swf version is lower Rooter SWF version ”這樣的錯(cuò)誤。但是如果你的項(xiàng)目是ActionScript的手機(jī)項(xiàng)目的話,應(yīng)該就不用更新這個(gè)。 ?

???FlexSDK的下載地址

2

我是直接下載下面的那個(gè)二進(jìn)制文件,然后安裝。安裝目錄選擇在?/Applications/Adobe Flash Builder 4.7/sdks下新建一個(gè)文件夾4.16.1

這個(gè)時(shí)候,咱們才算是把安裝環(huán)境配置好,簡(jiǎn)單吧!

三,開始制作ANE

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

FB->文件->新建->?ActionScript庫(kù)項(xiàng)目

3

選擇工程創(chuàng)建的路徑和項(xiàng)目名稱,注意下面的包括AirSDK 的勾一定要勾選上,然后下一步,完成。

4

FB->文件->新建->?ActionScript類

5

點(diǎn)擊完成之后,在生成的as文件中開始愉快的coding

6

最后command +B編譯之后,在bin文件夾下生成SWC文件。 FB的工作就可以暫時(shí)告一段落了。其實(shí)在最開始的時(shí)候選擇建立Flex庫(kù)項(xiàng)目也是可以的,在Flex庫(kù)項(xiàng)目里再創(chuàng)建AS類,最終目的是生成SWC文件。

3.2 開始創(chuàng)建打包中要用到的.a文件

7

建立Xcode工程, 將自己已經(jīng)封裝好的功能模塊的庫(kù)文件打包進(jìn)來(lái),(我在這個(gè)demo中是把友盟的統(tǒng)計(jì)功能給集成進(jìn)來(lái),如果有同學(xué)不知道怎么封裝靜態(tài)庫(kù)的,可以去網(wǎng)上查找一下資料,在這里推薦兩篇,xcode制作iOS靜態(tài)庫(kù)SDK<包含第三方.a或者.framework靜態(tài)庫(kù)>,iOS靜態(tài)庫(kù)SDK制作),將封裝好的庫(kù)文件的.a文件和暴露接口的.h文件引入到新創(chuàng)建的項(xiàng)目中,再將FlashRuntimeExtensions.h文件引入到項(xiàng)目中。這個(gè)文件的路徑如下圖所示

8

最后重寫新建項(xiàng)目的.h和.m文件,使得Ai r平臺(tái)可以通過ANE文件調(diào)用到OC的方法

.h文件中暴露出的方法
.m文件中方法的實(shí)現(xiàn)
.m中方法的調(diào)用和實(shí)現(xiàn)
設(shè)置Scheme為release

選擇Generic iOS Device,Command+B,編譯成功生成打包所需的.a文件

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

現(xiàn)在要開始另外一個(gè)工作,創(chuàng)建?platform.xml文件,在這里設(shè)置你在.a文件中需要依賴的框架,比如我在引入的友盟,需要引入四個(gè)庫(kù)分別是 CoreTelephony.framework, libz.tbd?, libsqlite.tbd ?和 SystemConfiguration.framework ?,一定按照格式寫,要不然后面生成ANE文件時(shí)會(huì)報(bào)錯(cuò)

?platform.xml

另外一個(gè)重要的文件:extension.xml,?這個(gè)文件非常重要,連接了swc文件、.a文件;id 是在咱們?cè)贏S庫(kù)工程中定義的id,必須與此文件對(duì)應(yīng),如果想要ANE文件在安卓機(jī)型上也可以使用,就需要在這里加入安卓使用的jar包,和安卓的platform,因?yàn)槲易龅倪@個(gè)只要在iPhone上運(yùn)行,所以extension.xml文件里的東西稍微簡(jiǎn)單一些。

extension.xml

至此,打包ANE的準(zhǔn)備工作已經(jīng)基本完成了,準(zhǔn)備開始下一步吧

3.4 打包ANE文件

建議新建一個(gè)文件夾,文件夾內(nèi)包含以下文件 ,其中l(wèi)ibrary.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 環(huán)境變量中,使用終端打包,最終生成UMForANE.ane文件。

至此,制作ANE文件就大功告成了,還是有點(diǎn)繁瑣的,怕麻煩的朋友可以使用一位大神做的一個(gè)Xcode插件,xcode-template-ane,將其安裝在Xcode中,這個(gè)插件大概是2012年完成的一個(gè)東西,安裝完成后創(chuàng)建一個(gè)ANE靜態(tài)庫(kù)模板項(xiàng)目,他會(huì)幫你創(chuàng)建?platformoptions.xml??platformoptions.xml 和.h文件以及.m文件中的大部分代碼,還有最后的打包的過程都已經(jīng)用腳本寫好了,我剛開始沒有跟大家說用這個(gè)模版,是因?yàn)槲矣眠@個(gè)模版(使用最新的AIR SDK)最后生成ANE文件的那一步,一直是build success但是ANE文件不能產(chǎn)生。百思不得其解,如果大家對(duì)這個(gè)過程感興趣,可以移步這位大神的這篇文章Flash Air ANE for iOS 集成最新版本的友盟統(tǒng)計(jì)SDK.framework功能

四,創(chuàng)建工程來(lái)驗(yàn)證ANE的使用

重新打開FB,創(chuàng)建Flex手機(jī)項(xiàng)目向項(xiàng)目中添加ane擴(kuò)展庫(kù)

創(chuàng)建flex手機(jī)項(xiàng)目
選擇最新的SDK
添加ANE文件

點(diǎn)擊完成之后,就創(chuàng)建flex手機(jī)項(xiàng)目成功,并且咱們把ANE文件導(dǎo)入到了這個(gè)工程中去!

修改工程的XML文件,將咱們前面一直強(qiáng)調(diào)的唯一的ID,添加到XML文件中

修改XML文件中的ID

在mxml文件中添加簡(jiǎn)單的測(cè)試代碼

添加測(cè)試代碼

在工程上右鍵點(diǎn)擊,進(jìn)入屬性,選擇Flex構(gòu)建打包,開始導(dǎo)入用唯一的ID,在蘋果開發(fā)平臺(tái)上創(chuàng)建的配置文件,和對(duì)應(yīng)的P12 文件,將其導(dǎo)入

添加構(gòu)建打包所需要的證書和配置文件

點(diǎn)擊確定之后,連接真機(jī),在工程上點(diǎn)擊運(yùn)行。

真機(jī)運(yùn)行畫面

點(diǎn)擊view上的按鈕

點(diǎn)擊之后修改按鈕狀態(tài)
同時(shí)在友盟的后臺(tái)觀察到數(shù)據(jù)變化

至此,才算是 把整個(gè)ANE的流程走通,第一次寫文章,原來(lái)把自己走過的流程全部變成文字和圖片也這么難!給自己留下點(diǎn)筆記,省的以后忘記,也歡迎大家來(lái)交流!

五,參考資料

?1, ?http://www.itdecent.cn/p/175f07e1cc1a

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

3,http://www.itdecent.cn/p/155a3cfb765e?utm_source=itdadao&utm_medium=referral

4,http://www.itdecent.cn/p/62a682792db8

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 里面有一張?jiān)瓐D,其他都是修過的,修圖軟件真的很神奇,我也可以做手機(jī)屏幕圖片了。 你看得出哪張是原圖嗎?
    胖啊土閱讀 807評(píng)論 4 1
  • 你不僅僅是特殊物種智人的一個(gè)成員,而且還是在特定的歷史時(shí)期生存在地球上的特定地點(diǎn)的物種。這個(gè)時(shí)間和地點(diǎn)被具體...
    鄧潔兒閱讀 321評(píng)論 0 1

友情鏈接更多精彩內(nèi)容