我根据 Beewares 使用指南在 XCODE 中将 Python 嵌入到我的 iOS 项目中
https://github.com/beeware/Python-Apple-support/blob/main/USAGE.md
运行时,我得到pythonKit 找不到由 ultralytics 导入的 cv2 错误。当我将 OpenCV-python 添加到我的 app_packages 文件夹时(就像 ultralytics 一样),我收到以下错误:
代码签名标识符 (libtheoraenc.1) 与捆绑包标识符 (com.iubh-lea.Meye.cv2.) 不匹配/var/installd/Library/Caches/com.apple.mobile.installd.staging/temp.s2Bujt/extracted/Meye.app/Frameworks/cv2..framework
添加可通过 python 工具包访问而无需签名的 cv2 框架的任何方法不匹配?
在使用包标识符创建 Info.plist 之前,我尝试在运行脚本中放弃它 -> 没有更改任何内容 我尝试使用 opencvs iOS 框架版本,但 pithonkit 找不到
收到的错误消息「代码签名标识符 (libtheoraenc.1) 与捆绑包标识符 (com.iubh-lea.Meye.cv2) 不匹配」表示在的应用程序捆绑包中,
libtheoraenc.1
库的代码签名标识符与
cv2
框架的捆绑包标识符不一致。这是因为 iOS 对应用程序及其所有库都有严格的代码签名要求。
以下是解决此问题的步骤:
-
确认
libtheoraenc.1
的来源 : 需要确定libtheoraenc.1
库是如何以及从哪里添加到的项目中的。它可能是 OpenCV-Python 的依赖项,也可能是项目中另一个库的依赖项。 -
移除重复库 : 如果
libtheoraenc.1
是 OpenCV-Python 的依赖项,并且在项目中其他地方也包含了它,那么需要移除重复的库,只保留一份。 -
重新签名
cv2
框架 : 需要使用与应用程序相同的团队和证书对cv2
框架进行重新签名。可以使用codesign
命令行工具来完成此操作。
bash
codesign --force --sign "Your Signing Identity" --entitlements "path/to/entitlements.plist" "path/to/cv2.framework"
-
将
"Your Signing Identity"
替换为的代码签名标识符。可以在 Xcode 中的代码签名设置中找到它。 -
将
"path/to/entitlements.plist"
替换为的权利文件路径。 -
将
"path/to/cv2.framework"
替换为cv2
框架的路径。 -
清理和重建 : 完成上述步骤后,请清理的构建文件夹并重新构建的应用程序。
其他建议 :
-
使用预构建的 OpenCV 框架
: 可以考虑使用为 iOS 预构建的 OpenCV 框架,例如:
- OpenCV.org : https://opencv.org/releases/
- CocoaPods : 可以使用 CocoaPods 将 OpenCV 集成到的项目中。
- 使用 Python 的虚拟环境 : 为了避免库冲突,建议在开发 iOS 应用程序时使用 Python 的虚拟环境。
通过执行上述步骤,应该能够解决代码签名不匹配的问题,并在的 iOS 应用程序中成功使用 OpenCV-Python。
标签:python,ios,xcode,opencv From: 78809673