1.Android的libhardware_legacy是个什么?请详细介绍一下2.现在Android中的wifi调好用了,gps就不好用;反之,gps好用了,wifi就不好用(在Setting里打开wifi时,每次都直接提示Error,在ddms里看到“ERROR/WifiService(145): Failed to load Wi-Fi driver.”)。问题怀疑出在libhardware_legacy.so上,请问高手,可以用什么方法或工具调试libhardware_legacy.so呢,能跟代码么?
或者有什么办法排解这个问题呢?请详述~~

解决方案 »

  1.   

    搜索一下这个库代码在哪里,加点debug信息进去,分开调试,看这个库有被哪个模块调用。从表面上来看,这两个模块没有冲突的啊。
      

  2.   

    gps和wifi都是被legacy调起来的,在wifi侧加调试信息了,从信息看,是驱动没有被调到。
      

  3.   

    gps和wifi的android适应层都在这个库里面啊。加trace吧,看看哪里加载出错了
      

  4.   

    就是用logcat看的啊logi logd loge这样的打印一些啊,你还是google搜搜看吧,网上一大把,一两句说不清楚
      

  5.   

    哦,这个不也是看Log么,这个方法已经试过了,打出来的信息很有限。打出来的信息如下:
    I/ActivityManager(  140): Starting activity: Intent { act=android.intent.action.MAIN cmp=com.android.settings/.WirelessSettings }
    I/ActivityManager(  140): Displayed activity com.android.settings/.WirelessSettings: 314 ms (total 314 ms)
    E/WifiService(  140): Failed to load Wi-Fi driver.
    D/dalvikvm(  510): GC_FOR_MALLOC freed 3583 objects / 217664 bytes in 35ms
    D/dalvikvm(  219): GC_EXPLICIT freed 329 objects / 16336 bytes in 31ms
    E/Sensors (  140): light: 10 lux
      

  6.   

    不要那么懒嘛, 这不就是调用 WifiNative.loadDriver()失败了嘛!最终调的也就是 wifi.c中的 wifi_load_driver()这个函数, 在这个函数的各处打trace, 看各个变量什么的值是不是正确的,为啥出错了。只要动动手,多分析分析,还是很容易解决的啊。
      

  7.   

    wifi.c没有问题,使用最新的libra.ko和librasdioif.ko,就好了,呵呵。
    话题继续:
    1.libhardware_legacy.so是个什么,他与gps、wifi的关系是什么样的,请大家说说~~2.Android下驱动层常用的调试方法都有哪些?请概要介绍下~~
      

  8.   

    libhardware_legacy.so是android的hal module,是android比较老旧的方式,源码在libhardware_legacy下,这些驱动的hal都编在一个so文件里面。
    新的hal方式是hal stub, 源代码现在是在libhardware下。听过高焕堂的讲座的人,应该都熟悉他的大强龙地头蛇的说法吧。 就有的方式,是一种程序库的方式,这个概念比较老旧,你提供库,别人调用你的, 写上层程序的完全要依赖下面能提供什么库给你。新的方式,是一种代理的方式,上面该怎么用,上面已经定下来了,上层扮演的是operaor provider的角色, 下层要按上层大强龙的要求,完成程序库, operator是定死了,但是具体实现各地头蛇可以自己决定。 你可以看一下hal stub下面,android已经定好了overlay sensor等的operator。
      

  9.   

    gps的硬件抽象层,和wifi都被编译在libhardware_legacy.so中
      

  10.   

    it's useful for freshman