ReactNativeSeperateBundle
ReactNativeSeperateBundle copied to clipboard
怎么生成业务bundel 和common.bundle 文件的patch
怎么生成业务bundel 和common.bundle 文件的patch
@yellowChao
使用的是diff_and_patch算法。
我采用的是该算法的python版本,安装了之后,使用我更新的脚本 就可以直接打包了
当然,diff算法有很多种,你可以采用其他的。只要你的diff算法和native中的合并算法是同一套就没问题。
哦,那你这个应该是个脚步,在app每次build前执行吧。还有这个只是解决了初始化包的大小是吧,麻烦问下你对优化加载jsbundle有什么解决方案吗☺️
@yellowChao 这个脚本,是在发布前执行的,我的构想是,用起来像cocoapod一样,几个项目同时开发的话,最好只使用其他组的release包。
这方案并不是为了解决初始化包的问题,而是为了解决多小组、多项目协作的效率低问题,另外可以为了以后做web bundle做一个准备。
优化加载jsbundle的话,没什么好的办法,主要是两条:
- 预加载,在app启动后,后台提前加载
- 缓存jsbundle,而不是每次都去读取
另外这个方案,理论上会优化加载的jsbundle的时候,但是效果有限。
@njafei 你好,能不能具体讲解下生成业务bundel 和common.bundle 文件的patch
@njafei demo里通过原生界面加载不同的包,这个是native+rn吗,有没有纯rn的加载方式
@otawa811
纯rn? rn本来就是要通过RCTView来承载的,你说的纯RN是什么意思?RN没法脱离iOS或者Android平台的
python seprateBundle.py ./bundle/common.android.jsbundle ./bundle/business.android.jsbundle 生成出来的 business.patch 怎么比 business.bundle 还大呢 common.android.jsbundle 520k business.android.jsbundle 900k business.patch 1.6M
@52myu
因为这个除了两者的代码差之外,还有用于记录的标志位,所以会大一些
我生成的文件大小是没问题的
520K + 4K = 524K
@poorbug 包确实会大一些,但是拆包的原因很多,让包变小并不是一个优先级非常高的需求,诸如:热更新、代码运行隔离的优先级会更高些。其他的拆包方案,也基本会让包变大,而不是变小,空间时间不可能同时变小。
当然,不同的公司,不同的情况需求肯定是不一样的,这里只提供一种可能性。
File "seperateBundle.py", line 4, in
执行脚本时报这个错,diff_match_patch要怎么使用呢?
不好意思,自己已经解决了,对这个不太熟悉。 把diff_match_patch.py文件导入项目中就好了