如何确定是否必须为 RN >=0.60 的应用程序创建本机 apk/JS 包
How to determine if native apk / JS bundle has to be created for apps with RN >=0.60
我在生产中使用代码推送已经超过 2 年了。
我是如何实现的?
- 每当我的 React 本机应用程序的 android 文件夹被修改时,我假设有一个本机更改并且我的 CI/CD 工具创建了一个本机 apk 文件。
- 在所有其他情况下,我生成了一个 JS 包并通过 CodePush 推送。
在最新的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 代码片段有助于检查更改的文件。
我在生产中使用代码推送已经超过 2 年了。
我是如何实现的?
- 每当我的 React 本机应用程序的 android 文件夹被修改时,我假设有一个本机更改并且我的 CI/CD 工具创建了一个本机 apk 文件。
- 在所有其他情况下,我生成了一个 JS 包并通过 CodePush 推送。
在最新的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 代码片段有助于检查更改的文件。