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

給iOS開發AIR Native擴展的20條建議

移動開發
這篇文章寫得非常好,基本包括了目前ANE開發需要的所有注意事項,感謝作者Richard Lord。文中我會以作者的口吻來翻譯。

過去的三個月中我為iOS平臺創建了三個AIR Native Extension的擴展(在Github中可以找到代碼),這些擴展全部被用在我們的游戲Stick Cricket Super Sixes中,同時我們也總結了很多經驗。雖然我記得并不全面,但下面這幾條建議,可以給很多打算開發ANE項目的開發者助以一臂之力。

文檔

1. 開始

這兩篇文檔對初學者很有幫助,如果你不知道該如何起步,可以從閱讀這兩篇文檔開始。在網絡上也有很多好的文章,只要Google一下就行了。

Extending Adobe Air

AIR Native Extension Example: iBattery for iOS

2. 閱讀Adobe官方文檔

大部分的開發所需的資料在這篇 Adobe’s documentation 中都可以找得到。

編寫Actionscript代碼

3. 認真編寫 Actionscript API

確保你的Actionscript接口是你的項目中想要的。不要往Actionscript里被動地照搬iOS接口,要像編寫常規Actioscript類那樣定義你的接口。

記住,后期如果修改原生代碼只會影響到ANE擴展本身,但如果修改Actionscript接口則會影響到所有使用該ANE的項目。所以在前期要盡可能完善地定義你的Actionscript接口。

4. 盡可能在Actionscript一端做錯誤檢查

為了避免錯誤的發生,你需要在調用ANE方法的時候做參數合法性的檢查,你可以等到調用原生代碼時再做檢查,但如果提前在調用Actionscript接 口的時候就做檢查會更簡單一些。如果你能保證每次調用原生代碼時都不會出錯,比如參數個數和參數類型,那么完全可以只在Actionscript里做判 斷。

當然,如果你習慣于在C里寫錯誤檢查,當然可以。我個人更喜歡在Actionscript里做這件事情。

5. 創建一個原生類的替身

即使你打算僅為iOS寫擴展,我也建議你創建一個原生類庫的替身。用純Actionscript代碼創建這個替身,這樣它就可以為所有的平臺所用。在這個 替身里按照iOS原生接口定義一套純Actionscript接口方法,即使在調用的時候拋異常或者返回空值也沒有關系,至少它是合法的 Actionscript調用,而且可以在其他平臺比如桌面上測試使用。

如果不用這樣一個替身,你就每次只能在iOS設備上做測試,這樣會讓開發測試工作極為痛苦。相反,如果使用這個替身,你可以在桌面上快速發布應用來測試那些與設備不相關的功能和模塊。

 

Adobe Air Logo

 

編寫原生代碼

6. 使用Objective-C來實現蘋果的程序接口

你并不是必須要使用Objective-C,但是如果想要實現蘋果的程序接口,用Objective-C會很方便。否則你需要用C或者C++。

7. 把為AIR編寫的接口方法寫在.m文件里

AIR和原生代碼之間的接口是用C寫的,所以你的原生代碼需要引用一個包含C代碼的文件來實現這些接口。如果你把接口放在.c文件中,那么你不能使用任何 Objective-C功能(比如你無法用objective-c的語法去調用objective-c接口),但是如果你把接口放在了.m文件就可以。所 以用.m文件會更方便一些。

8. 包含AIR原生接口的.m文件不需要.h頭文件

但是你需要在XCode項目設置中的警告選項里把”missing function prototypes”這一項給關掉。

9. 為initializer和finalizer方法起一個獨一無二的名字

很多ANE的例子都使用了”extInitializer”和”extFinalizer”來給擴展的入口和出口函數命名。但如果在項目中使用多個ANE擴展,這樣會導致命名沖突。所以給入口和出口函數起一個獨一無二的名字。

10. 在項目中使用宏

