关于IONIC4打包Android后ERR_ClEARTEXT_NOT_PERMITTED错误

在ionic4打包成Android包以后真机运行的时候可能会报ERR_ClEARTEXT_NOT_PERMITTED错误,原因是Android8以后对网络安全进行了限制,不允许明文传输,即http请求

解决办法三种:

1、Android版本降级,删除原Android8以上版本,添加Android7以下版本

ionic cordova platform rm android//执行删除Android平台命令

ionic cordova plarform add [email protected]//添加Android7版本或者以下版本

2、放开对HTTP的限制

需要对下图2个文件进行修改,文件路径在:项目名/platforms/android/app/src/main/res/xml/network_security_config.xml和项目名/platforms/android/app/src/main/AndroidManifest.xml

关于IONIC4打包Android后ERR_ClEARTEXT_NOT_PERMITTED错误_第1张图片

2.1、首先修改network_security_config.xml文件,localhost修改为需要访问的第三方接口地址

关于IONIC4打包Android后ERR_ClEARTEXT_NOT_PERMITTED错误_第2张图片

2.2、修改AndroidManifest.xml文件,在标签添加android:networkSecurityConfig="@xml/network_security_config" android:usesCleartextTraffic="true"

修改配置即可。

3、修改服务端,将http协议转换为https协议即可

3.1、首先使用生成证书(需要先配置JDK),本项目服务端使用Java语言

E:\>keytool -genkeypair -alias "tomcat" -keyalg "RSA" -keystore "E:\tomcat.keyst
ore" -validity 36500

-storetype 指定密钥仓库类型 
-alias 指定别名
-keyalg 指定生证书的算法名称,RSA是一种非对称加密算法
-keystore 指定生成的证书文件的存储路径 
-validity 证书的有效期(单位:天)36500即为100年

按回车之后依次输入:

1、密钥库口令

2、您的名字与姓氏:

3、后面的步骤可以不填。。。

4、确认信息:Y

5、确认密码

6、完成后在系统E盘根目录下会生成tomcat.keystore文件

3.2、将tomcat.keystore文件复制到服务端项目根目录下

关于IONIC4打包Android后ERR_ClEARTEXT_NOT_PERMITTED错误_第3张图片

3.3、修改项目application.properties文件,我的文件目录层级如下

关于IONIC4打包Android后ERR_ClEARTEXT_NOT_PERMITTED错误_第4张图片

添加如下配置即可

#端口号HTTPS默认端口号为443
server.port: 443
#你生成的证书名字
server.ssl.key-store: tomcat.keystore
#密钥库密码
server.ssl.key-store-password:123456
server.ssl.keyStoreType: JKS
#别名
server.ssl.keyAlias: tomcat

以上三种方法,我采用的是第三种将http转换成https请求,自签名证书用于测试,生成环境可在各服务商申请证书

关于跨域请求参考另一篇文章:跨域请求解决方法

你可能感兴趣的:(前端,ionic,前端,ionic,android)