android 通过DHCP 获取IP 初步流程 ==================================================================== 1. java 中实现log 的方法是 Log.v(TAG, "Static IP configuration succeeded"); D/WifiStateTracker( 860): DhcpHandler: DHCP request started 发生在 ./frameworks/base/wifi/java/android/net/wifi/WifiStateTracker.java:2285 2. java 层运行dhcp 的地方有两个 ./frameworks/base/ethernet/java/android/net/ethernet/EthernetStateTracker.java ./frameworks/base/wifi/java/android/net/wifi/WifiStateTracker.java 定义在 ./frameworks/base/core/java/android/net/NetworkUtils.java runDhcp 的jni 实现./frameworks/base/core/jni/android_net_NetUtils.cpp:231 对应的函数是android_net_utils_runDhcp,此函数会调用dhcp_do_request, dhcp_do_request定义在./system/core/libnetutils/dhcp_utils.c 中 3. rt3070 wifi 驱动适配层在./hardware/libhardware_legacy/wifi/wifi_ralink3070.c Ethernet 分析 1.EthernetNative.java 的jni 在./frameworks/base/core/jni/android_net_ethernet.cpp 故障描述: (android手机)LG P350连接wifi(wlan)时若使用动态ip分配,则总停留在“正在从[SSID名称]获取IP地址”,然后获取失败,自动断开。反复重新连接均如此。 设置静态IP则可以连接。 排查过程: (1)搜索引擎输入“LG P350 wifi obtain ip fail”,无有效信息。 (2)刷包,刷了 3 个官方 KDZ(V10K_00,V10N_00,V10P_00),无果。 (3)今天反编译关系,得学 android调试技术,adb logcat时发现 DHCP获取ip 时,提示有文件无权限打开,接着就是超时失败。关键部分信息摘录如下: D/NetworkStateTracker(1372): setDetailed state, old =AUTHENTICATING and new sta te=OBTAINING_IPADDR „... D/WifiStateTracker(1372): DhcpHandler: DHCP request started „. E/dhcpcd ( 9576): open`/data/misc/dhcp/dhcpcd-wlan0.pid': Permission denied „... V/WifiStateTracker(1372): Changing supplicant state: COMPLETED ==> DORMANT D/WifiStateTracker(1372): Reset connections and stopping DHCP „„. D/WifiStateTracker( 1372): Disabling interface D/NetworkStateTracker(1372): setDetailed state,...