在定義接口的時候,你可能需要重復輸入很多遍類似這樣的代碼來定義函數

  1. FREObject someFunction(FREContext context, void* functionData, uint32_t argc, FREObject argv[])  

我建議使用宏定義來代替所有這些重復的定義方式。你可以在這個源文件中找到宏定義的例子。(感謝David Wagner的提供)

11. 把“Enable linking with shared libraries”設置成yes

網絡上很多關于在XCode里如何設置這個選項的討論,有人說”no”有人說”yes”。基本上,說設置成”yes”的說明你的應用在發布的時候需要鏈接 外部類庫,這個選項就是這個意思。但是這也意味著你在發布含有此擴展的AIR應用時,你必須要告訴編譯器你的iOS SDK在哪里,這樣你才可以使用那些類庫。具體看下面第18條。

如果你得到這樣一個編譯錯誤

  1. ld warning: unexpected srelocation type 9 

則你可能要么忘了開啟這個選項,要么沒有給編譯器指明SDK的位置。

#p#

12. 小心使用線程

你的原生擴展不能在除主線程之外其他線程創建Actionscript對象,而且必須要從AIR端調用。這樣會導致在Objective-c中使用塊的時 候問題重重。然而,你可以通過一種途徑來達到這個目的,那就是使用Actionscript ExtensionContext事件派發機制。方法如下:

1,在一個線程中,創建一個原生對象并儲存數據。

2,派發事件給ExtensionContext,為下一步傳送必要的細節。

3,在事件響應的方法中,調用原生接口來獲得這個原生對象。

4,在這個被調用的原生方法里,利用該原生對象創建一個Actionscript對象。

13. 創建原生view對象

AIR應用是在一個標準的window對象里運行的,你可以通過下面的方法獲得這個window對象:

  1. [UIApplication sharedApplication].keyWindow 

得到window對象后你可以給它添加subviews來顯示原生的view對象。

編譯擴展

14. 批處理編譯和測試

當我開發Game Center擴展的時候我創建了一個簡單的AIR應用來測試ANE。

我創建了一個ANT腳本來編譯整個擴展(編譯原生C類,編譯AS3類,編譯AS3原生替身類,并把它們全部打包入ANE里)。

結果就是,在Eclipse里點擊一次,我就可以編譯和測試整個項目,下一步就是拖入設備直接測試應用了(XCode里的Organiser可以很方便的 實現這步)。總共花了差不多10秒鐘的時間來打包,雖然仍然比理想的多了9秒,但已經比我見過的大多數工作流都要好很多。

也許用Flash Builder有更好的方法(因為我用的是FDT),而且你當然不必使用ANT,任何編譯工具都可以達到這個效果。但是你需要盡可能的使用流水線的方式來編譯和測試這個流程。如果你需要這些代碼,可以在Game Center extension project里找到。

15. 使用第三方類庫

如果你正在擴展里使用一個第三方類庫(比如在Flurry extension里的Flurry統計類庫),你需要在編譯的時候使用“-platform iPhone-ARM” 參數來引用這個類庫。

16. 你可能需要使用platform.xml

如果你會用到任何一個但不是大多數的iOS SDK類庫,你需要創建一個platform.xml文件來指明你需要使用的類庫,以及應用所需要的最小iOS版本。我為每一個擴展都創建了一個platform.xml文件,因為在使用AIR3.1編譯時會出現一個有關未知最小iOS版本的警告,使用這個文件會隱藏這個警告。

打包應用

17. 如果IDE編譯的時候并不依賴原生擴展,則你的應用需要引用擴展替身swc來保證運行成功

這個SWC里包括了一整套與原生擴展相同的Actionscript接口,所以你可以使用它進行編譯,并且在開發的時候用來測試。當然,不依賴原生擴展的IDE不會正確地發布移動應用,但你可以用我介紹過的那種批處理編譯腳本來實現最終的正常編譯。

