Android: Remove multiple code paths to run adb

Refactor the code to use adb from AndroidManager, do cleanup
and improve logging

Change-Id: I77b682d37c9328e6aa978eaf05b3b5c131907f09
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Vikas Pachdha
2018-08-07 11:12:45 +02:00
parent d905131351
commit 8c95ab7ac8
4 changed files with 174 additions and 141 deletions

View File

@@ -31,6 +31,10 @@
#include <QObject>
#include <QVersionNumber>
QT_BEGIN_NAMESPACE
class QProcess;
QT_END_NAMESPACE
namespace ProjectExplorer {
class Kit;
class Target;
@@ -42,6 +46,22 @@ namespace Android {
class AndroidQtSupport;
class SdkToolResult {
public:
SdkToolResult() = default;
bool success() const { return m_success; }
const QString &stdOut() { return m_stdOut; }
const QString &stdErr() { return m_stdErr; }
const QString &exitMessage() { return m_exitMessage; }
private:
bool m_success = false;
QString m_stdOut;
QString m_stdErr;
QString m_exitMessage;
friend class AndroidManager;
};
class ANDROID_EXPORT AndroidManager : public QObject
{
Q_OBJECT
@@ -94,9 +114,15 @@ public:
static bool updateGradleProperties(ProjectExplorer::Target *target);
static int findApiLevel(const Utils::FileName &platformPath);
static void runAdbCommandDetached(const QStringList &args);
static bool runAdbCommand(const QStringList &args, QString *output = nullptr);
static bool runAaptCommand(const QStringList &args, QString *output = nullptr);
static QProcess *runAdbCommandDetached(const QStringList &args, QString *err = nullptr,
bool deleteOnFinish = false);
static SdkToolResult runAdbCommand(const QStringList &args, const QByteArray &writeData = {},
int timeoutS = 30);
static SdkToolResult runAaptCommand(const QStringList &args, int timeoutS = 30);
private:
static SdkToolResult runCommand(const QString &executable, const QStringList &args,
const QByteArray &writeData = {}, int timeoutS = 30);
};
} // namespace Android