forked from qt-creator/qt-creator
Android: Enable emulator tool installation
Let Android sdk manager UI install the emulator tool. AVD needs this tool to manage AVD's. Task-number: QTCREATORBUG-19332 Change-Id: If836c511ca4a5673470d42c14115afa21b1b96fd Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
@@ -260,6 +260,7 @@ public:
|
|||||||
BuildToolsMarker = 0x080,
|
BuildToolsMarker = 0x080,
|
||||||
SdkToolsMarker = 0x100,
|
SdkToolsMarker = 0x100,
|
||||||
PlatformToolsMarker = 0x200,
|
PlatformToolsMarker = 0x200,
|
||||||
|
EmulatorToolsMarker = 0x400,
|
||||||
SectionMarkers = InstalledPackagesMarker | AvailablePackagesMarkers | AvailableUpdatesMarker
|
SectionMarkers = InstalledPackagesMarker | AvailablePackagesMarkers | AvailableUpdatesMarker
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -278,6 +279,7 @@ private:
|
|||||||
BuildTools *parseBuildToolsPackage(const QStringList &data) const;
|
BuildTools *parseBuildToolsPackage(const QStringList &data) const;
|
||||||
SdkTools *parseSdkToolsPackage(const QStringList &data) const;
|
SdkTools *parseSdkToolsPackage(const QStringList &data) const;
|
||||||
PlatformTools *parsePlatformToolsPackage(const QStringList &data) const;
|
PlatformTools *parsePlatformToolsPackage(const QStringList &data) const;
|
||||||
|
EmulatorTools *parseEmulatorToolsPackage(const QStringList &data) const;
|
||||||
MarkerTag parseMarkers(const QString &line);
|
MarkerTag parseMarkers(const QString &line);
|
||||||
|
|
||||||
MarkerTag m_currentSection = MarkerTag::None;
|
MarkerTag m_currentSection = MarkerTag::None;
|
||||||
@@ -292,7 +294,8 @@ const std::map<SdkManagerOutputParser::MarkerTag, const char *> markerTags {
|
|||||||
{SdkManagerOutputParser::MarkerTag::SystemImageMarker, "system-images"},
|
{SdkManagerOutputParser::MarkerTag::SystemImageMarker, "system-images"},
|
||||||
{SdkManagerOutputParser::MarkerTag::BuildToolsMarker, "build-tools"},
|
{SdkManagerOutputParser::MarkerTag::BuildToolsMarker, "build-tools"},
|
||||||
{SdkManagerOutputParser::MarkerTag::SdkToolsMarker, "tools"},
|
{SdkManagerOutputParser::MarkerTag::SdkToolsMarker, "tools"},
|
||||||
{SdkManagerOutputParser::MarkerTag::PlatformToolsMarker, "platform-tools"}
|
{SdkManagerOutputParser::MarkerTag::PlatformToolsMarker, "platform-tools"},
|
||||||
|
{SdkManagerOutputParser::MarkerTag::EmulatorToolsMarker, "emulator"}
|
||||||
};
|
};
|
||||||
|
|
||||||
AndroidSdkManager::AndroidSdkManager(const AndroidConfig &config, QObject *parent):
|
AndroidSdkManager::AndroidSdkManager(const AndroidConfig &config, QObject *parent):
|
||||||
@@ -543,6 +546,10 @@ void SdkManagerOutputParser::parsePackageData(MarkerTag packageMarker, const QSt
|
|||||||
createPackage(&SdkManagerOutputParser::parsePlatformToolsPackage);
|
createPackage(&SdkManagerOutputParser::parsePlatformToolsPackage);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case MarkerTag::EmulatorToolsMarker:
|
||||||
|
createPackage(&SdkManagerOutputParser::parseEmulatorToolsPackage);
|
||||||
|
break;
|
||||||
|
|
||||||
case MarkerTag::PlatformMarker:
|
case MarkerTag::PlatformMarker:
|
||||||
createPackage(&SdkManagerOutputParser::parsePlatform);
|
createPackage(&SdkManagerOutputParser::parsePlatform);
|
||||||
break;
|
break;
|
||||||
@@ -705,6 +712,22 @@ PlatformTools *SdkManagerOutputParser::parsePlatformToolsPackage(const QStringLi
|
|||||||
return platformTools;
|
return platformTools;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EmulatorTools *SdkManagerOutputParser::parseEmulatorToolsPackage(const QStringList &data) const
|
||||||
|
{
|
||||||
|
EmulatorTools *emulatorTools = nullptr;
|
||||||
|
GenericPackageData packageData;
|
||||||
|
if (parseAbstractData(packageData, data, 1, "Emulator-tools")) {
|
||||||
|
emulatorTools = new EmulatorTools(packageData.revision, data.at(0));
|
||||||
|
emulatorTools->setDescriptionText(packageData.description);
|
||||||
|
emulatorTools->setDisplayText(packageData.description);
|
||||||
|
emulatorTools->setInstalledLocation(packageData.installedLocation);
|
||||||
|
} else {
|
||||||
|
qCDebug(sdkManagerLog) << "Emulator-tools: Parsing failed. Minimum required data "
|
||||||
|
"unavailable:" << data;
|
||||||
|
}
|
||||||
|
return emulatorTools;
|
||||||
|
}
|
||||||
|
|
||||||
SdkManagerOutputParser::MarkerTag SdkManagerOutputParser::parseMarkers(const QString &line)
|
SdkManagerOutputParser::MarkerTag SdkManagerOutputParser::parseMarkers(const QString &line)
|
||||||
{
|
{
|
||||||
if (line.isEmpty())
|
if (line.isEmpty())
|
||||||
|
@@ -253,4 +253,20 @@ AndroidSdkPackage::PackageType PlatformTools::type() const
|
|||||||
return AndroidSdkPackage::PlatformToolsPackage;
|
return AndroidSdkPackage::PlatformToolsPackage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
EmulatorTools::EmulatorTools(QVersionNumber revision, QString sdkStylePathStr, QObject *parent):
|
||||||
|
AndroidSdkPackage(revision, sdkStylePathStr, parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
bool EmulatorTools::isValid() const
|
||||||
|
{
|
||||||
|
return installedLocation().exists();
|
||||||
|
}
|
||||||
|
|
||||||
|
AndroidSdkPackage::PackageType EmulatorTools::type() const
|
||||||
|
{
|
||||||
|
return AndroidSdkPackage::EmulatorToolsPackage;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Android
|
} // namespace Android
|
||||||
|
@@ -52,8 +52,9 @@ public:
|
|||||||
PlatformToolsPackage = 1 << 3,
|
PlatformToolsPackage = 1 << 3,
|
||||||
SdkPlatformPackage = 1 << 4,
|
SdkPlatformPackage = 1 << 4,
|
||||||
SystemImagePackage = 1 << 5,
|
SystemImagePackage = 1 << 5,
|
||||||
|
EmulatorToolsPackage = 1 << 6,
|
||||||
AnyValidType = SdkToolsPackage | BuildToolsPackage | PlatformToolsPackage |
|
AnyValidType = SdkToolsPackage | BuildToolsPackage | PlatformToolsPackage |
|
||||||
SdkPlatformPackage | SystemImagePackage
|
SdkPlatformPackage | SystemImagePackage | EmulatorToolsPackage
|
||||||
};
|
};
|
||||||
|
|
||||||
enum PackageState {
|
enum PackageState {
|
||||||
@@ -169,6 +170,17 @@ public:
|
|||||||
PackageType type() const override;
|
PackageType type() const override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class EmulatorTools : public AndroidSdkPackage
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
EmulatorTools(QVersionNumber revision, QString sdkStylePathStr, QObject *parent = nullptr);
|
||||||
|
|
||||||
|
// AndroidSdkPackage Overrides
|
||||||
|
public:
|
||||||
|
bool isValid() const override;
|
||||||
|
PackageType type() const override;
|
||||||
|
};
|
||||||
|
|
||||||
class SdkTools : public AndroidSdkPackage
|
class SdkTools : public AndroidSdkPackage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
Reference in New Issue
Block a user