84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
我现在有一个需求。公司要实现iOS插件话开发(非HTML5方式)。大概的思路是,上架一个主程序,今后添加功能模块的时候,工程师负责开发framework。每次主程序启动的时候,动态从服务器下载该framework。实现应用程序远程更新,而且可以不用商店再次审核。但是目前遇到的问题是,据说这种远程下载动态库的方式,苹果是不允许的。有没有哪位知道,苹果为什么不允许,是不允许远程加载,还是不允许使用动态库。大家有什么好的建议么。多谢
业精于勤,荒于嬉;行成于思,毁于随。
如果苹果允许你通过远程下载动态库来更新 App,那审核这个步骤就形同虚设了。
可以看看 JSPatch,一个开源库桥接 Objective-C 和 JavaScript,可以变相做到动态添加修改模块。
很抱歉,我只在本地测试过,我去查询了一下,SamirChen 说的是对的,生产环境应该是不行的。请大家参考他的回答。
确实是可以通过dlopen的方式打开沙盒里面的framework,而且这种方式不要求iOS8,是另外一种比较少见的hotfix方式。
dlopen
有人实践过这种hotfix,启动时下载服务端的framework的zip包,然后解压、加载,可以成功,在苹果那也确实过得去,上海有家公司就是这么干hotfix的。
按照这种思想,确实是可以做到插件化开发的。因为相比起其他JSPatch、lua的wax这种的,都是写js、lua语言来调用OC接口,打打补丁还行,真要做功能开发会累死,而使用framework的方式具备了原生编写的优点,又有hotfix的功能,非常棒。
但是,为什么市面上很少见到这么干的呢。按道理说,苹果一般是禁止这种行为的,按照苹果的说法,如果被发现了,可能会下架(其实按照苹果的说法,lua那种也是不行的,但是从来没有听说过谁被下架了,js的方式是可以的。)。但是,你可以试试,说不定可以过去,比如,审核时不开这个功能,过审了之后再开。
我以前也想过这种方式,后来觉得风险太大,所以没这么干,毕竟是公司项目,万一下架了,我是要承担责任的。
现在苹果审核还是很快的,远程更新整个模块的话,必要性不是很大,打打补丁就够了。
如果你觉得这种插件化的开发比较好管理的话,我建议你可以使用私有pod仓库这种,把框架、基类打成单独的pod,其他人各自开发各自的模块的时候,打成各自的bundle和静态库。这样,他们的提交对你是没有影响的,你只要定时pod update一下就行。每个模块的增删也是非常方便的(如果你的app有那么大的话)。
楼主,我最近也在关注这个问题,请问你实现了这样的方式没,动态更新app?然而是怎么做到的
如果苹果允许你通过远程下载动态库来更新 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有那么大的话)。
楼主,我最近也在关注这个问题,请问你实现了这样的方式没,动态更新app?然而是怎么做到的