您是否知道从Android 9(API级别28)开始,明文(非HTTPS)支持默认情况下处于禁用状态?始终建议通过HTTPS建立连接,以确保任何Web通信都是安全的。如果尚未为HTTPS配置服务器上的应用程序需要下载图像或文件,则此策略可能会影响您的开发周期。另外,您可能只想在本地调试应用程序,而又不想安装开发证书。您可能有很强的业务要求,所有版本的Android上的所有网络流量都始终为HTTPS。这是Android新增的网络安全配置功能的所在,可帮助我们在应用程序中微调网络流量安全。

android 网络命令大全 android 网络安全配置_xml

明文什么时候适用?

当您的应用程序设置为针对Android 9并针对Android 9进行编译时,默认情况下,Android 9(Pie,API 28)设备上的Cleartext是禁用的。

android 网络命令大全 android 网络安全配置_应用程序_02

在Android Manifest选项中,您会找到可以设置为Android 9的目标框架:

android 网络命令大全 android 网络安全配置_应用程序_03

网络安全配置

要配置安全性选项,您将在Resources / xml下创建一个名为network_security_config.xml的新xml文件。

android 网络命令大全 android 网络安全配置_xml_04

以下配置将允许在我们的应用中允许针对特定域和IP地址的明文Web流量:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
  <domain-config cleartextTrafficPermitted="true">
    <domain includeSubdomains="true">10.0.2.2</domain> <!-- Debug port -->
    <domain includeSubdomains="true">xamarin.com</domain>
  </domain-config>
</network-security-config>

您还可以通过限制所有版本的Android上的明文流量(无论编译框架和目标框架)来增强应用程序的安全性。这可以通过将cleartextTrafficPermitted设置为false来实现。启用此功能将始终限制所有非HTTPS的流量。

配置应用程序清单

最后要做的是在Android清单中的应用程序节点上配置networkSecurityConfig属性:

<?xml version="1.0" encoding="utf-8"?>
<manifest>
    <application android:networkSecurityConfig="@xml/network_security_config">
        ...
    </application>
</manifest>

而已!现在,该应用程序已完全配置为在Web请求期间允许或限制明文。