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