spawnSync ./gradlew在模拟器上运行react本机项目时出现EACCES错误

dud*_*ect 29 gradle android-gradle-plugin react-native

我试图使用react-native run-android在android工作室模拟器上安装我的react-native应用程序.我已经用abd-devices检查了模拟器是否可用,并且我运行了npm-install.

我正在使用Ubuntu 18.04与最新版本的android studio,以及最新的Pixel 2 XL API 28.

我收到以下错误:

spawnSync ./gradlew EACCES

Error: spawnSync ./gradlew EACCES
    at Object.spawnSync (internal/child_process.js:998:20)
    at spawnSync (child_process.js:622:24)
    at Object.execFileSync (child_process.js:650:13)
    at runOnAllDevices (/home/user/react/front-end/project/node_modules    /react-native/local-cli/runAndroid/runAndroid.js:299:19)
    at buildAndRun (/home/user/react/front-end/project/node_modules/react-native/local-cli/runAndroid/runAndroid.js:135:12)
    at isPackagerRunning.then.result (/home/user/react/front-end/project/node_modules/react-native/local-cli/runAndroid/runAndroid.js:65:12)
    at processTicksAndRejections (internal/process/next_tick.js:81:5)
Run Code Online (Sandbox Code Playgroud)

我试过多次重启我的电脑和模拟器.有任何想法吗?

更新:我重新安装了JDK,npm,react-native-cli和android studio.它仍然给我完全相同的错误.请帮忙.

小智 115

我用以下方法解决了这个问题:

chmod 755 android/gradlew 
Run Code Online (Sandbox Code Playgroud)

chmod命令设置文件或目录的权限。 https://www.computerhope.com/unix/uchmod.htm

  • 成功解决了问题。但是如果你解释它的作用会很好。我认为对很多人都有用。 (5认同)
  • @ Grez.Kev此命令使gradlew文件成为可执行文件。哪个帮助代码可以运行。这种解决方案节省了我的时间。n (3认同)
  • 我的 android 目录下没有 gradlew 目录,我该怎么办? (2认同)
  • 这绝对有效。但只是想知道为什么这没有被视为 React Native 开发的预防措施或在文档中提到...... (2认同)

Oma*_*iti 18

我认为这是权限问题我在通过更改权限解决它之前遇到了这个问题,在android目录上运行以下命令

chmod 755 android/gradlew
Run Code Online (Sandbox Code Playgroud)


Blo*_*gic 18

事实证明它不是gradle但它是android/gradlew。在根目录中运行以下命令:

$ chmod +x android/gradlew
Run Code Online (Sandbox Code Playgroud)

现在运行

$ yarn android            
# OR   
$ npm run android 
# OR
$ npx react-native run-android
Run Code Online (Sandbox Code Playgroud)

你应该可以走了。


Lak*_*aha 13

我尝试了上述解决方案。但就我而言,由于权限问题,我不得不使用 sudo。您可以通过运行命令解决它

sudo chmod 755 android/gradlew