现象问题:
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'android'.
> You have not accepted the license agreements of the following SDK components:
[Android SDK Platform-Tools].
Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager.
Alternatively, to learn how to transfer the license agreements from one workstation to another, go to http://d.android.com/r/studio-ui/export-licenses.html
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
BUILD FAILED in 15s
初步定位
在cordova打包app时,尤其需要注意手机android SDK版本和cordova版本之间的关系。
对于不同的手机android版本,cordova的编译和运行会由于版本不匹配而失败。
查询版本的对应关系可以到官网:
https://cordova.apache.org/docs/en/9.x/guide/platforms/android/index.html#page-toc-source
重要!
结论:cordova版本和android版本要对应一致,否则会打包失败。
并且,容易被代沟到android sdk的配置,或者花钱开通vpn,或者 gradle 研究及配置。
最终定格在cordova@6版本。从最新版@9,然后逐步降级尝试8,7,6,同时完成cordova create项目的。
怀疑过的错误:
gradle版本 -> 原因不对android sdk manager 下载 -> 原因不对,并且下载不下来cordova 版本 -> 原因不对,快找到问题根源了cordova 和 android 对应的版本 -> 对了。
最终执行命令:
npm i -g cordova@6 //安装cordova6版本
cordova -v //确认安装的cordova版本是否为6
cordova create build com.helloworld.app 世界你好 //创建1个cordova项目并定义好包名
npm run deploy //运行package.json中配置的命令[执行bash编写的部署打包脚本]
常用cordova命令
npm view cordova-android //查看可选版本
npm view cordova-android@7.* //可以用通配符,查询所需版本。例如:要显示所有7.X.X版本,用如下命令:
npm view cordova-android@8.0.0 //显示特定版本8.0.0
cordova platform add android@^7.1.4 //安装指定版本,命令如下:
npm install -g cordova //全局安装cordova
npm uninstall cordova -g //卸载全局安装的cordova
npm install -g cordova@4.1.2 //安装指定版本的cordova
cordova platform add android@version //使用cordova 添加platform可以指明android版本
npm update -g cordova //更新cordova
cordova create hello com.example.hello HelloWorld //创建一个APP只需要执行
cordova requirements android //查询打包android的环境是否都已安装好
其他
cordova create 根据官方描述该命令支持四个参数
path:也就是项目的目录名称
ID:项目的ID,用于写入config.xml的widget中,通常格式为 com.example.hello
name:应用程序的显示名称
options:项目的可选配置项
--template:可执行项目的模版文件
--copy-from 指定src
--link-to 可将一个前端资源目录链接到项目的www目录下而不是一个副本