iOS 如何正确签署要通过 dlopen 加载的 C++ dylib
How to correctly sign a C++ dylib to be loaded via dlopen in iOS
我们正在将我们的语言工具集成到移动平台中。
因此,有根据用户请求加载的特定语言库 - 目前为英语、法语、西班牙语或希腊语。
这些库太大,无法静态链接。
目前,我们可以通过 linux 中的 dlopen 和 dlsym 调用加载这些库。
我看到我们可以使用这些以 iOS v8.
开头的调用
正如 Apple Developer Support 所说“...没有全面禁止使用 dlopen 和朋友。”
编译我们的库(使用 CMake 和相关的 iOS 工具链)后,它们已使用与应用程序相同的证书和标识符进行签名,使用
codesign --deep --force --sign "78037F819B5AA1522177B06DA8E7C5343DDBC0CF" --identifier=fr.teamname.libtext_fr ./libtext_fr.dylib
但是,当应用程序(iPad 上的 iOS v14 上的运行)尝试加载文件时,出现错误,我们得到以下原因:
code signature invalid (errno=1) sliceOffset=0x00000000, codeBlobOffset=0x0205D0F0, codeBlobSize=0x000453E0
请注意,我们目前使用的是免费的Apple Id,尚未加入开发者计划。
我已经做了很多搜索,但还没有找到丢失的东西。
现在正确的方向是什么?
经过大量研究,我在苹果开发者论坛上打开了一个请求。
这个问题的答案可以在这里找到:
https://developer.apple.com/forums/thread/670761
我们正在将我们的语言工具集成到移动平台中。
因此,有根据用户请求加载的特定语言库 - 目前为英语、法语、西班牙语或希腊语。
这些库太大,无法静态链接。
目前,我们可以通过 linux 中的 dlopen 和 dlsym 调用加载这些库。
我看到我们可以使用这些以 iOS v8.
开头的调用正如 Apple Developer Support 所说“...没有全面禁止使用 dlopen 和朋友。”
编译我们的库(使用 CMake 和相关的 iOS 工具链)后,它们已使用与应用程序相同的证书和标识符进行签名,使用
codesign --deep --force --sign "78037F819B5AA1522177B06DA8E7C5343DDBC0CF" --identifier=fr.teamname.libtext_fr ./libtext_fr.dylib
但是,当应用程序(iPad 上的 iOS v14 上的运行)尝试加载文件时,出现错误,我们得到以下原因:
code signature invalid (errno=1) sliceOffset=0x00000000, codeBlobOffset=0x0205D0F0, codeBlobSize=0x000453E0
请注意,我们目前使用的是免费的Apple Id,尚未加入开发者计划。
我已经做了很多搜索,但还没有找到丢失的东西。
现在正确的方向是什么?
经过大量研究,我在苹果开发者论坛上打开了一个请求。
这个问题的答案可以在这里找到: https://developer.apple.com/forums/thread/670761