作为一个cordova小白,我按照官方文档和网上资料完成了讲vue文件打包到cordova中并打包成apk文件,完成了一个简单app的制作,当我正陶醉于可以自己完成一个app的时候突然发现,我的app居然无法访问服务器数据,这时我疯狂地去找解决方案,然而可能是我的搜索能力太差了,一直没有找到解决方法,最后当我即将放弃的时候发现了一个方法,觉得它是比较靠谱的,果不其然,解决了我的问题。
出现这种原因是因为我安装的android sdk是属于高版本的,在高版本的android sdk中默认开启了对非加密的明文传输的保护,我们无法通过http网络请求的方式获取数据。
解决方案如下(取一即可):
1. android sdk27及以上有这种限制,可以将android sdk降低到26版本。降低android版本可以通过命令cordova platform remove android 再 cordova platform add android@6.3.0,当我们打包时候就会自动给我们下载安装对应版本。
2. 在目录project\platforms\android\res\xml添加文件network-security-config.xml,插入内容如下
<?xml version="1.0" encoding="utf-8"?> <network-security-config> <base-config cleartextTrafficPermitted="true"> <trust-anchors> <certificates src="system" /> </trust-anchors> </base-config> </network-security-config>
在project\platforms\android\app\src\main\AndroidManifest.xml文件中修改,修改内容如下
<?xml version="1.0" encoding="utf-8"?> <manifest> <application android:networkSecurityConfig="@xml/network_security_config"> </application> </manifest>
3. 可以使用https调用数据接口
4.在AnroidManifest.xml中的application添加设置项:
<application android:usesCleartextTraffic="true">
此上方法任选一个应该可以解决这个问题。