昨天,我对Android N预览版进行了新的升级。自从升级以来,我再也无法启动我的应用程序。

java.io.IOException: Cleartext HTTP traffic to myserver.com not permitted

我试图在 list 中将usesCleartextTraffic设置为true或添加一个network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">myserver.com</domain>
    </domain-config>
</network-security-config>

两者都没有工作。关于那里发生的事情有什么想法吗?

当我尝试在 list 中定义networkSecurityConfig时,出现编译错误
Error:(35) No resource identifier found for attribute 'networkSecurityConfig' in package 'android'

不太清楚为什么。该文件在那里,一切看起来都不错。

在Google的Android问题跟踪器中找到了this建议。他们建议将network_security_config定义移动到meta-data。我仍然得到同样的异常(exception)。

最佳答案

Android N Developer Preview 4中存在一个已知问题,即如果应用程序修改了ApplicationInfo.flags,则即使应用程序未请求阻止明文通信量,它也会触发阻止来自该应用程序的明文通信量。该修补程序在下一个Developer Preview中。因此,这与您的网络安全配置无关。实际上,您似乎甚至不需要声明自定义的Network Security Config。

如果您不能等到下一个Android N Developer Preview,请检查您的应用程序中修改其自己的ApplicationInfo.flags的位置。通常,这采取getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLEgetApplicationInfo().flags = ApplicationInfo.FLAG_DEBUGGABLE的形式。这些用法的解决方法是(getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE)

另外,作为一种解决方法,请在应用程序的生命周期中尽早调用NetworkSecurityPolicy.isCleartextTrafficPermitted()。如果在篡改ApplicationInfo.flags的代码之前调用此替代方法,则该方法应起作用。

关于android - Android N预览版不允许到myserver.com的明文HTTP流量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37866619/

10-09 07:59