当前位置:编程学习 > wap >>

QProcess.start 运行安卓adb devices没有任何返回..........................

1、adb进程能成功启动,也是用的正确目录下的adb.exe,但就是没有返回字符串,内容为空,也没有错误信息

2、相反,用QProcess.start
adb install 
adb  shell am broadcast -a NotifyServiceStart
等命令可以成功执行,其中adb install的执行有返回字符串Success等,但shell这个命令没有返回字符串,但实际上手机上的broadcast被接受并成功执行。

3、以上三个命令如果使用电脑上敲命令行,都完全没有问题,正常执行且有返回字符串。

大神帮忙看看,疯了...不知道发生了什么........


    QString cmd = "XXX/adb" + tr(" devices ");
    qDebug()<< "listDevices cmd:"+ cmd;
    QProcess p(0);
    p.setEnvironment(QProcess::systemEnvironment());
    p.start(cmd);//
    p.waitForStarted();
    p.waitForReadyRead();
    p.waitForFinished();
   QByteArray temp = p.readAllStandardOutput();
    if(temp.length()==0)
    {
        stopServer();
        startServer();
        p.close();
        p.start(cmd);
        p.waitForStarted();
        p.waitForReadyRead();
        p.waitForFinished(-1);
    }
    qDebug() << "IF ANY ERROR:"<<p.readAllStandardError();
    QByteArray byte = p.readAllStandardOutput();
    qDebug()<< "length:" << byte.length() << "listDevices output byte:" << byte;
    QString output = QString::fromLocal8Bit(byte);
    qDebug()<< "listDevices output:" << output;
--------------------编程问答-------------------- 我只能说QProcess存在诸多bug等待修复 --------------------编程问答-------------------- 还有别的解释吗 --------------------编程问答--------------------
引用 2 楼 wsa_socket 的回复:
还有别的解释吗

唯一的解释就是你的电脑已经安装了别的关于手机助手http://www.mobfound.com等手机助手,进程里面存在adb,把adb的端口给占用了,所以会有问题,或者是说QProcess有问题,以前一直遇到过这种情况,也没有好的办法。 --------------------编程问答-------------------- 装了别的是有的,但进程里adb是没有的,一般别的手机助手都是自己重写了adb


端口占用的问题,adb在devices的时候应该自己处理吧,这是基本问题,google应该解决了。
但adb运行时间长了确实还是容易产生无响应等问题,貌似kill-server start-server重启也不好使  --------------------编程问答--------------------
引用 4 楼 wsa_socket 的回复:
装了别的是有的,但进程里adb是没有的,一般别的手机助手都是自己重写了adb


端口占用的问题,adb在devices的时候应该自己处理吧,这是基本问题,google应该解决了。
但adb运行时间长了确实还是容易产生无响应等问题,貌似kill-server start-server重启也不好使

那就得重写adb啦,,他们都是将adb源码进行重写编译的,改了名字,多加入一些adb指令即可
补充:移动开发 ,  Qt
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,