Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何调试Android';将WIFI服务操作降低到驾驶员级别?_Java_Android_C++_C_Wifi - Fatal编程技术网

Java 如何调试Android';将WIFI服务操作降低到驾驶员级别?

Java 如何调试Android';将WIFI服务操作降低到驾驶员级别?,java,android,c++,c,wifi,Java,Android,C++,C,Wifi,我需要了解一条消息是如何从服务级别到驱动程序调用遍历Android系统的 我已经决定从WiFi开始,尽管我目前的硬件平台——一个带有TI Rowboat(Android 4.2.2)的Beaglebone黑板——没有WiFi功能 我的计划是向源代码插入日志函数调用,并通过am程序向WifiService发送意图,以便触发发送给驱动程序的消息 在init.rc中,我发现ServiceManager是通过以下代码启动的 service servicemanager /system/bin/servi

我需要了解一条消息是如何从服务级别到驱动程序调用遍历Android系统的

我已经决定从WiFi开始,尽管我目前的硬件平台——一个带有TI Rowboat(Android 4.2.2)的Beaglebone黑板——没有WiFi功能

我的计划是向源代码插入日志函数调用,并通过am程序向WifiService发送意图,以便触发发送给驱动程序的消息

在init.rc中,我发现ServiceManager是通过以下代码启动的

service servicemanager /system/bin/servicemanager
    class core
    user system
    group system
    critical                  
    onrestart restart zygote                                           
    onrestart restart media                       
    onrestart restart surfaceflinger
    onrestart restart drm
此外,从frameworks/base/services/java/com/android/server/SystemServer.java中,我找到了这个代码片段

try {
    Slog.i(TAG, "Wi-Fi Service");
    wifi = new WifiService(context);
    ServiceManager.addService(Context.WIFI_SERVICE, wifi);
} catch (Throwable e) {
    reportWtf("starting Wi-Fi Service", e);
}
我相信这会启动WifiService

但是,我无法确定SystemServer是如何启动的

除此之外,我还在frameworks/base/wifi/java/android/net/wifi/WifiManager.java中插入了一个日志函数,如下所示

public WifiManager(Context context, IWifiManager service) {
    mContext = context;
    mService = service;
    Log.i(TAG, "WiFiManager Created. Calling init()"); // inserted log
    init();
}
通过使用
logcat-s WifiManager
,我可以看到它在工作,这会导致

I/WifiManager(  317): WiFiManager Created. Calling init()
I/WifiManager(  396): WiFiManager Created. Calling init()
I/WifiManager(  968): WiFiManager Created. Calling init()
然而,我无法确定为什么会呼叫3次或呼叫来自何处

至于C代码,我希望使用
dmesg
查看它的日志消息

我配置了cscope和ctag来浏览代码,但我无法找到WifiService或WifiManager下面的内容


看来我还有很长的路要走,所以非常感谢您的帮助。

本演示的幻灯片8可能会回答您的几个问题


WifiService和WifiController的源代码可能也会有所帮助,您可以在
frameworks/base/services/java/com/android/server/wifi
中找到它们。另外,请查看其中的
README.txt

这可能从理论上回答了这个问题,但最好将答案的基本部分包含在此处,供未来用户使用,并提供链接供参考。通过@Mogsdad可能会变得无效。我很清楚,也很想这样做,但我不允许包含图像:(也许你可以这样做?URL是否完成了…但你仍然可以提供文字来解释与问题的相关性。谢谢,@aaahaap。我的研究是基于“马拉卡纳”的幻灯片。因为已经一年了,我记不起我是否能找到所有的电话。如果我找到我自己的幻灯片,我会把它们张贴在这里。非常感谢!