我正在尝试 Build 一个Cordova项目 . 我正在使用Ubuntu 17.04 . 我运行 sudo cordova build android
但是构建失败并显示以下消息:
Error: Could not find an installed version of Gradle either in Android Studio, or on your system to install the gradle wrapper. Please include gradle in your path, or install Android Studio
当我运行 cordova requirements android
时,我觉得很奇怪:
Requirements check results for android: Java JDK: installed 1.8.0 Android SDK: installed true Android target: installed android-26,android-25 Gradle: installed /home/viktor/.sdkman/candidates/gradle/4.0.2/bin/gradle
看起来像是安装了Gradle .
Gradle的路径也出现在 $PATH
中:
echo $PATH
:
/home/viktor/.sdkman/candidates/gradle/current/bin:/home/viktor/bin:/home/viktor/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/viktor/Android/Sdk/tools:/home/viktor/Android/Sdk/tools/bin:/home/viktor/Android/Sdk/platform-tools:/snap/bin
Cordova版本是7.0.1 .
有人可以帮我弄清楚为什么构建失败,即使安装了Gradle?
Edit: 好的,我试图通过 cordova create hello com.example.hello HelloWorld
创建一个全新的项目 . 该项目可以成功构建和运行 . 我正在尝试构建的项目有什么问题?
3 回答
我终于弄明白了 .
项目中的某些文件已被锁定,由root拥有 . 当我用的时候
cordova build android
弹出一条错误消息,说某些文件无法读取 .
因此,在建设时,我用过
sudo cordova build android
.这帮助我摆脱了许可问题,但这也是Gradle问题的真正原因......
...当使用
sudo
运行命令时,使用的$PATH
变量是不同的(受限制的) . 在我的情况下,这是在没有sudo
的情况下构建时使用的值:/home/viktor/.sdkman/candidates/gradle/current/bin:/home/viktor/bin:/home/viktor/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/viktor/Android/Sdk/tools:/home/viktor/Android/Sdk/tools/bin:/home/viktor/Android/Sdk/platform-tools:/snap/bin
这是
$PATH
与sudo
:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
如您所见,后者缺少Gradle的路径 .
所以,这里的解决方案是
chmod
和chown
项目文件和构建没有sudo
只是使用cordova build android
.对于那些使用旧版Android工作室的人来说,也许是问题所在 . 我没有安装它并安装了android studio 3(2017年10月)并安装了所有构建工具,更新了cordova模块(npm update cordova),现在一切都像发条一样! windows7用户!!
我在Ubuntu Mate 18.04上发生了同样的事情,这就是我修复它的方法,
1)打开〜/ .bashrc文件 . 2)将这些行添加到最后 .
请记住根据您的设置替换这些路径(如果使用flatpaks,snaps..etc) . 我不知道为什么m2repository存在 . 但没有它,我的系统上的cordova构建失败了 .