【问题标题】:How to fix Read-only file system when running cordova run android?运行cordova run android时如何修复只读文件系统?
【发布时间】:2019-10-24 10:32:29
【问题描述】:

我正在尝试执行

cordova run android --verbose

我明白了

spawn EACCES

作为一个错误。

于是,我在网上搜索并跑了

cordova run android --verbose

并确定错误为:

Running command: /snap/android-studio/76/android-studio/gradle/gradle-5.1.1/bin/gradle -p /home/extensify/Desktop/Code/cordova/platforms/android wrapper -b /home/extensify/Desktop/Code/cordova/platforms/android/wrapper.gradle
spawn EACCES
Error: spawn EACCES
    at _errnoException (util.js:1022:11)
    at ChildProcess.spawn (internal/child_process.js:323:11)
    at Object.exports.spawn (child_process.js:502:9)
    at Function.spawn (/home/extensify/Desktop/Code/cordova/node_modules/cross-spawn/index.js:12:24)
    at exports.spawn (/home/extensify/Desktop/Code/cordova/node_modules/cordova-common/src/superspawn.js:90:28)
    at ProjectBuilder.runGradleWrapper (/home/extensify/Desktop/Code/cordova/platforms/android/cordova/lib/builders/ProjectBuilder.js:70:20)
    at /home/extensify/Desktop/Code/cordova/platforms/android/cordova/lib/builders/ProjectBuilder.js:209:29
    at _fulfilled (/home/extensify/Desktop/Code/cordova/node_modules/q/q.js:854:54)
    at self.promiseDispatch.done (/home/extensify/Desktop/Code/cordova/node_modules/q/q.js:883:30)
    at Promise.promise.promiseDispatch (/home/extensify/Desktop/Code/cordova/node_modules/q/q.js:816:13)

可以通过更改文件/snap/android-studio/76/android-studio/gradle/gradle-5.1.1/bin/gradle 的权限来修复我阅读的内容

为了解决这个问题,我尝试运行

sudo chmod +x /snap/android-studio/76/android-studio/gradle/gradle-5.1.1/bin/gradle

并不断获得

chmod: changing permissions of '/snap/android-studio/76/android-studio/gradle/gradle-5.1.1/bin/gradle': Read-only file system

我读到的可以通过重新安装硬盘来修复,我再次尝试使用几个命令,但无法修复。

接下来我可以尝试什么?

【问题讨论】:

  • 那个分区有哪个文件系统?因为文件系统可能会导致它挂载 R/O ......这几乎与编程无关,但可能算作“通用计算硬件和软件”问题,这在此处是题外话。并且您可以尝试很多,除非您 a) 卸载分区,b) 修复文件系统,c) 以 R/W 方式安装它(这都与编程无关)。
  • cat /etc/fstabsudo blkid 至少会告诉文件系统的类型...每种类型都有自己的工具来修复损坏,这些工具都只能在未挂载的分区上运行。
  • /dev/loop21: TYPE="squashfs" 所以你的意思是我应该找一个可以卸载/dev/loop21 的工具并更改分区以便能够创建和写入?
  • SquashFS 无法修复,已压缩且只读。也许只需使用npm 安装cordova 并删除那个糟糕的快照。你能在挂载点/home 中创建文件吗(只是为了确定不是挂载的 R/O,虽然它不应该)?
  • 我确实使用npm 安装了cordova,但我要更改权限的文件是gradle,它是我使用snap 安装的android-studio 附带的

标签: cordova android-studio ubuntu gradle chmod


【解决方案1】:

此答案适用于 Ubuntu 18.04

我也遇到了同样的问题,我是这样解决的:

  1. 如果您使用 snap 安装了 Android Studio,请将其删除。
  2. Download Android Studio 来自他们的网站
  3. 提取到/usr/local/ 用于您的用户个人资料,或/opt/ 用于共享用户
  4. 如果您使用的是 64 位机器,请运行以下命令来安装一些必需的 32 位软件包:
sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386
  1. 安装KVM,加入群组kvm
  2. 打开终端,导航到android-studio/bin/目录,然后执行./studio.sh
  3. 运行安装并确保在 SDK 平台中安装 API Level 28 (Android 9.0 Pie)
  4. 将以下目录添加到$PATH
    • /opt/android-studio/gradle/gradle-{version}/bin/usr/local/android-studio/gradle/gradle-{version}/bin
    • /opt/android-studio/jre/bin/usr/local/android-studio/jre/bin
    • /home/{name}/Android/Sdk/platform-tools
    • /home/{name}/Android/Sdk/tools/bin
    • /home/{name}/Android/Sdk/emulator/bin
  5. 使用 Android Studio 创建虚拟设备
  6. 使用android list avd列出虚拟设备
  7. 使用emulator -avd {deviceName}启动虚拟设备
  8. 运行cordova run android,它应该可以工作

推荐:

  • 运行Android Studio,转到Tools > Create Desktop Entry...,这样你就可以轻松启动Android Studio了

【讨论】:

    猜你喜欢
    • 2021-04-07
    • 2022-07-02
    • 2012-06-03
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多