diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index 96b79989f39..71a465cad05 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -215,7 +215,6 @@ static FilePath debugServer(bool useLldb, const Target *target) AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packageName) : m_packageName(packageName) - , m_adbLogcatProcess(nullptr, deleter) , m_psIsAlive(nullptr, deleter) , m_debugServerProcess(nullptr, deleter) , m_jdbProcess(nullptr, deleter) @@ -406,13 +405,13 @@ void AndroidRunnerWorker::forceStop() void AndroidRunnerWorker::logcatReadStandardError() { if (m_processPID != -1) - logcatProcess(m_adbLogcatProcess->readAllStandardError(), m_stderrBuffer, true); + logcatProcess(m_adbLogcatProcess->readAllRawStandardError(), m_stderrBuffer, true); } void AndroidRunnerWorker::logcatReadStandardOutput() { if (m_processPID != -1) - logcatProcess(m_adbLogcatProcess->readAllStandardOutput(), m_stdoutBuffer, false); + logcatProcess(m_adbLogcatProcess->readAllRawStandardOutput(), m_stdoutBuffer, false); } void AndroidRunnerWorker::logcatProcess(const QByteArray &text, QByteArray &buffer, bool onlyError) @@ -504,16 +503,16 @@ void Android::Internal::AndroidRunnerWorker::asyncStartLogcat() { // Its assumed that the device or avd returned by selector() is online. // Start the logcat process before app starts. - QTC_ASSERT(!m_adbLogcatProcess, /**/); + QTC_CHECK(!m_adbLogcatProcess); // Ideally AndroidManager::runAdbCommandDetached() should be used, but here // we need to connect the readyRead signals from logcat otherwise we might // lost some output between the process start and connecting those signals. - m_adbLogcatProcess.reset(new QProcess()); + m_adbLogcatProcess.reset(new Process); - connect(m_adbLogcatProcess.get(), &QProcess::readyReadStandardOutput, + connect(m_adbLogcatProcess.get(), &Process::readyReadStandardOutput, this, &AndroidRunnerWorker::logcatReadStandardOutput); - connect(m_adbLogcatProcess.get(), &QProcess::readyReadStandardError, + connect(m_adbLogcatProcess.get(), &Process::readyReadStandardError, this, &AndroidRunnerWorker::logcatReadStandardError); // Get target current time to fetch only recent logs @@ -529,7 +528,8 @@ void Android::Internal::AndroidRunnerWorker::asyncStartLogcat() const FilePath adb = AndroidConfigurations::currentConfig().adbToolPath(); qCDebug(androidRunWorkerLog).noquote() << "Running logcat command (async):" << CommandLine(adb, logcatArgs).toUserOutput(); - m_adbLogcatProcess->start(adb.toString(), logcatArgs); + m_adbLogcatProcess->setCommand({adb, logcatArgs}); + m_adbLogcatProcess->start(); if (m_adbLogcatProcess->waitForStarted(500) && m_adbLogcatProcess->state() == QProcess::Running) m_adbLogcatProcess->setObjectName("AdbLogcatProcess"); } diff --git a/src/plugins/android/androidrunnerworker.h b/src/plugins/android/androidrunnerworker.h index 7e41d2e9c73..559e07d73cd 100644 --- a/src/plugins/android/androidrunnerworker.h +++ b/src/plugins/android/androidrunnerworker.h @@ -16,7 +16,10 @@ QT_BEGIN_NAMESPACE class QProcess; QT_END_NAMESPACE -namespace Utils { class FilePath; } +namespace Utils { +class FilePath; +class Process; +} namespace ProjectExplorer { class RunWorker; } namespace Android { @@ -88,7 +91,7 @@ private: QStringList m_amStartExtraArgs; qint64 m_processPID = -1; qint64 m_processUser = -1; - std::unique_ptr m_adbLogcatProcess; + std::unique_ptr m_adbLogcatProcess; std::unique_ptr m_psIsAlive; QByteArray m_stdoutBuffer; QByteArray m_stderrBuffer;