Cordova初使用新建安卓项目踩坑之实录
前言
作为一个前端,一直在写着网页端的项目,也写过一些移动端的项目,但也仅限于H5页面,内嵌于原生应用之中,还有就是类似小程序或者快应用这些经过二次封装的伪App,所以想尝试自己做一个纯正的手机端App,选型上有Ionic
和ReactNative
两种,但是个人不用AngularJS
,也不喜欢它,ReactNative上手也较难,所以准备使用Cordova
进行打包,网页端可以随心所欲的使用自己喜欢的技术,可谓是很爽了。
环境安装
-
Cordova CLI安装
cnpm install -g cordova
-
JDK安装
可以参照我之前写的这篇文章JDK安装
-
Android Studio安装
下载地址为Android Studio
-
SDK安装
在安装完Android SDK
后,你需要安装任何你希望的目标API级别的SDK包。并确保下面已经安装:
- 目标Android版本的Android Platform SDK
- Android SDK build-tools,版本19.1.0或者之上
- Android Support Repository (在"Extras"查找)
设置ANDROID_HOME
环境变量,指定为Android SDK
安装路径,在PATH
中加入
%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;
在命令行中输入adb,如果出现下面的提示则代表成功:
-
Gradle安装
首先下载安装包Gradle 安装包,解压后放在指定目录。
在环境变量的PATH中加入
E:\software\gradle-4.6\bin;
在命令行中输入
gradle -v
出现版本号则代表安装成功
踩坑
- 无法
create
新项目,报错如下:
0 info it worked if it ends with ok
1 verbose cli [ 'E:\\software\\nodejs\\node.exe',
1 verbose cli 'E:\\software\\nodejs\\node_modules\\npm\\bin\\npm-cli.js',
1 verbose cli 'install',
1 verbose cli 'C:\\Users\\hwx547308\\AppData\\Roaming\\npm\\node_modules\\cordova\\node_modules\\_cordova-app-hello-world@3.12.0@cordova-app-hello-world\\index.js',
1 verbose cli '--production',
1 verbose cli '--no-save' ]
2 info using npm@5.6.0
3 info using node@v8.9.4
4 verbose npm-session 4d8e1acac48c2f3b
5 silly install loadCurrentTree
6 silly install readLocalPackageData
7 silly fetchPackageMetaData error for file:C:/Users/hwx547308/AppData/Roaming/npm/node_modules/cordova/node_modules/_cordova-app-hello-world@3.12.0@cordova-app-hello-world/index.js Could not install from "..\AppData\Roaming\npm\node_modules\cordova\node_modules\_cordova-app-hello-world@3.12.0@cordova-app-hello-world\index.js" as it does not contain a package.json file.
8 verbose stack Error: ENOENT: no such file or directory, open 'C:\Users\hwx547308\AppData\Roaming\npm\node_modules\cordova\node_modules\_cordova-app-hello-world@3.12.0@cordova-app-hello-world\index.js\package.json'
9 verbose cwd C:\Users\hwx547308\.cordova
10 verbose Windows_NT 6.1.7601
11 verbose argv "E:\\software\\nodejs\\node.exe" "E:\\software\\nodejs\\node_modules\\npm\\bin\\npm-cli.js" "install" "C:\\Users\\hwx547308\\AppData\\Roaming\\npm\\node_modules\\cordova\\node_modules\\_cordova-app-hello-world@3.12.0@cordova-app-hello-world\\index.js" "--production" "--no-save"
12 verbose node v8.9.4
13 verbose npm v5.6.0
14 error code ENOLOCAL
15 error Could not install from "..\AppData\Roaming\npm\node_modules\cordova\node_modules\_cordova-app-hello-world@3.12.0@cordova-app-hello-world\index.js" as it does not contain a package.json file.
16 verbose exit [ 1, true ]
在网上找了找,发现降级到6.0.0
即可,于是
cnpm install -g cordova@6.0.0
这次成功创建了项目,但是运行cordova requirements
却又报错了,说是Android target not installed, Android sdk not installed, Gradle not installed
在网上又找到了如下办法:
cordova platform add android@latest --save
这次安装的时候会报错,cordovaProject.projectConfig.getFileResources is not a function
但是运行cordova requirements
却是对的,显示如下:
从这里我推断出,不同的cordova版本识别安装的sdk的版本是不一样的,都有自己对应的版本
终极解决方案:
不用cnpm安装,是用npm安装解决了可以创建新项目
npm install -g cordova