Android默认开机是获取的动态ip,在一些环境中需要设置静态ip,目前项目中静态ip,网关等都能完成,就dns这个难题困扰 了我们很久。
Android4.3之前
在Android4.3以前,如果需要修改DNS服务器,有很多种方法,这些方法的实质就是向系统属性中添加“net.dns1”字段的信息。这些方法的前提条 件都是获得root权限。具体方法有:
1. 在shell下,直接设置“net.dns1”等的系统属性。
2. 在init.rc脚本中,添加对“net.dns1”等系统属性的设置。
3. 在root权限下创建resovle.conf文件并添加相关name server信息。
Android4.3以后
在Android4.3以后,通过系统属性或者解析文件来手动修改DNS服务器已经是不可能了。主要有两种方法,一个是在NDK下面修改DNS解析逻辑,第二个是通过Android系统源代码修改相关逻辑,让Android4.3的新修改无效,然后重构Android。下面是一个老外基于NDK的修改方案,该方案需要以下权限:
1. Root权限
2. 对/system文件夹有写权限
3. 能修改/etc/init.d
该方案重写了DnsProxyListener和bionic解析器逻辑,通过将/dev/socket/dnsproxyd改名然后自己替换它来达到目的。
下载地址:http://download.csdn.net/detail/asdfgcjw/8623337