精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Adobe AIR教程:面向iOS設備的原生擴展

移動開發(fā)
本文為AIR Native Extension實現(xiàn)iOS應用內(nèi)付費全教程的第二部分:面向iOS設備的原生擴展。

本文的主要內(nèi)容如下

AIR Native Extension介紹

ANE的組成部分

ActionScript 3.0擴展

Objective-C 擴展

使用ADT打包ANE

使用ADT打包IPA

AIR Native Extension介紹

AIR Native Extension (ANE)是AIR 3.0的一項重要特性,簡單的說,它允許AIR應用程序通過擴展文件與原生應用程序類庫相互通訊,從而讓AIR應用實現(xiàn)一些只有原生程序才可以做到的功能。

在ANE出現(xiàn)以前,移動平臺上的AIR對系統(tǒng)的訪問非常有限,功能的實現(xiàn)都是封裝在封閉的,由Adobe定義好的ActionScript 3.0 API內(nèi),比如Accelerometer, GeoLocator等AS類。ANE則將AIR徹底開放出來,AIR不再針對具體的功能提供封閉的API,而是允許開發(fā)者通過AIR的擴展機制自由調用使用原生語言開發(fā)的類庫。這樣可以讓AIR應用程序享有與原生應用程序同等的機會,其意義對Flash技術來說是劃時代的。

ANE的組成部分

ANE支持向Windows、Mac OSX、Android和iOS各個平臺原生應用程序的擴展,本文只針對iOS平臺進行介紹。在iOS平臺中,ANE的組成部分基本分為ActionScript 3.0擴展類庫和Objective-C原生擴展類庫兩個部分,這兩個部分打包后生成AIR擴展文件(.ane),***和AIR應用程序一起打包成iOS原生應用IPA文件。如下圖所示。

 

圖1 ANE的組成部分

ActionScript 3.0擴展

ANE的AS擴展部分是一個SWC,AIR 3.0 SDK里為flash.external.ExtensionContext類添加了新的方法。如下例所示:

  1. import flash.external.ExtensionContext; 
  2. ... 
  3. private var ext:ExtensionContext; 
  4. ... 
  5. ext = ExtensionContext.createExtensionContext("com.adobe.appPurchase",""); 

在這個例子里,ExtensionContext通過靜態(tài)方法createExtensionContext()來獲得一個實例,參數(shù)com.adobe.appPurchase是這個擴展的ID,它非常重要,在擴展的配置文件里和應用程序描述文件中都需要用這個ID進行配對。

調用原生類中定義的方法可以用方法call()來實現(xiàn),由于是同步調用,所以函數(shù)可以有返回值。如在原生類中定義的方法finish,可以用下面的代碼來調用。

  1. var result:Object = ext.call("finish"); 

