在Android P中,cleartext communication is disabled by default。相反,有两个选项:
我的问题与第二种方法有关。我可以在network_security_config.xml
中将这样的特定IP地址列入白名单。<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">192.168.1.1</domain>
</domain-config>
</network-security-config>
但是,我想将所有私有IP地址列入白名单。我有一些反复试验的案例,但无法使其正常工作。
从本质上讲,是否提供了在网络安全配置中定义IP地址的范围的选项?
答案 0 :(得分:0)
不,对不起。
实际上,我怀疑支持<domain includeSubdomains="true">192.168.1.1</domain>
是偶然的,并且如果他们开始认为<domain>
指的是实际域名而不是诸如IP之类的任意主机值,那么支持{{1}}可能是不可靠的地址。
答案 1 :(得分:0)
要获取计算机的IP,有解决方案
这是我的网络配置文件,位于res / xml:
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<domain-config cleartextTrafficPermitted="true">
<domain includeSubdomains="true">
<!-- YOUR LOCAL IP -->
</domain>
</domain-config>
</network-security-config>
这是我的功课代码:
static def getLocalIP() {
def ip4s = []
NetworkInterface.getNetworkInterfaces()
.findAll { it.isUp() && !it.isLoopback() && !it.isVirtual() }
.each {
if (it.name.startsWith("wlan")) {
it.getInetAddresses()
.findAll { !it.isLoopbackAddress() && it instanceof Inet4Address }
.each { ip4s << it }
}
}
return ip4s.first().toString().substring(1)
}
task ipNetwork(type: Copy) {
from ('src/main/res/xml/network_security_config.xml')
into ('src/debug/res/xml')
filter {
String line -> line.replaceAll("<!-- YOUR LOCAL IP -->", getLocalIP())
}
}
这只会更改调试文件,因此将调试应用程序指向本地计算机很有用。该脚本可适用于针对IP的每个变体生成一堆域标签。这是我的第一个想法,为每个192.168。添加一个域。,但这会导致文件包含65536个域,这似乎有点糟糕
答案 2 :(得分:0)
如果您正在寻找一种方法来允许特定范围的IP地址,但是这似乎不可能,那么您可以允许所有IP地址并通过以下配置来消除错误消息:
config.xml
<platform name="android">
...
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
...
</platform>
资源/android/xml/network_security_config.xml
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true" />
</network-security-config>