iOS插件化开发远程更新动态库

我现在有一个需求。公司要实现iOS插件话开发(非HTML5方式)。大概的思路是,上架一个主程序,今后添加功能模块的时候,工程师负责开发framework。每次主程序启动的时候,动态从服务器下载该framework。实现应用程序远程更新,而且可以不用商店再次审核。
但是目前遇到的问题是,据说这种远程下载动态库的方式,苹果是不允许的。
有没有哪位知道,苹果为什么不允许,是不允许远程加载,还是不允许使用动态库。大家有什么好的建议么。多谢

阅读 9.1k
5 个回答

如果苹果允许你通过远程下载动态库来更新 App,那审核这个步骤就形同虚设了。

可以看看 JSPatch,一个开源库桥接 Objective-C 和 JavaScript,可以变相做到动态添加修改模块。

很抱歉,我只在本地测试过,我去查询了一下,SamirChen 说的是对的,生产环境应该是不行的。请大家参考他的回答。


确实是可以通过dlopen的方式打开沙盒里面的framework,而且这种方式不要求iOS8,是另外一种比较少见的hotfix方式。

有人实践过这种hotfix,启动时下载服务端的framework的zip包,然后解压、加载,可以成功,在苹果那也确实过得去,上海有家公司就是这么干hotfix的。

按照这种思想,确实是可以做到插件化开发的。因为相比起其他JSPatch、lua的wax这种的,都是写js、lua语言来调用OC接口,打打补丁还行,真要做功能开发会累死,而使用framework的方式具备了原生编写的优点,又有hotfix的功能,非常棒。

但是,为什么市面上很少见到这么干的呢。按道理说,苹果一般是禁止这种行为的,按照苹果的说法,如果被发现了,可能会下架(其实按照苹果的说法,lua那种也是不行的,但是从来没有听说过谁被下架了,js的方式是可以的。)。但是,你可以试试,说不定可以过去,比如,审核时不开这个功能,过审了之后再开。

我以前也想过这种方式,后来觉得风险太大,所以没这么干,毕竟是公司项目,万一下架了,我是要承担责任的。

现在苹果审核还是很快的,远程更新整个模块的话,必要性不是很大,打打补丁就够了。

如果你觉得这种插件化的开发比较好管理的话,我建议你可以使用私有pod仓库这种,把框架、基类打成单独的pod,其他人各自开发各自的模块的时候,打成各自的bundle和静态库。这样,他们的提交对你是没有影响的,你只要定时pod update一下就行。每个模块的增删也是非常方便的(如果你的app有那么大的话)。

新手上路,请多包涵

大佬这个问题解决了吗?我也遇到这样的问题,望赐教(#^.^#)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