精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

强行糟蹋人妻hd中文| 波多野结衣av一区二区全免费观看| 天天综合网久久综合网| 成人嘿咻视频免费看| 欧美电影一区二区三区| 久草热视频在线观看| 1区2区3区在线观看| 国产成人免费在线观看| 国产91色在线|| 农村妇女精品一区二区| 久久成人av| 日韩欧美国产wwwww| 欧美精品无码一区二区三区| 18网站在线观看| 国产偷国产偷亚洲高清人白洁| 91sao在线观看国产| 久久久精品少妇| 亚洲永久精品唐人导航网址| 欧美一区二区三区在线视频| 能在线观看的av| 丰满少妇久久久| av男人天堂网| 奇米精品一区二区三区四区| 久久久影视精品| 疯狂试爱三2浴室激情视频| 九九热爱视频精品视频| 亚洲成人xxx| 亚洲日本黄色片| 欧美电影免费观看| 狠狠躁18三区二区一区| 国产一级大片免费看| 亚洲麻豆精品| 国产日韩精品一区二区三区| 久久久久欧美| 人成网站在线观看| 国产精品一区二区男女羞羞无遮挡 | 欧洲亚洲免费在线| 久久久无码精品亚洲国产| 国产精品成人a在线观看| 亚洲天堂久久av| 国产精品久久久久久久无码| 波多野结衣在线一区二区 | 96精品视频在线| 欧美极品视频在线观看| **女人18毛片一区二区| www欧美日韩| 欧美色图17p| 欧美偷拍自拍| 中日韩美女免费视频网址在线观看 | 久久久久久久久久网| 爱情岛亚洲播放路线| 一区二区三区不卡在线观看| 国产人妻人伦精品| 欧美黑人猛交的在线视频| 亚洲欧美电影一区二区| 国产三级久久久| 国产精品欧美日韩| 日本中文字幕在线观看视频| 久久精品一区| 国产经典一区二区| 综合久久中文字幕| 老色鬼精品视频在线观看播放| 国产精品一区二区久久久| 最新国产中文字幕| 精品一区二区免费| 亚洲最大av网站| 亚洲AV无码乱码国产精品牛牛 | 国产伦精品一区二区三区视频免费| 国产黄色一级大片| 国产成人免费xxxxxxxx| 精品久久久久久乱码天堂| 三级视频网站在线| 欧美激情在线看| 中文字幕日韩一区二区三区不卡| 69xxx在线| 欧美日韩一区二区精品| 久久久久久久久久久久久久国产| 成人mm视频在线观看| 91精品国产色综合久久ai换脸| 四虎1515hh.com| 精品视频高潮| 有码中文亚洲精品| 18岁成人毛片| 亚洲在线网站| 国产噜噜噜噜噜久久久久久久久| 99久久精品国产一区色 | 成人精品在线观看视频| 不卡中文一二三区| 欧美国产日韩视频| 亚洲欧美另类在线视频| 激情综合色播激情啊| 国产精品久久一区二区三区| 国产日本在线观看| 亚洲瘦老头同性70tv| 91福利资源站| 亚洲女人在线观看| 台湾亚洲精品一区二区tv| 中文字幕亚洲欧美日韩2019| 青青草手机视频在线观看| 久久精品主播| 成人激情直播| av男人的天堂在线| 婷婷开心久久网| 九九热免费在线观看| 天天做夜夜做人人爱精品| 日韩日本欧美亚洲| 五月婷婷激情视频| 夫妻av一区二区| 亚洲欧美日韩国产yyy| 玖玖在线播放| 精品欧美黑人一区二区三区| 中文字幕伦理片| 亚洲国产综合在线看不卡| 国产欧美一区二区| 经典三级在线| 亚洲va天堂va国产va久| 小早川怜子一区二区三区| 国产探花一区二区| 午夜精品久久久久久久男人的天堂 | 日韩欧美亚洲国产另类| 国产美女永久免费无遮挡| 亚洲激情午夜| 99久久精品免费看国产四区| 美女写真理伦片在线看| 色乱码一区二区三区88| 精品国产人妻一区二区三区| 亚洲澳门在线| 国产精品网站视频| 裸体xxxx视频在线| 色综合天天综合网国产成人综合天 | 亚洲码在线观看| 成人在线观看毛片| 欧美亚洲黄色| 在线播放日韩av| www五月天com| 26uuu国产一区二区三区| 亚洲 自拍 另类小说综合图区| 日韩一区二区三区精品视频第3页| 国产一区二区三区在线观看网站 | 日韩视频一区二区| 国内毛片毛片毛片毛片毛片| 蜜桃精品视频在线观看| 日本一区二区三区免费观看| 欧美7777| 在线成人激情黄色| 国产女优在线播放| 中文字幕免费不卡在线| 国产理论在线播放| 成人影院在线| 成人a免费视频| 欧美精品hd| 欧美精品 日韩| 欧美老熟妇一区二区三区| 狠狠色综合日日| 国产精品一二三在线观看| 精品国产一区二区三区性色av | 久草网视频在线观看| 国产精品亚洲人在线观看| 国内自拍中文字幕| 久久aimee| 欧美中文字幕视频| 高清中文字幕一区二区三区| 欧美日韩卡一卡二| 国产va在线播放| 成人18视频日本| 免费av网址在线| 成人羞羞动漫| 91夜夜未满十八勿入爽爽影院 | 91蝌蚪视频在线| av福利在线导航| 国产成人精品综合在线观看| 在线视频一区观看| 亚洲一区二区免费在线观看| 777午夜精品福利在线观看| 日本韩国精品一区二区| 欧美婷婷六月丁香综合色| 日韩在线一卡二卡| 成人av片在线观看| 中文字幕在线观看第三页| 国产精品二区不卡| 国产精品yjizz| 欧美日韩免费观看视频| 久久九九免费视频| 凸凹人妻人人澡人人添| 欧洲精品视频在线观看| 欧美又粗又大又长| 91视视频在线观看入口直接观看www | 91av在线免费| 久久精品国产99久久6| 2018中文字幕第一页| 久久99视频| 懂色av一区二区三区在线播放| 天堂网在线最新版www中文网| 中文字幕亚洲欧美在线| 国产成人自拍一区| 欧美日韩日日骚| 日本一级淫片免费放| 欧美国产日本韩| 欧美日韩一区二区三区四区五区六区| 日韩成人午夜精品| 欧美午夜性视频| 色喇叭免费久久综合网| 久久riav| 日本成人手机在线| 国产精品wwww| 蜜桃成人365av| 日韩中文字幕视频| 欧美女同网站| 亚洲国产精品va| 国产人妖在线播放| 在线观看区一区二| 日韩欧美a级片| 亚洲视频每日更新| 欧美熟妇激情一区二区三区| 成人爱爱电影网址| 一区二区久久精品| 另类的小说在线视频另类成人小视频在线 | 日韩精品成人av| 亚洲理论在线a中文字幕| 精品国产av鲁一鲁一区| 欧美日韩中文精品| 国产精品第5页| 亚洲一二三区视频在线观看| 娇小11一12╳yⅹ╳毛片| 国产婷婷色一区二区三区四区 | 亚洲狠狠爱一区二区三区| 激情无码人妻又粗又大| 久久亚洲欧美国产精品乐播| 69亚洲乱人伦| 国产不卡在线一区| 古装做爰无遮挡三级聊斋艳谭| 日本aⅴ免费视频一区二区三区| 日本一区二区黄色| 99国产精品| 成人一级生活片| 欧美.日韩.国产.一区.二区| 国产日本欧美在线| 久久中文亚洲字幕| 亚洲精品日韩在线观看| 欧美色爱综合| 神马影院一区二区| 亚州综合一区| 久久另类ts人妖一区二区| 粉嫩精品导航导航| 国模精品一区二区三区| 日韩美脚连裤袜丝袜在线| 久久久久久久久久久久久久久久av| 国产精品巨作av| 国模精品娜娜一二三区| 日韩av中文字幕一区| 久久精品日韩精品| 西野翔中文久久精品字幕| 久久久久se| 精品国产一区二区三区噜噜噜| 欧美系列一区| 精品一区二区三区在线| 一卡二卡3卡四卡高清精品视频| 日韩片欧美片| 国产精品一二三在线观看| 国产一区亚洲| 欧美 日韩 国产在线观看| 亚洲在线黄色| 亚洲国产成人va在线观看麻豆| 日韩欧美在线观看免费| 亚洲欧美国产三级| 国产性生活网站| 欧美性猛交xxxx免费看漫画 | 久久精品国产综合精品| 九九热爱视频精品视频| 一本一道久久a久久综合精品| 影视亚洲一区二区三区| 久久亚洲精品无码va白人极品| 在线亚洲自拍| 美女网站色免费| 国产黄人亚洲片| 日本少妇毛茸茸| 国产欧美日韩在线| 欧美激情精品久久| 一本色道亚洲精品aⅴ| 亚洲午夜无码久久久久| 欧美一区二区视频在线观看| 无码h黄肉3d动漫在线观看| 亚洲无av在线中文字幕| 日韩av毛片| 国产精品91久久久| 中文字幕一区图| 色综合久久av| 1024日韩| 天天操天天干天天做| 99久久精品免费看| 欧美视频www| 欧美午夜视频一区二区| 国产情侣一区二区| 亚洲色图在线观看| 亚洲丝袜一区| 国产精品入口福利| 久久久伦理片| 小说区视频区图片区| 亚洲综合激情| 一个人看的视频www| 久久久精品黄色| 久草免费在线观看视频| 欧美日韩亚洲综合一区二区三区| 熟妇人妻一区二区三区四区 | 日本一区二区免费高清视频| 国产精品久久久久久模特| jizz欧美性11| 久久综合九色综合97婷婷女人| 免费看一级大片| 在线看国产一区| 少妇精品视频一区二区| 久久国产精品久久精品| 不卡亚洲精品| 久久久一本精品99久久精品| 亚洲视频精品| 亚洲男人天天操| www 日韩| 欧美一级淫片aaaaaaa视频| 中文在线综合| 99热都是精品| 精品一区免费av| 日本免费www| 91激情在线视频| 天堂a√在线| 97在线精品国自产拍中文| 欧美2区3区4区| 在线观看福利一区| 美国毛片一区二区三区| 女人十八毛片嫩草av| 色妹子一区二区| 日本大片在线观看| 亚州欧美日韩中文视频| 国产精品17p| 精品久久久久久无码中文野结衣| 国产成人亚洲综合a∨婷婷| 国产精品丝袜一区二区| 91精品综合久久久久久| 黄色国产网站在线播放| 国产日韩精品入口| 久久资源中文字幕| 在线观看国产中文字幕| 国产精品久久久久久妇女6080| 亚洲天天综合网| 色妞色视频一区二区三区四区| jizz欧美| 黄色免费高清视频| 精品亚洲porn| 综合五月激情网| 欧美成人精品二区三区99精品| 日本中文字幕中出在线| 国产高清一区视频| 亚洲午夜精品久久久久久app| 制服丝袜在线第一页| 午夜亚洲国产au精品一区二区| 无码精品在线观看| 欧美一二三视频| sdde在线播放一区二区| 天天综合网久久| 一区二区三区免费在线观看| 丰满大乳国产精品| 91国内在线视频| 欧美猛男做受videos| the porn av| 亚洲美女精品一区| 欧美一区,二区| 日韩av三级在线观看| 久久看人人摘| 亚洲熟妇一区二区| 色综合久久88色综合天天免费| 成人免费一区二区三区视频网站| 91精品久久久久久综合乱菊| 欧美三区美女| 97伦伦午夜电影理伦片| 欧美视频一区二区| 在线中文字幕第一页| 久久久久久久久久久久久久一区| 蜜桃av一区二区在线观看| 少妇久久久久久被弄高潮| 亚洲精品视频久久| 99精品美女视频在线观看热舞| 亚洲 欧美 综合 另类 中字| 久久久不卡网国产精品一区| 国产精品亚洲lv粉色| 国外成人在线播放| 欧美精品系列| 日本精品一二三区| 欧美性色综合网| 欧美videossex| 亚洲精品国产精品国自产| 丰满少妇久久久久久久| 国产精品51麻豆cm传媒| 欧美激情手机在线视频 | 国产精品又粗又长| 国产精品久久久久久久浪潮网站| 午夜精品久久久久久久96蜜桃 | 国产精品nxnn| 老司机久久精品| 欧美性猛交xxxx偷拍洗澡| caoporn97在线视频| 日产精品一线二线三线芒果|