gpt4 book ai didi

ios - 在 iOS 框架中嵌入 .dylib

转载 作者:行者123 更新时间:2023-12-01 15:47:23 44 4
gpt4 key购买 nike

我一直在尝试提交一个带有 Obj-C 动态库 (.dylib) 的 Swift 应用程序,该应用程序不断被 iOS App Store 拒绝并出现错误消息,例如

Invalid Swift Support - The files libswiftDarwin.dylib, libswiftDispatch.dylib, libswiftCoreGraphics.dylib, libswiftUIKit.dylib, libswiftCore.dylib, libswiftFoundation.dylib, libswiftQuartzCore.dylib, libswiftObjectiveC.dylib, libswiftCoreImage.dylib aren’t at the expected location /Payload//Frameworks. Move the file to the expected location, rebuild your app using the current public (GM) version of Xcode, and resubmit it



来自 Apple 文档,地址为 https://developer.apple.com/library/archive/technotes/tn2435/_index.html#//apple_ref/doc/uid/DTS40017543-CH1-PROJ_CONFIG-APPS_WITH_DEPENDENCIES_BETWEEN_FRAMEWORKS错误“ 可能表明您的应用程序正在嵌入一个未打包为框架的动态库。框架包之外的动态库,通常具有文件扩展名 .dylib,在 iOS、watchOS 或 tvOS 上不受支持, Xcode 提供的系统 Swift 库除外。

所以下一步是将动态库(作为子项目)嵌入到 Cocoa Touch Framework 项目中。设置完成后,尽管框架构建良好,但我在导入的 dylib 类中遇到了“找不到符号”错误。

我想知道实现这个项目结构所需的步骤,或者它是否可能在 iOS 上。

最佳答案

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

$ lipo -create mylib.dylib -output mylib
现在你得到一个名为“mylib”的二进制文件
创建一个名为 mylib.framework 的文件夹并将二进制文件放入其中。
然后添加一个 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

关于ios - 在 iOS 框架中嵌入 .dylib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53818772/

44 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com