Android开发问题排查:CLEARTEXT communication错误的处理和避免

简介: 综上,我们可以说要避免CLEARTEXT通信错误的最佳办法是使用HTTPS,但在实践中遇到某些无法支持HTTPS的API,我们也可以通过配置Network security configuration文件来跳过系统的安全检查。安全和实用性需两者都顾及,明智地选择你的道路,战胜那些阻挡你的小怪兽吧!"

"清明明朗的天空,突然被一片乌云遮挡,未加密的HTTP请求像冷雨,照进Android App开发者的心头。这就是Android P以后的版本,在尝试进行CLEARTEXT(明文)通信时,会遇到的一种错误。如果你是Android V9以后的版本的开发者,那么你就必须面对这个一个越来越常见的问题:CLEARTEXT communication错误。

说到CLEARTEXT communication错误,它就像是黑暗中的“食人花”。为什么这样说?因为它的存在,犹如暗夜中的小怪兽,突然出现在你所期待的结果之前。你一头撞进了Android操作系统的安全政策,让你的App在试图发送未加密的网络请求时崩溃。

所以怎样才能打败这个小怪兽呢?

首先,我们来了解一下这个小怪兽的“家族”。从Android 9(Pie)开始,为增加用户数据的安全性,默认情况下,操作系统会阻止App通过明文进行网络传输。这个设定可以在App的Manifest文件的application标签下加入 android:usesCleartextTraffic=“true” 参数进行修改,但这样可能会导致应用数据的安全问题。

那要如何选择最好的武器来打败这个小怪兽呢?答案是SSL/TLS。它们是https的基础,可以将你的数据加密,使网络间的传输变得安全。而为了实现这个,你需要将网络连接协议由http改为https,这样一来你将不再遭受CLEARTEXT communication错误的困扰。

具体实现起来,就是将请求的 URL 中的 http 部分替换为 https,例如,http://example.com应改为https://example.com

然而,黑暗中的怪兽总是有它的兄弟姐妹,当你发现你使用的第三方API无法提供https链接时,你又该如何战斗呢?这时候你需要创建一个Network security configuration文件,然后将允许清文传输的域名加入。具体步骤如下:

步骤1:在res目录下创建一个xml文件夹,并在该文件夹下创建一个network_security_config.xml文件。

步骤2:在network_security_config.xml文件中写入如下内容:

<network-security-config> 
    <domain-config cleartextTrafficPermitted="true"> 
        <domain includeSubdomains="true">不支持https的域名</domain>
    </domain-config> 
</network-security-config>
​

步骤3:在AndroidManifest.xml中的application标签中添加如下代码:

<application
...
android:networkSecurityConfig="@xml/network_security_config"
...
</application>
​

通过以上操作,你就等于是找到了一个光明的路标,将允许CLEARTEXT通信的域名排除在安全检查范围,这样你就能继续你的旅程了。

当然,你要知道,防止CLEARTEXT communication错误的最佳方法还是尽可能使用https进行网络通信。毕竟,在这个数据安全问题日益重要的现今,加密通信己经成为一个标准,做为Android开发者,我们也应对这个转变有所准备。

综上,我们可以说要避免CLEARTEXT通信错误的最佳办法是使用HTTPS,但在实践中遇到某些无法支持HTTPS的API,我们也可以通过配置Network security configuration文件来跳过系统的安全检查。安全和实用性需两者都顾及,明智地选择你的道路,战胜那些阻挡你的小怪兽吧!"

目录
相关文章
|
敏捷开发 Devops 持续交付
康威定律
康威定律
550 1
|
负载均衡 Ubuntu 应用服务中间件
|
XML JSON Java
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
Android App网络通信中通过okhttp调用HTTP接口讲解及实战(包括GET、表单格式POST、JSON格式POST 附源码)
2501 0
|
Java 开发工具 Android开发
Android与iOS开发环境搭建全解析####
本文深入探讨了Android与iOS两大移动操作系统的开发环境搭建流程,旨在为初学者及有一定基础的开发者提供详尽指南。我们将从开发工具的选择、环境配置到第一个简单应用的创建,一步步引导读者步入移动应用开发的殿堂。无论你是Android Studio的新手还是Xcode的探索者,本文都将为你扫清开发道路上的障碍,助你快速上手并享受跨平台移动开发的乐趣。 ####
|
人工智能 IDE 开发工具
JetBrains Rider 2025.1 发布 - 快速且强大的跨平台 .NET IDE
JetBrains Rider 2025.1 (macOS, Linux, Windows) - 快速且强大的跨平台 .NET IDE
1279 29
JetBrains Rider 2025.1 发布 - 快速且强大的跨平台 .NET IDE
|
API Android开发 容器
33. 【Android教程】悬浮窗:PopupWindow
33. 【Android教程】悬浮窗:PopupWindow
2641 2
|
Ubuntu
在Ubuntu 20.04 x64系统中增加中文支持
将 Ubuntu 系统语言设置为中文: 1. 更新系统语言包: `sudo apt update` 和 `sudo apt install language-pack-zh-hans`。 2. 修改区域设置:编辑 `/etc/default/locale` 文件,设置 `LANG=zh_CN.UTF-8` 和 `LANGUAGE=zh_CN:zh`。 3. 生成中文 locale: `sudo locale-gen zh_CN.UTF-8` 和 `sudo update-locale`。 4. 重启系统: `sudo reboot`。 5. 验证设置: `locale` 命令检查是否生效。
3743 1
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
本文介绍了Spring Boot中静态资源的访问位置、如何进行静态资源访问测试、自定义静态资源路径和静态资源请求映射,以及如何处理自定义静态资源映射对index页面访问的影响。提供了两种解决方案:取消自定义静态资源映射或编写Controller来截获index.html的请求并重定向。
springboot静态资源目录访问,及自定义静态资源路径,index页面的访问
|
弹性计算 网络安全
阿里云服务器更换公网IP地址教程(两种情况)
阿里云服务器可以更换公网IP地址,有两种情况,云服务器创建6小时内可以免费更换公网IP地址,超过6小时后可以通过绑定弹性公网EIP的方式来更换IP地址
12142 0
阿里云服务器更换公网IP地址教程(两种情况)
|
API Android开发
Android12 内置应用问题 mismatch in the <uses-library> tags between the build system and the manifest
Android12 内置应用问题 mismatch in the <uses-library> tags between the build system and the manifest
1119 0

热门文章

最新文章