在Android N预览中不允许使用Cleartext到myserver.com的HTTP流量

昨天我获得了 Android N预览的新升级.自从我升级以来,我再也无法启动我的应用了.
java.io.IOException: Cleartext HTTP traffic to myserver.com not permitted

我试图在清单中将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>

也没有工作.关于那里发生了什么的任何想法?

当我尝试在清单中定义networkSecurityConfig时,我收到编译错误

Error:(35) No resource identifier found for attribute 'networkSecurityConfig' in package 'android'

不太确定为什么.文件在那里,一切看起来都不错.

在Google的Android问题跟踪器中找到了this建议.他们建议将network_security_config定义移动到元数据.我仍然得到相同的例外.

解决方法

Android N Developer Preview 4中存在一个已知问题,即如果应用修改其ApplicationInfo.flags,它也会触发阻止来自应用的明文流量,即使该应用未请求明文流量被阻止.修复程序位于下一个开发人员预览版中.因此,这与您的网络安全配置无关.事实上,您甚至不需要声明自定义网络安全配置.

如果您不能等到下一个Android N开发者预览版,请检查您的应用程序,以查找它修改自己的ApplicationInfo.flags的位置.通常,它采用getApplicationInfo().flags& = ApplicationInfo.FLAG_DEBUGGABLE或getApplicationInfo().flags = ApplicationInfo.FLAG_DEBUGGABLE的形式.这些用法的修复方法是(getApplicationInfo().flags& ApplicationInfo.FLAG_DEBUGGABLE).

或者,作为一种变通方法,尽可能早地在应用程序的生命周期中调用NetworkSecurityPolicy.isCleartextTrafficPermitted().如果在篡改ApplicationInfo.flags的代码之前调用此变通方法应该有效.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...