如何确定是否必须为 RN >=0.60 的应用程序创建本机 apk/JS 包

How to determine if native apk / JS bundle has to be created for apps with RN >=0.60

我在生产中使用代码推送已经超过 2 年了。

我是如何实现的?

在最新的RN版本>=0.60中,我们有原生模块的自动链接。因此,我无法确定新添加的任何库是否需要生成本机 APK 或仅更新捆绑包。

请提供如何做到这一点的建议?

环境

react-native-code-push 版本:6.0.0

react-native 版本:0.61.4

对于所有有类似需求的人。这是我所做的。

  • 我的应用程序同时支持 android 和 ios,因此每当我们添加本机模块时,我们都必须执行 cd ios && pod install 此步骤将更新 Podfile.lock文件。
  • 当代码被推送到 repo 并触发 CI/CD 管道时,我检查我的 git 历史记录以查看 android/ios/ 文件夹是否更新了文件.
  • 如果是,我会触发我的原生构建,否则我会进行代码推送。

这里有关于如何在 Circle 上执行条件管道的帮助 CI。 https://medium.com/labs42/monorepo-with-circleci-conditional-workflows-69e65d3f1bd0

FILES_CHANGED=`git diff --name-only   | grep "android/\|ios/"`

PARAMETERS='"trigger": false,'
if [[ $FILES_CHANGED == '' ]]; then
  PARAMETERS+='"js": true'
  echo "JS Code changes detected..."
else 
  PARAMETERS+='"native": true'
  echo "Native Code changes detected..."
fi

上面的 shell 代码片段有助于检查更改的文件。