diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index 759eba59e46..aa88fdc903c 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -327,7 +327,7 @@ AndroidRunnerWorker::~AndroidRunnerWorker() } bool AndroidRunnerWorker::runAdb(const QStringList &args, QString *stdOut, - const QByteArray &writeData) + QString *stdErr, const QByteArray &writeData) { QStringList adbArgs = selector() + args; SdkToolResult result = AndroidManager::runAdbCommand(adbArgs, writeData); @@ -335,6 +335,8 @@ bool AndroidRunnerWorker::runAdb(const QStringList &args, QString *stdOut, emit remoteErrorOutput(result.stdErr()); if (stdOut) *stdOut = result.stdOut(); + if (stdErr) + *stdErr = result.stdErr(); return result.success(); } @@ -651,10 +653,17 @@ void AndroidRunnerWorker::asyncStartHelper() .toUtf8().toBase64()); } - if (!runAdb(args)) { + QString stdErr; + const bool startResult = runAdb(args, nullptr, &stdErr); + if (!startResult) { emit remoteProcessFinished(tr("Failed to start the activity.")); return; } + + if (!stdErr.isEmpty()) { + emit remoteErrorOutput(tr("Activity Manager threw the error: %1").arg(stdErr)); + return; + } } bool AndroidRunnerWorker::startDebuggerServer(const QString &packageDir, diff --git a/src/plugins/android/androidrunnerworker.h b/src/plugins/android/androidrunnerworker.h index 68b9ca9c0ec..f4ceb9e8caa 100644 --- a/src/plugins/android/androidrunnerworker.h +++ b/src/plugins/android/androidrunnerworker.h @@ -47,7 +47,8 @@ public: AndroidRunnerWorker(ProjectExplorer::RunWorker *runner, const QString &packageName); ~AndroidRunnerWorker() override; - bool runAdb(const QStringList &args, QString *stdOut = nullptr, const QByteArray &writeData = {}); + bool runAdb(const QStringList &args, QString *stdOut = nullptr, QString *stdErr = nullptr, + const QByteArray &writeData = {}); void adbKill(qint64 pid); QStringList selector() const; void forceStop();