18. 發布AIR應用的時候,指明需要引用的iOS SDK地址

默認情況下,AIR編譯器會使用iOS SDK 4.0來編譯應用。如果你使用了這個版本里所不包括的新功能,則編譯的時候就會出錯。這時需要指明iOS SDK的新版本位置,從而實現對新功能類庫的引用。在這篇文章中查看詳細信息。在Flash Builder里,在配置原生擴展的某個面板中可以進行這個設置,但如果你使用命令行來編譯,可以使用-platformsdk標簽來指定iOS SDK的路徑。

19. ld: warning: ARM function not 4-byte aligned

在編譯應用的時候你可能會遇到多處下面這樣的警告:

1ld: warning: ARM function not 4-byte aligned

這些只是警告,不用去理它。4位對齊只是一個優化,并非是必須的。

最后的最后

20. 讓你的原生擴展更加通用

當完成了擴展的開發,你可以有三個選擇:

1, 只讓自己使用。

2, 向其他開發者開源。

3, 賣給其他開發者。

你可以問問自己,是什么讓你的應用獨一無二。如果原因不是你的原生擴展(實際上很少是因為這個),那么請選擇第二個或者第三個,如果每個人都這么做,你也會從中受益。

另外,讓更多人從你的擴展中受益,可以讓Adobe AIR這項技術在移動開發領域里更加強大和穩定。這會鼓勵其他的開發者去使用AIR,也會鼓勵Adobe繼續開發和改進它。

在Stick Sports我們選擇了第二項,因為比起花時間來運營我們的原生擴展,我們更愿意花時間來運營和支持我們的游戲。

【編輯推薦】

  1. Adobe AIR安裝官方教程
  2. 在Ubuntu版本的Linux下安裝Adobe AIR
  3. 構建Adobe AIR for TV本機擴展
責任編輯:冰凝兒 來源: iteye
相關推薦

2011-05-30 15:44:07

敏捷開發

2011-11-16 16:21:09

AdobeAIR

2015-05-12 14:05:49

谷歌開發者

2013-02-21 13:14:00

移動游戲開發者開發商

2015-08-26 10:01:20

iOS開發

2011-11-16 15:14:57

AdobeAIRiOS設備

2015-09-28 10:09:05

程序員新手

2012-12-28 13:07:45

Bad HoteliOS開發者

2015-07-10 12:38:30

手游開發工作建議

2022-06-15 15:30:29

Linux新用戶建議

2009-02-18 11:10:40

c++忠告方法

2013-03-12 10:26:41

PHP編程語言

2010-11-05 09:16:56

PHP

2020-01-28 18:48:27

程序員JavaScript編程語言

2012-03-13 16:16:39

AdobeAIR for TV

2011-07-07 10:24:22

移動應用開發

2012-04-01 15:03:39

大型項目開發者

2012-12-28 14:50:52

應屆畢業生

2011-10-09 16:27:39

移動互聯網創業

2019-04-11 17:24:48

數據科學可視化白皮書
點贊
收藏

51CTO技術棧公眾號

