好几个需要注意的地方,都放在这一篇里面吧。
1.第一个是在进行添加android环境的时候出现错误,会报一个类似SDK环境变量配置不正确的错误,下次我遇到截图,这次急着处理Bug忘记截图了,这种时候两种可能:
1. android版本的问题,执行cordova platforms add android语句的时候后面加上android的版本号。
2. SDK安装目录下有个文件缺失一部分,这时需要自行下载文件加进来,点击下载,下载SDK tools的压缩包,解压之后将tools里面的templates文件夹覆盖到你的SDK安装目录下,如果你发现你的tools文件夹同样缺失很多的话,建议你直接将tools文件夹整个覆盖(我第一次只覆盖templates文件夹失败)
2.你生成的apk文件在手机上面安装之后打开是空白,这种情况是android版本兼容性问题,解决办法是在cordova打包之前添加插件,执行cordova plugin add cordova-plugin-crosswalk-webview,不过执行这个语句的时候有时候直接成功,有时候就会报个错,但是当你查看安装的插件时(cordova plugin ls)还能看到这个插件。
3.当你打包成功安装成功打开是你想要的页面的时候你可能会发现你调用不了任何接口!!!这是跨域的问题,同样需要安装一个插件whitelist,如果你发现你已经有这个插件了那就先把这个插件删除重新安装一次吧,如果没有直接安装插件
删除插件:cordova plugin remove cordova-plugin-whitelist
添加插件:cordova plugin add cordova-plugin-whitelist
4.这一点不是一个错误,类似于一个节省时间的处理方式:当你在执行cordova build android进行打包的时候可能会卡在下载gradle文件上,这个时候打开浏览器会发现下载速度20K,还会产生连接超时的现象,极易失败,这里我们可以复制提供的下载链接到迅雷里面去下载:
下载完成之后将压缩包放至当前cordova工程的\platforms\android\gradle文件夹下:
然后修改配置文件,platforms\android\cordova\lib\builders文件夹下GradleBuilder.js文件,将
var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] ||'http\\://services.gradle.org/distributions/gradle-2.14.1-all.zip';
注释掉,更换为:var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || '../gradle-2.14.1-all.zip';
这个时候再执行打包操作就会很快了。
5.假如你需要调用摄像头,获取手机文件之类的你肯定要安装插件,但是在某些情况下虽然插件安装成功了但是在手机上面运行的时候并不能够调用摄像头,这个时候需要看一下cordova的配置文件里面是否添加了你刚安装的插件信息(一般会自动加进来,但是我的没加进来,我和另一台机器的配置文件在对比的时候才发现这个问题):
如果遇到这种情况就到cordova工程目录下面找到config.xml配置文件,看一下这里面是否有安装的插件信息,如果没有就手动添加进来,需要注意版本号。
6.我的手机Android版本是5.1.1项目运行没有问题,但是在新手机上8.0之上的我安装的相机插件无法使用,在调用相机的时候会直接报错然后闪退,报错信息为:exposed beyond app throughClipData.Item.getUri(),我百度到的大多数解决办法都是原生开发的解决方案,cordova打包的就像孤儿一样