现象:
我们项目需要用到ANE扫二维码的功能,XCode里用ZBarSDK写好之后发布成ane,adt打包成ipa的时候报错如下:
Packaging failed! Packaging error message: Compilation failed while executing : ld64 Packaging output: ld: warning: ignoring file /var/folders/l5/kql7svqx5j93vwg65tj3pt_c0000gn/T/8e0d5504-ffea-41da-a45b-22cfe260a197/libcn.flashj.ane.ios.QRScan.a, file was built for archive which is not the architecture being linked (armv7): /var/folders/l5/kql7svqx5j93vwg65tj3pt_c0000gn/T/8e0d5504-ffea-41da-a45b-22cfe260a197/libcn.flashj.ane.ios.QRScan.a Undefined symbols for architecture armv7: “_QRScanExtInitializer”, referenced from: _g_com_adobe_air_fre_fmap in extensionglue.o (maybe you meant: _QRScanExtInitializer_name) “_QRScanExtFinalizer”, referenced from: _g_com_adobe_air_fre_fmap in extensionglue.o (maybe you meant: _QRScanExtFinalizer_name) ld: symbol(s) not found for architecture armv7
起初以为是XCode里项目参数设置的有问题,怀疑“Link Binary With Libraries”中libiconv加得不对,可是仔细检查过没问题,而且所有该要的源文件已经包含在target里了。
最后找到解决方法:
用到外部库开发的ane,都需要创建一个XML文件,在里面设置用到的外部库,就像我这里 platformoptions.xml :
An optional description
2012 (optional)
\-liconv
并且在adt打包参数中加入-platformoptions platformoptions.xml。dt打包参数中加入-platformoptions platformoptions.xml 就可以了。
顺带,推荐个对iOS写ane有奇效的好工具:XCode-template-ane。
这是XCode模板,只要设置好你用来生成ane的接口swc路径和AIR SDK路径,剩下的只是写OC代码,它代替你做adt打包的步骤,一键自动生成ane。
技术内容转载请注明来源,个人日记不允许转载,欢迎指出任何有错误或不够清晰的表达。可以邮件至 mousebomb@gmail.com