欧美日韩中字一区| 久久精品人人做人人爽97 | 含羞草www国产在线视频| 久久99精品久久久| 欧美国产日韩精品| 国产三级av在线播放| 4438五月综合| 精品露脸国产偷人在视频| 日韩欧美在线观看强乱免费| 国产女无套免费视频| 亚洲伦理精品| 色偷偷9999www| zjzjzjzjzj亚洲女人| 欧美三区四区| 亚洲一区二区三区中文字幕在线| 蜜桃日韩视频| 精品人妻无码一区二区| 久久婷婷丁香| 欧美另类极品videosbest最新版本| 国产精品无码网站| 日本免费一区二区视频| 在线视频亚洲一区| 免费看毛片的网址| 欧美a免费在线| 久久久久久久久99精品| av资源一区二区| 中文字幕+乱码+中文乱码www| 午夜国产一区| 日韩中文理论片| 日韩av在线看免费观看| 丁香婷婷成人| 欧美一区二区三区在线看| aⅴ在线免费观看| 国产精品国精产品一二| 亚洲天堂免费看| 色综合久久久久久久久五月| 成人h动漫精品一区二区无码| 日本女人一区二区三区| 欧美自拍视频在线观看| 九九视频免费在线观看| 97精品一区| 中文在线资源观看视频网站免费不卡| 中文字幕在线视频播放| 久久久精品区| 欧美高清精品3d| 色婷婷成人在线| av在线一区不卡| 色88888久久久久久影院按摩| 韩日视频在线观看| 黄色影院在线看| 亚洲精品国产无套在线观| 一区二区视频在线观看| av中文在线| 国产精品视频观看| 亚洲不卡一卡2卡三卡4卡5卡精品| 国产综合视频在线| 国产成人免费视频网站高清观看视频| 成人中文字幕+乱码+中文字幕| 国产伦精品一区二区三区视频网站| 999亚洲国产精| 午夜精品久久久久久久久久久久 | 亚洲特级毛片| 欧美黑人又粗大| 欧美激情精品久久| 激情文学一区| 欧美一级大胆视频| 免费黄色片视频| 日本va欧美va精品| 国产一区私人高清影院| 国产熟女一区二区三区五月婷| 国产在线观看一区二区| 91久久偷偷做嫩草影院| 亚洲美女综合网| jizz一区二区| 日本三级中国三级99人妇网站| 九九九伊在人线综合| 中文字幕第一区| 青青草综合视频| 9999热视频在线观看| 色综合久久久久网| 亚洲免费av一区| 亚洲精品福利| 亚洲老头老太hd| 综合 欧美 亚洲日本| 欧美成人久久| 国内精品400部情侣激情| 九一国产在线观看| 久久国产福利国产秒拍| 成人蜜桃视频| 国产中文在线视频| 亚洲蜜臀av乱码久久精品蜜桃| 人妻av无码专区| 美女福利一区二区三区| 欧美乱妇15p| www.17c.com喷水少妇| 国产一区二区三区四区二区 | 九九九九九九精品| 成a人片在线观看www视频| 亚洲欧美日韩中文播放| www.中文字幕在线| 亚洲精品伊人| 日韩电影中文字幕在线| 日韩三级久久久| 亚洲三级观看| 成人精品视频久久久久| 无码国产精品一区二区色情男同 | zzijzzij亚洲日本少妇熟睡| 奇米视频888战线精品播放| 国内精品久久久久久野外| 岛国av在线不卡| av噜噜在线观看| 婷婷成人综合| 欧美俄罗斯性视频| 中文字幕a级片| 99久久er热在这里只有精品15| 一区二区不卡在线视频 午夜欧美不卡'| 任你弄在线视频免费观看| 欧洲精品视频在线观看| 中国av免费看| 中文字幕亚洲综合久久五月天色无吗''| 97成人在线视频| 国产富婆一级全黄大片| 国产午夜亚洲精品羞羞网站| 美女扒开大腿让男人桶| 国产亚洲精aa在线看| 亚洲夜晚福利在线观看| 欧美精品二区三区| 国产成人在线视频网站| 亚洲制服中文| 欧美在线va视频| 日韩成人激情在线| 久久免费视频99| 狠狠色丁香久久婷婷综| 天天综合色天天综合色hd| 2022成人影院| 日韩av在线一区| www.99re7.com| 国产成人av一区二区三区在线观看| 亚洲国产高清国产精品| 亚洲日本网址| 亚洲三级免费看| 东京热一区二区三区四区| 97久久超碰国产精品电影| 国产91沈先生在线播放| 精品国产亚洲一区二区在线观看| 色婷婷综合久久久久中文字幕1| 日韩精品一区不卡| 久久婷婷国产综合国色天香| 欧美 日本 亚洲| 99精品国产高清一区二区麻豆| 久久综合亚洲社区| 国产成人精品a视频| 亚洲精品国久久99热| 亚洲 自拍 另类 欧美 丝袜| 一区二区三区毛片免费| 91久久精品www人人做人人爽| 亚洲区欧洲区| 欧美大肚乱孕交hd孕妇| 国产午夜小视频| 成人a区在线观看| 欧美极品欧美精品欧美| 亚洲免费福利一区| 国产精品久久久久久av| 91激情在线| 欧美一区二区福利在线| 欧美成人精品一区二区免费看片| 国产一区二区导航在线播放| 91视频 - 88av| 99香蕉久久| 欧洲日本亚洲国产区| 国产视频第一区| 欧美日韩视频在线第一区 | 成人h视频在线观看播放| 日本中文字幕电影在线免费观看| 制服丝袜成人动漫| 五月天婷婷色综合| 99精品国产99久久久久久白柏| 91精品91久久久中77777老牛| 国产精品一国产精品| 91精品久久久久久久久久久久久久 | 欧美网色网址| 欧美在线视频一区二区| aaa在线免费观看| 欧美一区二区三区视频在线观看| 波多野结衣久久久久| 国产不卡免费视频| 国产亚洲精品网站| 91麻豆精品国产91久久久平台 | 97婷婷涩涩精品一区| 久久久资源网| 欧美一区二区三区视频免费| 久久久国产高清| 国产精品伦理一区二区| 国内精品免费视频| 免费精品99久久国产综合精品| 国产女人18毛片| 亚洲精品亚洲人成在线观看| 亚洲aⅴ男人的天堂在线观看| segui88久久综合9999| 在线电影中文日韩| 男人天堂综合网| 欧美日韩久久一区| 亚洲精品1区2区3区| 亚洲色图20p| 男人天堂av电影| 国产91在线观看| 天天色综合天天色| 一本久久综合| www.-级毛片线天内射视视| 亚洲69av| 国产精品免费在线| 视频91a欧美| 国产精品96久久久久久| 久久一卡二卡| 久久精品视频免费播放| 免费观看成年在线视频网站| 精品免费一区二区三区| 在线观看免费视频a| 欧美日韩国产丝袜另类| 免费三片在线播放| 中文字幕一区日韩精品欧美| 精品少妇人妻一区二区黑料社区 | 亚洲综合精品四区| 国产一级不卡视频| 欧美视频免费| 欧美高清性xxxxhdvideosex| 久草精品视频| 岛国一区二区三区高清视频| 99er精品视频| 91久久在线播放| 日韩欧美激情| 国产精品手机播放| 韩国成人在线| 国产成人精品日本亚洲| 中日韩脚交footjobhd| 97视频在线观看亚洲| 2021天堂中文幕一二区在线观| 欧美成人午夜激情在线| 国产网站在线免费观看| 日韩三级成人av网| 免费看a在线观看| 色偷偷亚洲男人天堂| 亚洲视频tv| 日韩在线视频播放| 老司机免费在线视频| 久久精品夜夜夜夜夜久久| 国产人成网在线播放va免费| 久久久999精品| av网站在线免费| 欧美成人精品在线视频| 四虎亚洲成人| 国内精品久久久久久| 97天天综合网| 热门国产精品亚洲第一区在线| 麻豆理论在线观看| 日本欧美黄网站| 91tv亚洲精品香蕉国产一区| 国产一区视频在线播放| 精品视频91| 草莓视频一区| 婷婷综合电影| 五月天亚洲综合情| 99精品电影| 久久久久久久香蕉| 一本色道精品久久一区二区三区| 国产男女在线观看| 美女高潮久久久| japan高清日本乱xxxxx| 成人福利视频网站| 国内精品久久99人妻无码| 国产午夜精品一区二区| 日本成人精品视频| 亚洲欧美另类久久久精品| 国产成人精品a视频一区| 日韩欧美福利视频| 亚洲一区二区色| 精品久久人人做人人爽| 青青草在线播放| 色小说视频一区| 日韩另类在线| 国产精品∨欧美精品v日韩精品| 国产一区二区主播在线| 成人综合国产精品| 天海翼精品一区二区三区| 日韩精品久久久| 欧美日本二区| 免费裸体美女网站| 国产一区二区看久久| 中文字幕av网址| 亚洲男人的天堂av| 免费黄色网址在线| 91精品在线一区二区| 飘雪影院手机免费高清版在线观看| 精品国偷自产在线| 小早川怜子影音先锋在线观看| 国产欧美日韩高清| 九九热hot精品视频在线播放| 亚洲午夜精品久久| 亚洲理论在线| 激情成人在线观看| 国产日韩v精品一区二区| 久久久国产精华液| 欧美视频三区在线播放| 免费观看国产精品| 精品国产欧美成人夜夜嗨| 麻豆mv在线看| 成人动漫在线视频| 久久影视一区| 天天摸天天碰天天添| 国产成人在线影院 | 国产高清欧美| 国产亚洲天堂网| 成人性色生活片| 午夜三级在线观看| 欧美丝袜第一区| 韩国av永久免费| 裸体女人亚洲精品一区| 97成人超碰| 欧美精品一区在线发布| 激情欧美国产欧美| 国内av免费观看| 中文字幕一区免费在线观看| 国产suv精品一区二区33| 亚洲国产成人精品女人久久久| 黄色网页在线看| 国产精品极品美女粉嫩高清在线| 美女午夜精品| 97在线国产视频| 国产xxx精品视频大全| 亚洲区一区二区三| 欧美日韩一级黄| 国产高清在线| 国产999精品视频| 思热99re视热频这里只精品 | 美女在线视频免费| 国产精品 日韩| 欧美精品麻豆| 特种兵之深入敌后| 一区二区三区在线免费视频| 一级久久久久久久| 日韩在线不卡视频| 日韩黄色三级| 国产卡一卡二在线| 国产精品原创巨作av| 老熟妇高潮一区二区三区| 欧美日韩国产天堂| 免费av网站在线看| 91中文字幕在线观看| 欧美国产日本| 天堂va欧美va亚洲va老司机| 一区二区日韩av| 蜜桃久久一区二区三区| 欧美激情在线有限公司| 成人福利一区| 久久久久久久久久久视频| 久久―日本道色综合久久| 日本熟妇色xxxxx日本免费看| 亚洲黄色www| 吞精囗交69激情欧美| 亚州欧美一区三区三区在线| 久久99精品久久久久久动态图| 色婷婷在线视频观看| 精品美女一区二区| 伊人久久视频| 亚洲国产精品www| 国产精品影音先锋| 亚洲男人第一av| 伊人一区二区三区久久精品| 性欧美video另类hd尤物| 特大黑人娇小亚洲女mp4| av动漫一区二区| 无码人妻精品一区二区| 最新国产精品拍自在线播放| 欧美视频三区| 欧美三级一级片| 中国色在线观看另类| 精品国产乱码一区二区三| 午夜精品福利电影| 不卡一区2区| 日本wwwwwww| 一本大道久久a久久综合| 在线中文资源天堂| 国产精品av一区| 久久综合影视| 少妇影院在线观看| 亚洲免费伊人电影在线观看av| 久久精品 人人爱| 日韩欧美不卡在线| 欧美极品少妇xxxxⅹ高跟鞋| 国产丰满果冻videossex| 日韩av免费看| 欧美日韩国产成人精品| 成年人免费观看视频网站| 91精选在线观看| 色综合一本到久久亚洲91| 女女百合国产免费网站| 久久一区二区视频| 国产高清免费观看| 国产精品羞羞答答| aa亚洲婷婷|