本帖最后由 s_zbchen1 于 2014-03-03 18:54:40 编辑

解决方案 »

  1.   

     void adb_auth_init(void)
    {
        int fd, ret;    fd = android_get_control_socket("adbd");
        if (fd < 0) {
            D("Failed to get adbd socket\n");
            return;
        }    ret = listen(fd, 4);
        if (ret < 0) {
            D("Failed to listen on '%d'\n", fd);
            return;
        }    fdevent_install(&listener_fde, fd, adb_auth_listener, NULL);
        fdevent_add(&listener_fde, FDE_READ);
    }调试发现这里没有获取到值是null fd = android_get_control_socket("adbd");
      

  2.   

    调试发现adb一个线程在调用api中IsLegacyInterface接口,打开usb设备的时候失败了,
    api\adb_helper_routines.cpp中IsLegacyInterface接口调用失败代码如下:HANDLE usb_device_handle = CreateFile(interface_name,
                                            GENERIC_READ | GENERIC_WRITE,
                                            FILE_SHARE_READ | FILE_SHARE_WRITE,
                                            NULL,
                                            OPEN_EXISTING,
                                            0,
                                            NULL);这个RSA认证是在打开设备之前还是之后呢?如果是是在打开设备之后,那就是这个原因导致没有弹出认证窗口大家帮忙分析一下啊
      

  3.   

    自己的问题,编译AdbWinApi.dll有问题,重新编译就好了
      

  4.   

    请教一下楼主,用ADB的什么命令可以让手机再弹出rsa的验证窗口,如果我同时连接了多部手机,可以指定哪部手机弹出提示吗?
      

  5.   

    adb源码中检测设备(adb devices)的时候首先判断服务端有没有运行,则运行起来,开启一个线程去扫描usb设备,然后用createfile打开这个设备,发送rsa指纹验证,daemon程序通过才能建立socket通讯。所以应该在createfile的时候判断你的手机就行了,不知道说得对不对
      

  6.   

    有另外一个问题相求,追加这100分
    http://bbs.csdn.net/topics/390762859