|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
由于封闭文档写的相当好在遇到新框架的时候弄明白框架的功能去文档里搜搜框架的ProgrammingGuide很有用要弄明白框架类的继承结构写iOS的程序不一定都是用OBJC已往的三个月中我为iOS平台创立了三个AIRNativeExtension的扩大(在Github中能够找到代码),这些扩大全体被用在我们的游戏StickCricketSuperSixes中,同时我们也总结了良多履历。固然我记得其实不周全,但上面这几条倡议,能够给良多盘算开辟ANE项目标开辟者助以落井下石。
————-
文档
————-
1.入手下手
这两篇文档对初学者很有匡助,假如你不晓得该怎样起步,能够从浏览这两篇文档入手下手。在收集上也有良多好的文章,只需Google一下就好了。
•ExtendingAdobeAir
•AIRNativeExtensionExample:iBatteryforiOS
2.浏览Adobe官方文档
年夜部分的开辟所需的材料在这篇Adobe’sdocumentation中都能够找失掉。
——————-
编写Actionscript代码
——————-
3.仔细编写ActionscriptAPI
确保你的Actionscript接口是你的项目中想要的。不要往Actionscript里主动地照搬iOS接口,要像编写惯例Actioscript类那样界说你的接口。
记着,前期假如修正原生代码只会影响到ANE扩大自己,但假如修正Actionscript接口则会影响到一切利用该ANE的项目。以是在后期要尽量完美地界说你的Actionscript接口。
4.尽量在Actionscript一端做毛病反省
为了不毛病的产生,你必要在挪用ANE办法的时分做参数正当性的反省,你能够比及挪用原生代码时再做反省,但假如提早在挪用Actionscript接口的时分就做反省会更复杂一些。假如你能包管每次挪用原生代码时都不会堕落,好比参数个数和参数范例,那末完整能够只在Actionscript里做判别。
固然,假如你习气于在C里写毛病反省,固然能够。我团体更喜好在Actionscript里做这件事变。
5.创立一个原生类的替人
即便你盘算仅为iOS写扩大,我也倡议你创立一个原生类库的替人。用纯Actionscript代码创立这个替人,如许它就能够为一切的平台所用。在这个替人里依照iOS原生接口界说一套纯Actionscript接口办法,即便在挪用的时分抛非常大概前往空值也没有干系,最少它是正当的Actionscript挪用,并且能够在其他平台好比桌面上测试利用。
假如不必如许一个替人,你就每次只能在iOS设备上做测试,如许会闪开发测试事情极其疾苦。相反,假如利用这个替人,你能够在桌面上疾速公布使用来测试那些与设备不相干的功效和模块。
—————-
编写原生代码
—————-
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项目设置中的告诫选项里把”missingfunctionprototypes”这一项给关失落。
9.为initializer和finalizer办法起一个举世无双的名字
良多ANE的例子都利用了”extInitializer”和”extFinalizer”来给扩大的出口和出口函数定名。但假如在项目中利用多个ANE扩大,如许会招致定名抵触。以是给出口和出口函数起一个举世无双的名字。
10.在项目中利用宏
在界说接口的时分,你大概必要反复输出良多遍相似如许的代码来界说函数- FREObjectsomeFunction(FREContextcontext,void*functionData,uint32_targc,FREObjectargv[])
复制代码 我倡议利用宏界说来取代一切这些反复的界说体例。你能够在这个源文件中找到宏界说的例子。(感激DavidWagner的供应)
11.把“Enablelinkingwithsharedlibraries”设置成yes
收集上良多关于在XCode里怎样设置这个选项的会商,有人说”no”有人说”yes”。基础上,说设置成”yes”的申明你的使用在公布的时分必要链接内部类库,这个选项就是这个意义。可是这也意味着你在公布含有此扩大的AIR使用时,你必需要告知编译器你的iOSSDK在那里,如许你才可使用那些类库。详细看上面第18条。
假如你失掉如许一个编译毛病- ldwarning:unexpectedsrelocationtype9
复制代码 则你大概要末忘了开启这个选项,要末没有给编译器指明SDK的地位。
12.当心利用线程
你的原生扩大不克不及在除主线程以外其他线程创立Actionscript对象,并且必需要从AIR端挪用。如许会招致在Objective-c中利用块的时分成绩重重。但是,你能够经由过程一种路子来到达这个目标,那就是利用ActionscriptExtensionContext事务派发机制。办法以下:
1,在一个线程中,创立一个原生对象并贮存数据。
2,派发事务给ExtensionContext,为下一步传送需要的细节。
3,在事务呼应的办法中,挪用原生接口来取得这个原生对象。
4,在这个被挪用的原生办法里,使用该原生对象创立一个Actionscript对象。
13.创立原生view对象
AIR使用是在一个尺度的window对象里运转的,你能够经由过程上面的办法取得这个window对象:- [UIApplicationsharedApplication].keyWindow
复制代码 失掉window对象后你能够给它增加subviews来显现原生的view对象。
——————–
编译扩大
——————–
14.批处置编译和测试
当我开辟GameCenter扩大的时分我创立了一个复杂的AIR使用来测试ANE。
我创立了一个ANT剧本来编译全部扩大(编译原生C类,编译AS3类,编译AS3原生替人类,并把它们全体打包进ANE里)。
了局就是,在Eclipse里点击一次,我就能够编译和测试全部项目,下一步就是拖进设备间接测试使用了(XCode里的Organiser能够很便利的完成这步)。统共花了差未几10秒钟的工夫来打包,固然仍旧比幻想的多了9秒,但已比我见过的年夜多半事情流都要好良多。
大概用FlashBuilder有更好的办法(由于我用的是FDT),并且你固然不用利用ANT,任何编译工具都能够到达这个效果。可是你必要尽量的利用流水线的体例来编译和测试这个流程。假如你必要这些代码,能够在GameCenterextensionproject里找到。
15.利用第三方类库
假如你正在扩大里利用一个第三方类库(好比在Flurryextension里的Flurry统计类库),你必要在编译的时分利用“-platformiPhone-ARM”参数来援用这个类库。
16.你大概必要利用platform.xml
假如你会用就任何一个但不是年夜多半的iOSSDK类库,你必要创立一个platform.xml文件来指明你必要利用的类库,和使用所必要的最小iOS版本。我为每个扩大都创立了一个platform.xml文件,由于在利用AIR3.1编译时会呈现一个有关未知最小iOS版本的告诫,利用这个文件会埋没这个告诫。
—————–
打包使用
—————–
17.假如IDE编译的时分其实不依附原生扩大,则你的使用必要援用扩大替人swc来包管运转乐成
这个SWC里包含了一整套与原生扩大不异的Actionscript接口,以是你可使用它举行编译,而且在开辟的时分用来测试。固然,不依附原生扩大的IDE不会准确地公布挪动使用,但你能够用我先容过的那种批处置编译剧本来完成终极的一般编译。
18.公布AIR使用的时分,指明必要援用的iOSSDK地点
默许情形下,AIR编译器会利用iOSSDK4.0来编译使用。假如你利用了这个版本里所不包含的新功效,则编译的时分就会堕落。这时候必要指明iOSSDK的新版本地位,从而完成对新功效类库的援用。在这篇文章中检察具体信息。在FlashBuilder里,在设置原生扩大的某个面板中能够举行这个设置,但假如你利用命令行来编译,可使用-platformsdk标签来指定iOSSDK的路径。
19.ld:warning:ARMfunctionnot4-bytealigned
在编译使用的时分你大概会碰到多处上面如许的告诫:- ld:warning:ARMfunctionnot4-bytealigned
复制代码 这些只是告诫,不必往理它。4位对齐只是一个优化,并不是是必需的。
—————–
最初的最初
—————–
20.让你的原生扩大加倍通用
当完成了扩大的开辟,你能够有三个选择:
1,只让本人利用。
2,向其他开辟者开源。
3,卖给其他开辟者。
你能够问问本人,是甚么让你的使用举世无双。假如缘故原由不是你的原生扩大(实践上很少是由于这个),那末请选择第二个大概第三个,假如每一个人都这么做,你也会从中受害。
别的,让更多人从你的扩大中受害,可让AdobeAIR这项手艺在挪动开辟范畴里加倍壮大和不乱。这会勉励其他的开辟者往利用AIR,也会勉励Adobe持续开辟和改善它。
在StickSports我们选择了第二项,由于比起花工夫来运营我们的原生扩大,我们更乐意花工夫来运营和撑持我们的游戏。
如果你对iPhoneDevelopment有兴趣,以下是入门门槛供参考:首先你要有一台Mac电脑(因为iPhoneApp使用Mac平台内建的Xcode开发工具),网上也有在Windows下搭设开发环境的教程,请大家自行谷歌一下, |
|