android網絡模塊

前言

在某些情況下,android測試機是需要隔絕外部網絡環境,但是有需要可以連接內網,因此近日將研究下了android如何通過usb共享上網以及如何去除wifi、藍牙、數據等功能。

各個通信模塊

wifi模塊

HAL層
/frameworks/opt/net/wifi/service/jni/com_android_server_wifi_nan_WifiNanNative.cpp
驅動層
/frameworks/opt/net/wifi/service/jni/com_android_server_wifi_nan_WifiNanNative.cpp

藍牙模塊

HAL層
/system/bt/btcore/src/hal_util.cc
驅動層
/kernel/lge/hammerhead/drivers/bluetooth/

NFC模塊

/system/nfc/halimpl/bcm2079x/nfc_nci.c

僞造網絡連接狀態

/frameworks/base/core/java/android/net/ConnectivityManager.java

ublic NetworkInfo getActiveNetworkInfo() {
    NetworkInfo result = null;
    try { 
        result = mService.getActiveNetworkInfo();
    } catch (RemoteException e) {
        throw e.rethrowFromSystemServer();
    }
    //~~~ Forge result 
    if(result ==null){
        result = new NetworkInfo(1,0,"WIFI","");
        result.setExtraInfo("Test");
        result.setIsAvailable(true);
    }
    //~~~ 
    return result;
}

手機adb shell命令實現配置

1、USBTether開啓USB網絡共享

service call connectivity 33 i32 1

調用connectivity服務的int setUsbTethering(boolean enable)

  • 33表示在文件IConnectivityManager.aidl中是第33個api函數;
  • i32表示int32
  • 1表示true;

在android不同版本下命令如下,8.0後該函數參數個數改變,具體還需分析源碼:

 service call connectivity 32 i32 1 on Ice Cream Sandwich (4.0)
 service call connectivity 33 i32 1 on Jelly Bean (4.1 to 4.3)
 service call connectivity 34 i32 1 on KitKat (4.4)
 service call connectivity 30 i32 1 on Lollipop (5.0)
 service call connectivity 31 i32 1 on Lollipop (5.1)
 service call connectivity 30 i32 1 on Marshmallow (6.0), untested
 service call connectivity 41 i32 1 on Samsung Marshmallow (6.0)
 service call connectivity 33 i32 1 on Nougat (7.0)
 service call connectivity 39 i32 1 on Samsung Nougat (7.0)

2、配置ip

ifconfig rndis0 192.168.137.101 netmask 255.255.255.0 up

3、創建新接口

ndc network create 1

4、修改接口

先把rndis0從老接口移除,不確定是否一定99,可以通過下個命令的日誌來看

ndc network interface remove 99 rndis0

5、配置路由

創建路由表,網關根據自己實際設置

ndc network route add 1 rndis0 0.0.0.0/0 192.168.137.1

6、指定DNS

ndc resolver setnetdns 1 localdomain 192.168.102.81 192.168.102.82

7、指定缺省的網絡接口

ndc network default set 1
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章