昨天,我对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_DEBUGGABLE
或getApplicationInfo().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/