我正在尝试建立一个Cordova项目。我正在使用Ubuntu 17.04。我运行 "dependencies": {
"@angular/animations": "^4.0.0",
"@angular/common": "^4.0.0",
"@angular/compiler": "^4.0.0",
"@angular/core": "^4.0.0",
"@angular/forms": "^4.0.0",
"@angular/http": "^4.0.0",
"@angular/platform-browser": "^4.0.0",
"@angular/platform-browser-dynamic": "^4.0.0",
"@angular/router": "^4.0.0",
"core-js": "^2.4.1",
"rxjs": "^5.4.1",
"zone.js": "^0.8.14"
},
"devDependencies": {
"@angular/cli": "1.2.6",
"@angular/compiler-cli": "^4.0.0",
"@angular/language-service": "^4.0.0",
"typescript": "~2.3.3"
}
但是构建失败并显示以下消息:
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
看起来像是安装了Gradle。
Gradle路径也会显示在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
:
$PATH
:
echo $PATH
Cordova版本是7.0.1。
有人可以帮我弄清楚即使安装了Gradle,构建也会失败吗?
修改
好的,我试图通过/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
创建一个全新的项目。该项目可以成功构建和运行。我正在尝试构建的项目可能出现什么问题?
答案 0 :(得分:1)
在Ubuntu Mate 18.04上发生了同样的事情,这是我如何解决的问题,
1)打开〜/ .bashrc文件。 2)将这些行添加到末尾。
export ANDROID_HOME=~/Android/Sdk/
export PATH=${PATH}:~/Android/Sdk/platform-tools:~/Android/Sdk/tools
export GRADLE_ANDROID_HOME=/opt/android-studio/gradle
export PATH=$PATH:$GRADLE_ANDROID_HOME/gradle-4.6/bin
export PATH=$PATH:$GRADLE_ANDROID_HOME/m2repository
请记住要根据您的设置替换这些路径(如果您使用Flatpaks,snap..etc)。我不知道为什么有m2repository。但是,如果没有它,cordova的构建将在我的系统上失败。
答案 1 :(得分:0)
我终于明白了。
项目中的某些文件已被锁定,由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
。
答案 2 :(得分:0)
也适用于那些使用旧版android studio的用户,可能就是问题所在。我没有安装它并安装了android studio 3(2017年10月)并安装了所有构建工具,更新了cordova模块(npm update cordova),现在一切都像发条一样! windows7用户!!