芋头大搜车无线团队.pdf

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
芋头大搜车无线团队

大搜车 ReactNative 开发集成流程体系演变 芋头@大搜车无线团队 一、场景 场景 • 重业务逻辑,轻营销。更重要的是可控性而不是灵活。 • 核心解决客户端人力膨胀问题,主要由 Native 开发,需尽量尊从其习惯 。 • 公司内多个 app,以及合作方的 app,业务繁多。 • 完全耦合进 Native,模糊三端概念,互通互调。 战略级,没有退路 二、体系简介 三、开发与集成 最初版 当时核心需要解决的问题 • 实现热更新 • 版本锁定 • 三端互通 • 业务解耦,业务之间互相独立 • 发版时带上最新版的 bundle 版本锁定 • 大量的跨端依赖,端与RN的版本可能不兼容。 • RN 官方包 需要可以随时升级,因为不稳定因素很 多。 • SDK 可以不断迭代功能,而不影响线上业务。 SRN-HUB 版本管理服务 最初思路 • 在服务端判断请求来自哪个版本的app • 服务端维护一个关系:哪个app的哪个版本可以更新哪个版本的bundle • 根据这个关系,返回是否需要下载某个 bundle • 太复杂的架构不是好架构,要对使用者尽量透明 统一 Router • 没有复杂的存储规则,所有规则都在版本号里。 • ${major}.${feature}.${patch} • 版本号升级根据发布类型自动管理。 • 依赖声明在 app 工程内,由 app 自己决定依赖, 而不是三方管理依赖。 问题 • 发布前需要RN开发修改APP内的依赖文件,这个文件和 podfile ,以及 maven的依赖不在一起,客户端难以适应。 • bundle 包有环境的概念,在开发流程里不断切换环境的时候需要不断改依 赖文件,很麻烦。 • 测试环境一律走覆盖式热更新,但是上线前会忘记修改依赖。 • 热更新被滥用,规则成为摆设。 • 打包时需要拉取依赖的bundle集成到本地,拖慢打包过程。 2.0 版 核心解决 • 将 bundle 编译成Native 模块 • bundle 抽离公用模块 • 扫码调试等辅助开发工具 app 发布流程 npm run publish Build Bundle create Pod repo 各自仓库 create JAR Upload to SRNHub 然后在原生工程里声明依赖及版本 app 启动后流程 找到所有bundle 内 app 启动 扫描应用文件 解析并注册模块 的 info.json 返回需要更新的 SRN - HUB 检查热更新 bundle 列表和地址 下载并覆盖 测试环境 直接更新最 忽略规则,直接更新最新版 新版 bundle bundle 拆分

文档评论(0)

zhuwo + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档