如何在iOS应用程序项目中正确嵌入第3方.dylib文件以供App Store发布?

2023-11-24

我正在使用支持 H264 的 PJSIP 库构建一个 iOS 应用程序。构建 H264 时,我得到 1 个 .a 文件和 2 个 .dylib 文件。我尝试通过添加为“嵌入式库”以及创建一个单独的框架然后将其添加到“嵌入式库”来在我的项目中使用 .dylibs。但是,当将构建上传到 App Store 时,我收到错误“ERROR ITMS-90206:...”、“ERROR ITMS-90171:...”。所有这些都指向在项目中使用外部动态库。我跟着https://developer.apple.com/library/content/technotes/tn2435/_index.html#//apple_ref/doc/uid/DTS40017543-CH1-TROUBLESHOOTING_BUNDLE_ERRORS-EMBEDDED__DYLIB_FILES

但他们要求遵循“添加框架目标”中的步骤。我不知道如何创建一个只有 2 个 .dylib 文件且没有其他源代码或头文件的框架。请显示将 .dylib 文件嵌入 iOS 应用程序以供 App Store 提交的步骤。


我能够通过首先创建一个框架来提交带有 .dylib 的应用程序。 我尝试了苹果文档中描述的方法,但在提交到商店时出现错误(“无效的捆绑包。xyz.framework处的捆绑包包含不允许的文件‘Frameworks’”)

我使用 lipo 工具手动将我的 .dylib 打包到框架中。

$ lipo -create mylib.dylib -output mylib

现在你得到一个名为“mylib”的二进制文件 创建一个名为 mylib.framework 的文件夹并将二进制文件放入其中。 然后添加一个 Info.plist(您可以从现有框架中复制并修改一个 Info.plist。)在 Info.plist 中,填写您的框架的字段。要更新或添加的主要文件是“可执行文件”,它应该是该二进制文件的名称。

我遇到了另一个问题,我使用的另一个框架正在引用我原来的 .dylib,它已经消失,现在位于框架内。为了解决这个问题,我使用“install_name_tool”来修改其他框架以查找我的新框架。

$ cd OtherLib.framework 
$ install_name_tool -change @rpath/mylib.dylib @rpath/mylib.framework/mylib OtherLib

您可以在这篇优秀的博客文章中阅读有关该工具以及修改库中的各种路径的更多信息:https://medium.com/@donblas/fun-with-rpath-otool-and-install-name-tool-e3e41ae86172

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在iOS应用程序项目中正确嵌入第3方.dylib文件以供App Store发布? 的相关文章

随机推荐