如何在Qt Creator中运行ADB命令?

3

目前我正在尝试在Qt中让一个按钮运行以下命令:adb reboot。我使用的是MAC,在我的控制台中运行此命令会通过USB重新启动连接到计算机的Android设备。我已经阅读了在线论坛,但无法解决这个问题。以下是我在尝试调用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

任何帮助都将不胜感激!

Android SDK安装正确吗?看起来好像adb没有添加到path中。 - admdrew
QProcess::startDetached("/Users/ddelorenzo/Downloads/adt-bundle-mac-x86_64-20140702/sdk/platform‌​-tools/adb", QStringList()<< "reboot"); - Alex P.
1个回答

0

最简单的方法是使用此方法

bool QProcess::startDetached(const QString & command) [static]

这是一个重载函数。

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

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

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

因此,我会写出类似以下的代码:

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

因此,在尝试使用这种技术时,我在控制台中收到“执行失败”的输出。我想知道是否是因为路径在我的本地机器上,并且可能与我的QT项目没有任何链接。当我作为命令运行“echo Hello”时,这个命令可以正常工作。我需要在我的QT项目中包含ADB命令吗?或者以不同的方式调用该命令?感谢之前的帮助! - ddelorezno
@ddelorezno:检查一下手动运行命令是否有效。 - László Papp
当我在控制台中运行“adb reboot”时,它可以正常工作。但是,/Downloads/adt-bundle-mac-x86_64-20140702/sdk/platform-tools/adb reboot则无法正常工作。我还尝试了以下代码: if (!QProcess::startDetached("adb reboot")) qDebug() << "Failed to execute"; - ddelorezno
当我在命令行中运行"./Downloads/adt-bundle-mac-x86_64-20140702/sdk/platform-tools/adb reboot"时,它可以正常工作。我也尝试将"./"添加到startDetached的开头,但这对我也没有起作用。 - ddelorezno

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接