我們還可以給ExtensionContext類添加事件偵聽,用來獲取從原生類中派發(fā)回來的事件。

  1. ext.addEventListener(StatusEvent.STATUS,onStatus); 
  2. public function onStatus(e:StatusEvent):void{ 
  3. switch(e.code){ 
  4. case "removeTransaction": 
  5. ... 
  6. } 

Objective-C 擴展

接下來是原生類的部分,如果你注冊成為蘋果iOS開發(fā)者,那么你可以在蘋果開發(fā)者網(wǎng)站上免費下載Object-C的開發(fā)工具XCode。關于如何注冊成為蘋果iOS開發(fā)者,請參考我的這篇文章,如何成為一個合法的iOS開發(fā)者。

總的來說,Objective-C 雖然語法比較奇怪,但只要掌握了基本的規(guī)則,還是和ActionScript一樣易懂。OBJC擴展類需要引入一個FlashRuntimeExtension.h類包,它實現(xiàn)了和ActionScript溝通的接口。

引入FlashRuntimeExtension.h之后,可以用下面的代碼定義一個FREObject方法,F(xiàn)REObject是接口類型。這里要注意,與AS的接口包括函數(shù)返回值,都要定義成FREObject類型,比如代碼中的retVal。

  1. FREObject finishTransaction1(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) { 
  2. NSLog(@"Finish Transaction Called"); 
  3. BOOL matchFound = NO
  4. const uint8_t* str = nil
  5. uint32_t len = -1; 
  6. ...... 
  7. FREObject retVal; 
  8. if(FRENewObjectFromBool(matchFound, &retVal) == FRE_OK){ 
  9. return retVal; 
  10. }else{ 
  11. return nil; 

要把FREObject方法定義成接口,還需要在ContextInitializer方法內(nèi)進行配置,如下:

  1. //這里是需要定義的接口的數(shù)量 
  2. *numFunctionsToTest = 6
  3. //定義一個FRENamedFunction類型的實例func,初始化函數(shù)的個數(shù) 
  4. FRENamedFunction* func = (FRENamedFunction*)malloc(sizeof(FRENamedFunction)*6); 
  5. //定義一個接口,name是字符串"getProducts",函數(shù)體是getProducts 
  6. func[0].name = (const uint8_t*)"getProducts"; 
  7. func[0].functionData = NULL
  8. func[0].function = &getProducts; 
  9. func[1].name = (const uint8_t*)"startPayment"; 
  10. func[1].functionData = NULL
  11. func[1].function = &startAppPayment; 
  12. func[2].name = (const uint8_t*)"finish"; 
  13. func[2].functionData = NULL
  14. func[2].function = &finishTransaction1; 
  15. func[3].name = (const uint8_t*)"muted"; 
  16. func[3].functionData = NULL
  17. func[3].function = &muted; 
  18. func[4].name = (const uint8_t*)"restore"; 
  19. func[4].functionData = NULL
  20. func[4].function = &restoreTrans; 
  21. func[5].name = (const uint8_t*)"trans"; 
  22. func[5].functionData = NULL
  23. func[5].function = &getTrans; 
  24. *funcfunctionsToSet = func; 
  25. .... 

而ContextInitializer方法,是在原生擴展類的初始化函數(shù)ExtInitializer中指定的:

  1. void ExtInitializer(void** extDataToSet, FREContextInitializer* ctxInitializerToSet, 
  2. FREContextFinalizer* ctxFinalizerToSet) { 
  3. NSLog(@"Extension Initialized"); 
  4. *extDataToSet = NULL
  5. *ctxInitializerToSet = &ContextInitializer; 
  6. *ctxFinalizerToSet = &ContextFinalizer; 

ExtInitializer是原生擴展的程序入口,它可以通過擴展配置文件extension.xml來定義:

  1. com.adobe.appPurchase 
  2. libAppPurchase.a 
  3. ExtInitializer 
  4. ExtFinalizer 

我介紹的這個順序,實際上就是實際程序編寫的思路,先確定接口,再實現(xiàn)連接。 也許有朋友和我一開始接觸OBJC的時候一樣,對這些代碼一頭霧水。沒有關系,在這篇教程里我只是對流程做簡短的介紹,具體的代碼解析會在本系列的***一篇教程里做更詳細的講解。那么接下來讓我來介紹下一個部分,打包擴展。

使用ADT打包ANE

在圖1中,我介紹了.ane文件的組成,它包括了AS類庫(.swc)和原生類(.a)兩個部分,以及剛才我們介紹的這個擴展配置文件extension.xml。那么要打包ane我們還需要哪些文件呢?

 

圖2 打包ANE所需要的文件

如圖2所示,所選擇的文件以及文件夾就是打包ANE所需要的所有文件,它包括:

1,AIR SDK打包應用程序和類庫(bin,lib)

2,ActionScript擴展類包.swc,如圖ANE_IAP_ASLib.swc

3,ActionScript擴展類包.swf,如圖library.swf,可以通過將SWC的文件擴展名改成ZIP后解壓縮得到。

4,Objective-C擴展類包.a,如圖libAppPurchase.a,可以通過在Xcode中編譯項目得到。

5,擴展配置文件XML,如圖extension.xml

6,一個打包證書,如圖selfsigned.p12,可以通過Flash CS5的AIR發(fā)布設置生成。

一切就緒后便可以使用命令行進行打包,注意路徑,下例路徑為當前文件夾。

  1. bin/adt -package -storetype pkcs12 -keystore selfsigned.p12 -storepass 1234 -target ane ext/InApp.ane extension.xml -swc ANE_IAP_ASLib.swc -platform iPhone-ARM library.swf libAppPurchase.a 

使用ADT打包IPA

.ane文件打包成功后,便可以用來打包IPA文件,也就是iOS應用程序包。如果你對開發(fā)iOS應用的必要流程還不很清楚,請參閱我的這篇教程,如何使用iOS開發(fā)者授權以及如何申請證書。我以前介紹過如何用Flash Professional CS5打包IPA,今天主要介紹如何用AIR SDK的打包工具ADT來生成含有ANE擴展的IPA。

 

圖3 使用ADT生成含有ANE擴展的IPA所需要的文件

如圖3所示,所選擇的文件就是生成IPA的必要文件:

1,應用程序文件SWF,如圖是ANE_IAP_Example.swf。

2,開發(fā)者設備授權文件.mobileprovision,如圖是ghostbride_dev.mobileprovision。

3,開發(fā)者簽名證書文件.p12,如圖是jameslidevelopment.p12。

4,應用程序描述文件XML,如圖是info-app.xml。

5,擴展包路徑,如圖是ext

6,如果應用程序有圖標圖片,還需要圖標文件夾,如圖是icon

在應用描述文件XML中,需要對擴展追加一個定義:

  1. com.adobe.appPurchase 

這里可以看到,在AS擴展類、擴展配置文件extension.xml和應用描述文件info-app.xml中都指定了一個統(tǒng)一擴展的ID: com.adobe.appPurchase。

利用下面的命令行可以打包生成Main.ipa:

  1. bin/adt -package -target ipa-test-interpreter -provisioning-profile ghostbride_dev.mobileprovision -storetype pkcs12 -keystore jameslidevelopment.p12 -storepass 1234 Main.ipa info-app.xml ANE_IAP_Example.swf -extdir ext icon 

 

責任編輯:佚名 來源: jamesli.cn/blog
相關推薦

2011-11-16 16:21:09

AdobeAIR

2011-11-16 14:20:43

Adobe AIR

2012-03-13 16:16:39

AdobeAIR for TV

2011-11-16 15:47:04

AdobeAIRiOS應用

2012-03-15 09:55:23

Adobe AIR安裝

2012-03-09 13:52:28

Adob??e AIRiOS

2011-11-16 15:08:30

AdobeAIRiOS應用

2011-11-16 13:47:05

2012-03-09 10:46:35

Adobe AIR是什Adobe AIRAIR

2012-04-04 11:36:40

iOS

2009-01-18 09:20:49

AIRAdobeFlex

2009-06-25 10:46:22

Silverlight

2012-02-28 13:52:45

Adobe AIRAndroidFlash

2011-11-17 15:17:37

AdobeAIR調試性能

2010-10-29 09:28:52

Adobe AirAdobe MAXflash

2010-08-18 08:21:49

Adobe AIRAndroid

2012-07-06 13:45:21

跨平臺工具Adobe AirFlex

2011-12-30 15:17:23

Adobe視頻PhoneGap

2012-03-15 09:46:41

UbuntuLinux安裝Adobe AIR

2011-11-16 13:58:12

Adobe AIR
點贊
收藏

51CTO技術棧公眾號

色女人在线视频| 伊人网站在线观看| 宅男在线一区| 4438成人网| 亚洲色成人一区二区三区小说| 国产女主播在线写真| 国产麻豆精品theporn| 欧美一级片久久久久久久| www.xx日本| 校园春色另类视频| 欧美一级高清片| 日本黄网站免费| 欧美xxxx免费虐| 亚洲欧洲精品一区二区精品久久久 | 美女福利视频网| 国产尤物视频在线| 国产91精品入口| 国产精品久久久久久久天堂| 国产亚洲精品久久久久久打不开| 欧美美女视频| 日韩精品在线看| 中文写幕一区二区三区免费观成熟| 日韩精品一区二区三区| 亚洲大尺度视频在线观看| 亚洲不卡一卡2卡三卡4卡5卡精品| 国产成人精品毛片| 久久黄色级2电影| 国产成人精品久久| 久久久久久久久久影院| 黄色成人91| 萌白酱国产一区二区| 永久免费av无码网站性色av| 日韩极品在线| 欧美不卡一区二区三区| 天天av天天操| 高清不卡一区| 欧美丰满高潮xxxx喷水动漫| 免费一级特黄录像| 97久久香蕉国产线看观看| 欧美日韩另类在线| 免费看国产曰批40分钟| 国产精品国精产品一二| 一区二区三区国产| 久久综合亚洲精品| av黄色在线| 亚洲欧美日韩国产成人精品影院| 国产福利片一区二区| www.av在线| 日本一区二区三区四区在线视频| 欧美日韩国产精品一区二区| 日本午夜在线| 国产亚洲成年网址在线观看| 人偷久久久久久久偷女厕| 户外极限露出调教在线视频| 久久精品人人做人人爽97| 欧美高清视频一区| 国产三级在线免费观看| 国产三级精品视频| 亚洲五月六月| 精品孕妇一区二区三区| 一区二区三区在线高清| 国产成人永久免费视频| 91精品国产黑色瑜伽裤| 激情成人中文字幕| 国产亚洲天堂网| 欧美色999| 欧美另类久久久品| 欧美一级高清大全免费观看| 午夜精品一区二区三区在线观看| av资源网站在线观看| 中文字幕一区二区不卡| 992tv成人免费观看| 呦呦在线视频| 无吗不卡中文字幕| 男人日女人逼逼| 国产调教在线| 欧美亚洲综合另类| 亚洲第一天堂久久| 国产精品色在线网站| 日韩精品黄色网| 欧美黄色高清视频| 中文字幕一区二区三三| 国内偷自视频区视频综合| 超碰中文字幕在线| 紧缚奴在线一区二区三区| 国产精品日韩欧美一区二区三区| 天堂av电影在线观看| 欧美高清在线视频| 国产一区二区三区乱码| av资源亚洲| 制服视频三区第一页精品| 成人欧美精品一区二区| 韩日一区二区三区| 大胆欧美人体视频| 天天干天天操天天爱| 国内精品在线播放| 蜜桃av噜噜一区二区三| 国产精品刘玥久久一区| 欧美丝袜美女中出在线| 精品sm捆绑视频| 久久无码高潮喷水| 国产精品va视频| 亚洲精品一区av在线播放| 神马午夜精品91| 久久av一区| 国产成人亚洲欧美| se在线电影| 午夜国产精品一区| 国产大片一区二区三区| 国产精品密蕾丝视频下载| 久久99精品久久久久久琪琪| 国产精品午夜一区二区| 成人毛片老司机大片| 亚洲综合av一区| 永久免费毛片在线播放| 日韩欧美一区二区视频| 妖精视频在线观看免费| 亚洲视频1区| 国产精品一区二区三区四区五区| 免费在线看a| 欧美午夜一区二区三区免费大片| 日韩Av无码精品| 中文字幕一区二区av | 国产精品不卡av| 激情图片小说一区| 婷婷四房综合激情五月| 伊人久久在线| 日韩大片免费观看视频播放| 久久久91视频| 国产一区不卡视频| 免费观看黄色大片| 日韩一区二区三区四区五区 | 欧美videosex性极品hd| 欧美福利视频导航| 四虎影视一区二区| 欧美另类自拍| 久久国产直播| 欧美日韩精品不卡| 欧美三级网站| 日韩av网址在线| 久久久久亚洲av无码专区| 久久69国产一区二区蜜臀| 午夜免费电影一区在线观看| 朝桐光一区二区| 亚洲性av在线| 国产无遮挡又黄又爽又色视频| 91视视频在线观看入口直接观看www| 日韩成人手机在线| 一区二区三区四区视频免费观看| 欧美乱大交xxxxx| a天堂视频在线| 亚洲综合久久av| 一级黄色电影片| 亚洲看片免费| 欧美精品尤物在线| 91九色综合| 久久人人爽人人爽爽久久| 国产精品无码白浆高潮| 亚洲天堂网中文字| 中文字幕人妻一区| 一区二区三区高清视频在线观看| 免费国产在线精品一区二区三区| 欧美电影h版| 中文字幕亚洲专区| 999国产精品视频免费| 亚洲国产综合在线| 人妻丰满熟妇aⅴ无码| 日韩 欧美一区二区三区| 一区二区不卡视频| 亚洲日本va中文字幕| 97国产一区二区精品久久呦| 国产一级片在线播放| 欧美人成免费网站| 久久久久香蕉视频| 久久日韩精品一区二区五区| 在线观看的毛片| 午夜久久黄色| 美乳视频一区二区| 国产高清日韩| 欧美一区二三区| 天堂地址在线www| 久久蜜桃一区二区| 欧美综合第一页| av在线免费一区| 日韩天堂在线观看| 黄色在线免费观看| 一区免费观看视频| 丰满大乳奶做爰ⅹxx视频| 日本中文字幕一区二区有限公司| 乱子伦一区二区| 日韩有码中文字幕在线| 国产噜噜噜噜久久久久久久久| 欧洲一区二区三区| 在线视频一区二区| 刘玥91精选国产在线观看| 日韩欧美中文第一页| 国产盗摄一区二区三区在线| 91网站最新网址| 亚洲综合在线一区二区| 国产一区二区你懂的| 小说区视频区图片区| 亚洲aaa级| 99电影网电视剧在线观看| 户外露出一区二区三区| 欧美极品美女电影一区| 北条麻妃在线| 日韩极品精品视频免费观看| www.五月天激情| 欧美日韩电影一区| 亚洲欧美偷拍视频| 亚洲一区二区欧美| 色哟哟一一国产精品| 国产亚洲污的网站| 中文字幕免费高清视频| 国产乱码精品一区二区三区五月婷| aa免费在线观看| 亚洲高清不卡| 路边理发店露脸熟妇泻火| 日韩电影免费网址| 裸模一区二区三区免费| 超碰成人在线观看| 亚洲一区二区三区视频| 欧美日韩卡一| 国产精品久久久久久久久久久久久| 国产在线美女| 欧美精品videossex性护士| 精品176二区| 少妇久久久久久| 国产视频福利在线| 亚洲香蕉成视频在线观看| 日韩av成人| 亚洲精品天天看| 欧美午夜精品一区二区| 国产精品对白| 国产精品国产三级欧美二区| 日韩精品一级| 91福利视频导航| 日韩精品一区二区三区中文字幕| 成人性生交大片免费看小说| 亚洲一区有码| 91免费看片在线| 亚洲一区二区av| 亚洲精品免费网站| www.成人在线.com| 91中文字幕一区| 亚洲精品观看| 翡翠波斯猫1977年美国| 大桥未久女教师av一区二区| 国产精品中出一区二区三区| 欧美精品中文| 久久久久久久有限公司| 欧美人与拘性视交免费看| 日本一区二区三区精品视频| 欧美三级三级| 五月婷婷一区| 亚洲成av人片乱码色午夜| 久久视频免费在线| 一区二区视频欧美| 免费看日本毛片| 久久一二三四| 日本中文字幕影院| 国产成人亚洲综合色影视| 日韩少妇一区二区| 久久人人97超碰com| 久久久视频6r| |精品福利一区二区三区| 杨钰莹一级淫片aaaaaa播放| 亚洲国产精品久久人人爱| 久久99精品波多结衣一区| 欧美在线999| 国产视频一区二区三| 精品久久久久久最新网址| 黄色在线小视频| 日韩网站免费观看| av在线小说| 清纯唯美综合亚洲| 日韩有码中文字幕在线| 丁香五月网久久综合| 日韩av影院| 亚洲欧美国产不卡| 欧美久久一区| 岳毛多又紧做起爽| 黑人巨大精品欧美黑白配亚洲| 中文字幕无人区二| 久久久噜噜噜久噜久久综合| 欧美黄色aaa| 日韩欧美国产一区二区| 在线免费a视频| 精品第一国产综合精品aⅴ| 久热av在线| 欧美激情手机在线视频 | 一区二区国产欧美| 欧美v亚洲v综合ⅴ国产v| 久草在现在线| 欧美理论电影在线观看| 美女一区网站| 99久久精品无码一区二区毛片| 日韩a级大片| 日本福利视频导航| 亚洲一区黄色| 特黄特黄一级片| 国产欧美精品国产国产专区| 欧美精品一区二区成人| 欧美色综合影院| 日本免费一区视频| 久久精品免费播放| 偷拍视频一区二区三区| 成人欧美一区二区| 日韩伦理一区| www.亚洲天堂网| 国产高清精品久久久久| 青青草华人在线视频| 精品国产精品自拍| 亚洲免费成人在线| 精品国产视频在线| 日韩成人影音| 开心色怡人综合网站| 激情文学一区| 韩国三级hd中文字幕有哪些| 亚洲国产精品高清| 日批视频免费在线观看| 亚洲精品国产精品自产a区红杏吧| 国产视频中文字幕在线观看| 国产精品视频午夜| 免费一区二区三区视频导航| 黄色激情在线视频| 国产精品一区一区三区| 亚洲精品国产精品乱码在线观看| 色综合天天综合| 午夜影院免费视频| 国a精品视频大全| 91综合久久爱com| 欧美乱做爰xxxⅹ久久久| 国产中文字幕一区| 国产免费美女视频| 在线播放中文字幕一区| eeuss影院www在线观看| 国产精品久久久久久久久久小说 | 在线观看 亚洲| 亚洲毛片在线观看| 久久电影tv| 日本一区高清不卡| 天堂成人免费av电影一区| a级片在线观看| 91高清在线观看| www黄在线观看| 国产在线不卡精品| 天天做天天爱天天综合网2021| 午夜激情av在线| 国产精品久久国产精麻豆99网站| 91激情在线观看| 久久精品人人做人人爽| 超碰国产精品一区二页| 最近免费观看高清韩国日本大全| 国产伦精一区二区三区| 久操免费在线视频| 亚洲成年人在线播放| 午夜欧美激情| 亚洲精品高清视频| 国产一区二区福利| 青娱乐91视频| 亚洲国产精品女人久久久| 在线天堂新版最新版在线8| 日本在线高清视频一区| 九九精品视频在线看| 日韩影院一区二区| 亚洲精品99久久久久| 久久爱91午夜羞羞| 中文字幕久久一区| 成人网男人的天堂| 亚洲午夜精品一区二区三区| 台湾佬中文娱乐网欧美电影| 欧洲在线视频一区| 久久er精品视频| 精品人妻在线播放| 亚洲欧美日韩精品| 国产精品色婷婷在线观看| 国产在线播放观看| 国产欧美一区二区三区网站| 国产男女裸体做爰爽爽| 4k岛国日韩精品**专区| 久久在线视频| 波多野结衣影院| 欧美日韩一级片在线观看| 丰满大乳少妇在线观看网站| 欧美午夜精品久久久久免费视| 国产在线麻豆精品观看| www.伊人久久| 久久资源免费视频| 亚洲伊人春色| 中文字幕一区二区三区四| 懂色av中文一区二区三区天美| 日本不卡三区| 蜜桃精品久久久久久久免费影院| 狠狠色狠狠色合久久伊人| 中文字幕精品无码一区二区| 久99久在线视频| 第一社区sis001原创亚洲| 完美搭档在线观看| 91精品国产综合久久久久久久|