关于cordova+vue打包apk文件无法访问数据接口

时间:2022-10-15 21:17:44

作为一个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">

此上方法任选一个应该可以解决这个问题。