获取 静态 IP地址命令:
settings get system ethernet_static_ip
设置静态IP地址命令:
settings put system ethernet_static_ip 192.168.1.222
对应的网关,子网掩码,DNS对应的key string为
ethernet_static_netmask,ethernet_static_gateway,ethernet_static_dns1,ethernet_static_dns2
该命令的实现文件目录为:
frameworks/base/cmds/settings/src/com/android/commands/settings/SettingsCmd.java
具体使用提示如下:
settings数据库存放路径:/data/data/com.android.providers.settings/databases
默认数据加载文件:/frameworks/base/packages/SettingsProvider/res/values/defaults.xml
添加dns
查看eth配置信息
Platform: RK3368,OS: Android 6.0,Kernel: 3.10.0
1、以太网与Wi-Fi共存问题
想要多个网卡同时使用,首先就要解决多网卡共存问题。Android系统默认会将不需要的网络给关闭的,以降低功耗。所以要解决以太网与Wi-Fi共存问题,需要做如下改动:
查一下当前系统的网络优先级配置:
frameworks/base/core/res/res/values/config.xml
可以看到以太网优先级高于wifi,也就是说以太网和wifi同时打开,默认会使用以太网。
2、修改ip路由
解决了多网卡共存问题,那么接下来就是要配置ip路由了,先ifconfig看一下设备的网络信息如下,一个以太网,一个wifi:
可以看到两个网卡为不同网段的IP地址,但这个时候相互ping的话是ping不通的.
我们再查看当前路由信息:
IP路由似乎也是没问题的,系统自动添加了路由配置。
这如果是ubuntu,debian等linux系统的话当然可以ping通;但是在Android系统中就行不通了。由于Android系统默认使用的是优先级和评分高的网络,而这台设备系统配置的是以太网优先级高于wifi,所以默认路由使用的是以太网的路由规则。直接用ping命令是不能ping通wifi那边的网络。需要将无线的默认路由规则添加到以太网的路由表中(也就是Android系统当前用的路由表为优先级最高的那个).
所以现在需要修改eth0路由表:
上面命令的意思是:向路由表eth0中添加一条‘192.168.43.0/24 dev wlan0’路由规则.这样发送到192.168.43网段的数据就会通过wifi出去了。在设备中就可以ping通无线和有线两个网络了.
3、 双IP地址也是类似
比如要将一个网卡设置两个IP地址。
4、 Android 路由相关代码:
当然啦!以上都是手动敲命令实现的,如果要做到自动修改路由表,还需要修改系统相关代码,要等有时间再去研究了。
相关代码目录:framework/base/
services/core/java/com/android/server/ConnectivityService.java
services/core/java/com/android/server/NetworkManagementService.java
services/core/java/com/android/server/net/IpConfigStore.java
网络调试相关日志查看: