这是我第一次在 stackoverflow 上提问,我很绝望。
我的任务是加载 dylib 或将静态库加入到 IOS 设备的现有可执行文件中。
我将使用static void __attribute__((constructor)) initialize(void)
开始搅拌。
该可执行文件适用于内部企业应用程序商店,因此我不需要通过苹果应用程序商店(因为他们会拒绝它)。
这样做的原因是从客户那里获取现有的 IPA 及其签名密钥,并向其应用程序添加新功能,而无需开发人员干预。
有一家公司在做这件事,叫做 nukona。您可以在这里观看这部电影:
我可以告诉你,我尝试将 LSEnvironment 放入 plist 文件中,并使用DYLD_INSERT_LIBRARIES
但事实证明 LSEnvironment 在 IOS 应用程序的沙箱中似乎没有任何影响。
我还尝试了 install_name_tool 来更改依赖项之一并将其替换为我的 dylib (它也具有该依赖项)。它崩溃而不知道原因。
显然,如果我将 dylib 添加到 XCode 中的测试应用程序并重新编译,它就可以完美地工作,这是给定的。然而,这是我不能问的,例如公司的管理员。重建可能会阻止客户使用此库。
这是我在堆栈溢出上找到的相关链接,但对于 osx,我需要它用于 IOS。如何将 LC_LOAD_DYLIB 命令插入 Mach-O 二进制文件 (OSX) https://stackoverflow.com/questions/273142/how-to-insert-a-lc-load-dylib-command-into-a-mach-o-binary-osx
我唯一能想到的就是如何编辑二进制加载命令,但考虑到重定位表等,我不确定如何以及如何做到这一点......
欢迎任何替代方案。
感谢您的时间。