Android 5.1 启动有线网卡并为其分配静态IP地址

Android 5.1系统的有线网卡架构参考RK3288架构。系统默认使用DHCP获取IP。下面我们就介绍设置静态IP的方法。

首先看一个代码。路径如下:

frameworks\opt\net\ethernet\java\com\android\server\ethernet\EthernetConfigStore.java

public class EthernetConfigStore extends IpConfigStore {
    private static final String TAG = "EthernetConfigStore";


    private static final String ipConfigFile = Environment.getDataDirectory() +
            "/misc/ethernet/ipconfig.txt";

    public EthernetConfigStore() {
    }


    public IpConfiguration readIpAndProxyConfigurations() {
        SparseArray networks = readIpAndProxyConfigurations(ipConfigFile);


        if (networks.size() == 0) {// 如果/misc/ethernet/ipconfig.txt这个文件不存在的话,那么我们就使用DHCP方法
            Log.w(TAG, "No Ethernet configuration found. Using default.");
            return new IpConfiguration(IpAssignment.DHCP, ProxySettings.NONE, null, null);
        }


        if (networks.size() > 1) {
            // Currently we only support a single Ethernet interface.
            Log.w(TAG, "Multiple Ethernet configurations detected. Only reading first one.");
        }

        return networks.valueAt(0);
    }

    public void writeIpAndProxyConfigurations(IpConfiguration config) {
        SparseArray networks = new SparseArray();
        networks.put(0, config);
        writeIpAndProxyConfigurations(ipConfigFile, networks);
    }

}

知道了这个方法。我们就在系统的Ethernet界面采用静态方法设置一下IP及其其他参数。从得到ipconfig.txt文件。然后进入命令行,输入 :
adb root 

adb pull /data/misc/ethernet/ipconfig.txt 

从而得到ipconfig.txt 。

下面我们通过修改ipconfig.txt 的路径。如下:

private static final String ipConfigFile = Environment.getRootDirectory() +

"/etc/ipconfig.txt";

这样我们就把ipconfig.txt这个文件拷贝到系统的etc目录下就可以了。方法如下:

device.mk中增加如下代码:

PRODUCT_COPY_FILES += $(LOCAL_PATH)/ipconfig.txt:system/etc/ipconfig.txt 

从新编译即可验证。

你可能感兴趣的:(2018-01-29)