守望者--AIR技术交流

标题: Adobe AIR打包用到外部sdk的ANE时报错 [打印本页]

作者: 破晓    时间: 2015-1-15 14:32
标题: Adobe AIR打包用到外部sdk的ANE时报错

现象:

我们项目需要用到ANE扫二维码的功能,XCode里用ZBarSDK写好之后发布成ane,adt打包成ipa的时候报错如下:

  1. <font color="rgb(34, 34, 34)"><font face="Helvetica, Arial, sans-serif">Packaging failed!
  2. Packaging error message:
  3. Compilation failed while executing : ld64
  4. Packaging output:
  5. 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
  6. Undefined symbols for architecture armv7:
  7. “_QRScanExtInitializer”, referenced from:
  8. _g_com_adobe_air_fre_fmap in extensionglue.o
  9. (maybe you meant: _QRScanExtInitializer_name)
  10. “_QRScanExtFinalizer”, referenced from:
  11. _g_com_adobe_air_fre_fmap in extensionglue.o
  12. (maybe you meant: _QRScanExtFinalizer_name)
  13. ld: symbol(s) not found for architecture armv7</font></font>
复制代码
起初以为是XCode里项目参数设置的有问题,怀疑“Link Binary With Libraries”中libiconv加得不对,可是仔细检查过没问题,而且所有该要的源文件已经包含在target里了。最后找到
解决方法:用到外部库开发的ane,都需要创建一个XML文件,在里面设置用到的外部库,就像我这里platformoptions.xml
  1. <platform xmlns="http://ns.adobe.com/air/extension/3.1">
  2.     <description > An optional description</description>
  3.     <copyright>2012 (optional)</copyright>
  4.     <linkerOptions>
  5.         <!--        <option>-framework CoreMotion</option> -->
  6.         <option>-liconv</option>
  7.     </linkerOptions>
  8. </platform>
复制代码
并且在adt打包参数中加入-platformoptions platformoptions.xml。dt打包参数中加入-platformoptions platformoptions.xml 就可以了。顺带,推荐个对iOS写ane有奇效的好工具:XCode-template-ane

这是XCode模板,只要设置好你用来生成ane的接口swc路径和AIR SDK路径,剩下的只是写OC代码,它代替你做adt打包的步骤,一键自动生成ane。



本文来自:http://www.flashj.cn/wp/error-when-adt-package-ipa-with-ane-includes-ios-external-sdk.html








欢迎光临 守望者--AIR技术交流 (http://www.airmyth.com/)