Android P-NetworkSecurityPolicy.isClearTextTrafficAllowed false当网络安全配置基本配置ClearTextTrafficAllowed true时

Android P-NetworkSecurityPolicy.isClearTextTrafficAllowed false当网络安全配置基本配置ClearTextTrafficAllowed true时,android,http,https,android-9.0-pie,Android,Http,Https,Android 9.0 Pie,这是在Android p上使用的支持库版本28.0.0-rc01 我根据几个SO帖子遵循了该问题的说明/解决方案: 还有其他几个 问题是,即使network security config base config将此值设置为true,但当我检查NetworkSecurityPolicy.isClearTextTrafficAllowed时,它返回false。这导致在WebView中导航到非https页面时出现错误CLEARTEXT不允许的错误 下面是AndroidManifest的一段 &l

这是在Android p上使用的支持库版本28.0.0-rc01

我根据几个SO帖子遵循了该问题的说明/解决方案:

还有其他几个

问题是,即使network security config base config将此值设置为true,但当我检查NetworkSecurityPolicy.isClearTextTrafficAllowed时,它返回false。这导致在WebView中导航到非https页面时出现错误CLEARTEXT不允许的错误

下面是AndroidManifest的一段

<application
    ...
    android:supportsRtl="true"
    android:networkSecurityConfig="@xml/network_security_config"
    android:usesCleartextTraffic="true">

我尝试过将“UseSLeartextTraffic”和“networkSecurityConfig”结合使用,两者都包括在内

以下是相关的网络安全配置

<?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>

请注意,我尝试过使用和不使用“信任锚”。我有prod AndroidManifest和网络安全配置以及调试版本。但是,两者具有相同的设置(除系统外,调试还允许用户证书)

我还通过检查logcat验证了正在读入安全策略。在这一点上,我感到茫然,因为它似乎是设置不被尊重


任何帮助都将不胜感激。

出于某种原因,调试AndroidManifest和网络安全配置导致了问题,尽管设置几乎相同——唯一的区别是调试版本还允许用户生成证书

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <application
        android:networkSecurityConfig="@xml/network_security_config"
        tools:targetApi="n" />

</manifest>



删除debug AndroidManifest.xml和network_security_config.xml文件解决了该问题。我仍然不知道为什么会这样,但我们不再需要调试清单,所以现在就开始吧。

我只有:

android:usesCleartextTraffic="true" 

在清单中,并删除
网络安全配置.xml
。这似乎奏效了

这是可行的,但我认为这是另一个问题。在我的应用程序中,我试图调试
http
调用,但我认为安卓9不赞成这样做,默认情况下只支持
https
?我猜iOS中也发生了类似的事情。添加该字段只会创建一个异常,允许Android 9使用
http
API
android:usesCleartextTraffic="true"