AIR:第三方 iOS 本机扩展的链接器错误



我目前正在尝试将.ane合并到我的iOS应用程序中。 .ane 由第三方提供,我没有来源。

我已经将随附的.swc链接到我的项目中(Adobe和第三方推荐的外部链接)并成功构建了.swf。 我的问题始于使用 adt 构建用于部署的 .ipa 时。 下面是我正在使用的模拟 adt 命令。 您可以假设所有<>内容都正确填写,因为我已经详尽地检查了所有内容,并且构建运行了相当长的一段时间。 不过,我可能缺少一些甜蜜的善良金块......

adt -package -target ipa-ad-hoc -provisioning-profile <the-file> -storetype <the-store-type> -storepass <the-password> -keystore <the-certificate> ./../myapp.ipa MyApp-app.xml MyApp.swf -extdir <path-to-ane-files>

一切都进展顺利,直到我收到以下错误,我们戛然而止:

ld: library not found for -lsqlite3

这告诉我的是,第三方 .ane 是通过 -platformoptions xml 文件或其他方式指定,尝试链接到 sqlite3 库,并且在要构建底层 Xcode 项目的 adt 过程中,找不到该库。

我的设置如下:
Mac OSX Lion
Adobe Flash Builder 4.5 w/PHP
Xcode 4.4.1Flex 4.6.0 (AIR 3.3) SDK

现在,sqlite3 位于/usr/lib 中,所以我知道它在那里,而且实际上它可以是任何库。 由于这是一个命令行 AIR 实用程序,我无法访问底层 Xcode 项目(据我所知)来告诉它库在哪里,所以我暂时有点卡住了,没有想法。

我可能还应该注意到,我在任何其他(自行开发或其他)扩展中都没有遇到此问题,但这很可能是因为它们几乎没有依赖项。

谢谢!

好的,

所以我认为这最终成为我的设置的问题。 通过将 adt 命令指向我明确使用的 iOS SDK 版本,该问题已得到解决。 这就是我认为发生的事情:

  • 几天前我下载了 Flex 4.6.0AIR3.3 并安装了它。 Adobe说它附带了一个iOS版本(但我找不到它),所以我假设它使用/Developer/Platforms/iPhoneIS.platform中的Snow Leopard和Xcode 3。

  • 然后我升级到 Lion,这样我就可以升级到 Xcode 4,这样我就可以构建 iOS 5 的东西了。 Xcode 4 现在是从 App Store 安装的,所以我首先完全删除 Xcode,然后从 App Store 重新安装。

  • Xcode 4 将 SDK 放在其应用程序包中,而不是放回/Developer/Platform 中。 可能"从土坯下面拉出地毯"?

无论如何,它已经解决了,只需要意识到SDK已经"消失"了......哦,意识到sqlite3.a不是链接器要找的,而是libsqlte3.dylib。

这是修改后的 adt 命令,请注意 -platformsdk 开关的存在:

adt -package -target ipa-ad-hoc -provisioning-profile <the-file> -storetype <the-store-type> -storepass <the-password> -keystore <the-certificate> ./../myapp.ipa MyApp-app.xml -plaformsdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/<version> MyApp.swf -extdir <path-to-ane-files>

:)

最新更新