课程咨询 :18487146383     QQ:570023382

长沙ios培训 > 达内新闻 > 给iOS开发AIR原生扩展建议(下)
  • 给iOS开发AIR原生扩展建议(下)

    发布:长沙ios培训      来源:达内新闻      时间:2016-03-10

  • 长沙ios培训之所以把这些知识点分开来分享,是希望减少篇幅,这样大家才能够慢慢学习,减少疲劳感。

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

    网络上很多关于在XCode里如何设置这个选项的讨论,有人说”no”有人说”yes”。基本上,说设置成”yes”的说明你的应用在发布的时候需要链接 外部类库,这个选项就是这个意思。但是这也意味着你在发布含有此扩展的AIR应用时,你必须要告诉编译器你的iOS SDK在哪里,这样你才可以使用那些类库。具体看下面第18条。

    如果你得到这样一个编译错误

    Objective-C

    ld warning: unexpected srelocation type 9

    1

    ld warning: unexpected srelocation type 9

    则你可能要么忘了开启这个选项,要么没有给编译器指明SDK的位置。

    12. 小心使用线程

    你的原生扩展不能在除主线程之外其他线程创建Actionscript对象,而且必须要从AIR端调用。这样会导致在Objective-c中使用块的时 候问题重重。然而,你可以通过一种途径来达到这个目的,那就是使用Actionscript ExtensionContext事件派发机制。方法如下:

    1、在一个线程中,创建一个原生对象并储存数据。

    2、派发事件给ExtensionContext,为下一步传送必要的细节。

    3、在事件响应的方法中,调用原生接口来获得这个原生对象。

    4、在这个被调用的原生方法里,利用该原生对象创建一个Actionscript对象。

    13. 创建原生view对象

    AIR应用是在一个标准的window对象里运行的,你可以通过下面的方法获得这个window对象:

    Objective-C

    [UIApplication sharedApplication].keyWindow

    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

    在编译应用的时候你可能会遇到多处下面这样的警告:

    Objective-C

    ld: warning: ARM function not 4-byte aligned

    1

    ld: warning: ARM function not 4-byte aligned

    这些只是警告,不用去理它。4位对齐只是一个优化,并非是必须的。

    最后的最后

    20. 让你的原生扩展更加通用

    当完成了扩展的开发,你可以有三个选择:

    1, 只让自己使用。

    2, 向其他开发者开源。

    3, 卖给其他开发者。

    你可以问问自己,是什么让你的应用独一无二。如果原因不是你的原生扩展(实际上很少是因为这个),那么请选择第二个或者第三个,如果每个人都这么做,你也会从中受益。

    另外,让更多人从你的扩展中受益,可以让Adobe AIR这项技术在移动开发领域里更加强大和稳定。这会鼓励其他的开发者去使用AIR,也会鼓励Adobe继续开发和改进它。

    在Stick Sports我们选择了第二项,因为比起花时间来运营我们的原生扩展,我们更愿意花时间来运营和支持我们的游戏。

    推荐文章

上一篇:给iOS开发AIR原生扩展建议(上)

下一篇:iOS开发初学者记录

最新开班日期  |  更多

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:11/30

3G-IOS软件工程师就业班

3G-IOS软件工程师就业班

开班日期:11/30

3G-IOS软件工程师全日制班

3G-IOS软件工程师全日制班

开班日期:11/30

3G-IOS软件工程师周末班

3G-IOS软件工程师周末班

开班日期:11/30

  • 网址:http:/cs.ios.tedu.cn     地址:长沙市芙蓉中路一段479号建鸿达现代城27楼
  • 课程培训电话:18487146383     QQ:570023382     全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56