如何使用Qt Creator运行ADB命令?

时间:2014-10-24 18:16:11

标签: android c++ bash qt adb

目前我正在尝试在Qt中获取一个按钮来运行以下命令:adb reboot。我在MAC上,当我在控制台中运行此命令时,它会重新启动通过Android连接到我的计算机的USB设备。我在线阅读了论坛,但无法解决这个问题。以下是尝试在Qt中调用adb reboot时的一些尝试:

void MainWindow::on_pushButton_clicked()
{
    QProcess::startDetached("/bin/bash", QStringList()<< "-c" << "export PATH=${PATH}:/Downloads/adt-bundle-mac-x86_64-20140702/sdk/platform-tools/");
    QProcess::startDetached("/bin/bash", QStringList()<< "-c" << "adb reboot");
    QProcess::startDetached("/bin/sh", QStringList()<< "-c" << "adb reboot");
    QProcess::startDetached("/Downloads/adt-bundle-mac-x86_64-20140702/sdk/platform-tools/", QStringList()<< "-c" << "adb reboot");
}

当我点击按钮时,这是我的控制台的输出:

Starting /Users/ddelorenzo/Documents/QaGUI/QaGUI/QaGUI.app/Contents/MacOS/QaGUI..
/bin/bash: adb: command not found
/bin/sh: adb: command not found

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

最简单的方法是使用this method

  

bool QProcess :: startDetached(const QString&amp; command)[静态]

     

这是一个重载功能。

     

在新进程中启动命令命令,并从中分离。成功时返回true;否则返回false。

     

参数处理与相应的start()重载相同。

     

在拆分和取消引用命令字符串之后,此函数的行为类似于将参数作为字符串列表的重载。

因此,我会写这样的东西:

if (!QProcess::startDetached("/Downloads/adt-bundle-mac-x86_64-20140702/sdk/platform‌​-tools/adb reboot"))
    qDebug() << "Failed to execute";