Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

为什么一定要上传原生包呢? #407

Open
GithubGaoYang opened this issue Mar 28, 2023 · 6 comments
Open

为什么一定要上传原生包呢? #407

GithubGaoYang opened this issue Mar 28, 2023 · 6 comments

Comments

@GithubGaoYang
Copy link

理论上原生包的作用只是用于版本判断,真正需要的信息应该也就是编译时间、版本号、jsbundle文件;
其中,jsbundle文件可能会用于差量更新,暂且理解为必选项。
但编译时间、版本号可以通过人为设定的方式而不是上传原生包的方式实现。

上传原生包这一过程,提高了发布流程的复杂性,也不方便开发者理解,可不可以在后续版本中取消这一流程呢?

@sunnylqm
Copy link
Contributor

这里的关键是,基准包的jsbundle文件和服务器端的jsbundle文件需要完全一致,一个字节都不能差,那如何做到这一点呢?

确实是只需要对比jsbundle文件,但jsbundle文件要如何单独提交呢?如何保证单独提交的jsbundle文件和你分发给用户的最终app完全一致呢?假设一个极端情况,你的jsbundle文件会在打包时把系统当前时间给作为环境变量打印进去,那么即便你一行代码都没改,你先打包jsbundle,再打包原生包,这个时候bundle已经不可能一致了。

@sunnylqm
Copy link
Contributor

但编译时间、版本号可以通过人为设定的方式而不是上传原生包的方式实现。

理论上确实是这样,理论上人为设定也可以代替typescript的类型检查,但现实就是,错误大多是人为的,而自动化才是唯一可靠的解决方案

@hengkx
Copy link

hengkx commented Oct 26, 2023

微软的code push 好像就不需要 原生包

@sunnylqm
Copy link
Contributor

因为codepush是走全量更新,不做差量对比

@FrankFeng1116
Copy link

因为codepush是走全量更新,不做差量对比

codepush也是增量更新的

@sunnylqm
Copy link
Contributor

sunnylqm commented Mar 7, 2024

不太清楚他们的机制,但我们的增量更新需要做二进制对比,因此要求一个字节都不能差,这样也可以更广泛的支持源文件格式,无论是纯文本js,还是任何版本的hermes二进制

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants