reactnativecn / react-native-pushy

React Native 极速热更新服务
https://pushy.reactnative.cn
Other
1.79k stars 259 forks source link

关于发布、删除原生包、热更包的问题 #413

Closed amibug closed 1 year ago

amibug commented 1 year ago

有3个问题需要求助解答:

  1. 删除已不再使用的原生包、热更包之后,会有什么问题?

    const info = await checkUpdate(appKey);

    不同情况下执行以上代码,info会返回什么?

  2. 关于原生包版本问题,文档中提到

    即可上传 apk 以供后续版本比对之用。此 apk 的versionName字段(位于android/app/build.gralde中)会被记录为原生版本号packageVersion。 随后你可以选择往应用市场发布这个版本,也可以先往设备上直接安装这个 apk 文件以进行测试。 如果后续需要再次打包(例如修改原生代码或配置),请先更改版本号,并再次uploadApk到服务器端记录,否则后续生成的相同版本的原生包会由于编译时间戳不一致而无法获取热更新

打包生成apk文件后,执行pushy uploadApk上传,接着上传到应用市场上架。 如果被应用市场打回需改代码需要重新打包,但不想修改请先更改版本号应该如何操作?

  1. 关于安卓x86 cpu架构问题,文档中提到

    编译目录中输出多个 apk 文件,分发和上传到热更新服务时只需要使用app-arm64-v8a-release.apk文件,可以大幅减小 apk 的大小。

上传到热更新服务时只需要使用app-arm64-v8a-release.apk文件, 但是在应用市场上架时还上传了 app-armeabi-v7a-release.apk、app-universal-release.apk、app-x86-release.apk等app,这些app能热更新吗?

sunnylqm commented 1 year ago
  1. 如果客户使用不再使用的原生包(或者简而言之,后台没有记录的原生版本,不管是删除的还是没有上传过的),info会返回expired:true,如果使用极简集成,会弹出原生版本需要更新,指向在网页端预先配置的下载地址。删除正在使用的热更包的话,则不会检测到有热更(已经热更的仍然停留在热更后的状态)
  2. 只要重新打包,则时间戳必然不一致。又因为后台不允许上传相同的版本号,所以要么改版本号后打包,要么删除已上传的相同版本号的原生包。
  3. 分发和上传到热更新服务时只需要使用app-arm64-v8a-release.apk文件

专门这样说当然是可以更新,只要它们是同一次打包行为打出来的原生包,不管有几个架构,不管有几个渠道,时间戳、版本号一致,都可以使用同样的热更。

amibug commented 1 year ago

只要重新打包,则时间戳必然不一致。又因为后台不允许上传相同的版本号,所以要么改版本号后打包,要么删除已上传的相同版本号的原生包。

这种情况如何处理 上架应用市场前,上传了原生包。安卓有多个应用市场, A审核通过已经发布,B审核未通过需要重新打包。

sunnylqm commented 1 year ago

不管什么原因,处理原则还是都一样的