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

Android 如何确定是否必须为具有RN>;的应用程序创建本机apk/JS捆绑包=0.60,android,react-native,code-push,react-native-code-push,Android,React Native,Code Push,React Native Code Push,我在生产中使用代码推送已经两年多了 我是如何实施的? 每当我的react原生应用程序的android文件夹被修改时,我都假设有一个原生更改,我的CI/CD工具创建了一个原生apk文件 在所有其他情况下,我生成了一个JS包并通过CodePush推送 在最新的RN版本>=0.60中,我们有本机模块的自动链接。因此,我无法确定是否有任何新添加的库需要生成本机APK,或者只是一个包更新 请提供如何做到这一点的建议 环境 react本机代码推送版本:6.0.0 react本机版本:0.61.4适用于所

我在生产中使用代码推送已经两年多了

我是如何实施的?

  • 每当我的react原生应用程序的android文件夹被修改时,我都假设有一个原生更改,我的CI/CD工具创建了一个原生apk文件
  • 在所有其他情况下,我生成了一个JS包并通过CodePush推送
在最新的RN版本>=0.60中,我们有本机模块的自动链接。因此,我无法确定是否有任何新添加的库需要生成本机APK,或者只是一个包更新

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

环境

react本机代码推送版本:6.0.0


react本机版本:0.61.4

适用于所有有类似需求的人。这就是我所做的

  • 我的应用程序同时支持android和ios,因此,每当我们添加本机模块时,我们必须执行
    cd-ios&&pod安装
    此步骤将更新
    Podfile.lock
    文件
  • 当代码被推送到repo并触发CI/CD管道时,我检查我的git历史记录,查看
    android/
    ios/
    文件夹是否用文件更新
  • 如果是,我将触发我的本地构建,否则我将执行代码推送
下面是有关如何在Circle CI上执行条件管道的帮助


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

您是否介意展开“我检查我的git历史记录,看看android/或ios/文件夹是否使用文件进行了更新。”?:)太好了,很有帮助!:)
FILES_CHANGED=`git diff --name-only $1 $2 | 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