解决方案看最后一段即可。
ReactNative的热更新,微软提供了CodePush的解决方案,在Android集成时遇到了如下问题:
Error:Execution failed for task ':app:recordFilesBeforeBundleCommandDebug'.
> A problem occurred starting process 'command 'node''
node命令无法执行,我的环境是mac/Android Studio3.0/BuildTool26.0.2,查了好多资料,最后在ReactNative的issue中找到了答案,记录如下:
- 找到codepush.gradle文件
集成code push的时候,在项目的gradle文件中加了如下一行代码,指明了codepush.gradle的位置
apply from: "../../node_modules/react-native-code-push/android/codepush.gradle"
修改nodeExecutableAndArgs的值
codepush.gradle文件中定义了nodeExecutableAndArgs如下:
def nodeExecutableAndArgs = config.nodeExecutableAndArgs ?: ["node"]
粗暴的修改可以是这样子:
def nodeExecutableAndArgs = config.nodeExecutableAndArgs ?: ["/usr/local/bin/node"]
“/usr/local/bin/node” 可以通过命令 which node查看node的位置。
但是项目可能会有jekins等自动打包测试,所以为了降低对别人的影响,最好在app的build.gradle中添加如下行:
// Android studio bug hack
if (System.properties['os.name'].contains("Mac")) {
project.ext.react.nodeExecutableAndArgs = ["/usr/local/bin/node"]
}
以上。