Android: remove native sdk and avd manager buttons

The native SDK and AVD manager buttons are no longer useful, since the
original, visual Java-basd tool for managing SDK and AVDs were removed
from Google's offering. The replacement is a set of command line tools
and a visual tool within Android Studio, which can not directly be
launched from Qt Creator.

Qt Creator has it's UI on top of the command line tools.

Change-Id: If660d7f566c173f46d9b2a97c9204746d33270e6
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Assam Boudjelthia
2020-06-26 01:06:16 +03:00
parent dbca372780
commit af7c218d95
11 changed files with 1 additions and 119 deletions

View File

@@ -230,29 +230,13 @@ AndroidAvdManager::AndroidAvdManager(const AndroidConfig &config):
AndroidAvdManager::~AndroidAvdManager() = default; AndroidAvdManager::~AndroidAvdManager() = default;
void AndroidAvdManager::launchAvdManagerUiTool() const
{
if (m_config.useNativeUiTools()) {
m_androidTool->launchAvdManager();
} else {
qCDebug(avdManagerLog) << "AVD Ui tool launch failed. UI tool not available"
<< m_config.sdkToolsVersion();
}
}
QFuture<CreateAvdInfo> AndroidAvdManager::createAvd(CreateAvdInfo info) const QFuture<CreateAvdInfo> AndroidAvdManager::createAvd(CreateAvdInfo info) const
{ {
if (m_config.useNativeUiTools())
return m_androidTool->createAvd(info);
return Utils::runAsync(&createAvdCommand, m_config, info); return Utils::runAsync(&createAvdCommand, m_config, info);
} }
bool AndroidAvdManager::removeAvd(const QString &name) const bool AndroidAvdManager::removeAvd(const QString &name) const
{ {
if (m_config.useNativeUiTools())
return m_androidTool->removeAvd(name);
const CommandLine command(m_config.avdManagerToolPath(), {"delete", "avd", "-n", name}); const CommandLine command(m_config.avdManagerToolPath(), {"delete", "avd", "-n", name});
qCDebug(avdManagerLog) << "Running command (removeAvd):" << command.toUserOutput(); qCDebug(avdManagerLog) << "Running command (removeAvd):" << command.toUserOutput();
Utils::SynchronousProcess proc; Utils::SynchronousProcess proc;
@@ -263,9 +247,6 @@ bool AndroidAvdManager::removeAvd(const QString &name) const
QFuture<AndroidDeviceInfoList> AndroidAvdManager::avdList() const QFuture<AndroidDeviceInfoList> AndroidAvdManager::avdList() const
{ {
if (m_config.useNativeUiTools())
return m_androidTool->androidVirtualDevicesFuture();
return Utils::runAsync(&AvdManagerOutputParser::listVirtualDevices, m_parser.get(), m_config); return Utils::runAsync(&AvdManagerOutputParser::listVirtualDevices, m_parser.get(), m_config);
} }

View File

@@ -43,7 +43,6 @@ public:
AndroidAvdManager(const AndroidConfig& config = AndroidConfigurations::currentConfig()); AndroidAvdManager(const AndroidConfig& config = AndroidConfigurations::currentConfig());
~AndroidAvdManager(); ~AndroidAvdManager();
void launchAvdManagerUiTool() const;
QFuture<CreateAvdInfo> createAvd(CreateAvdInfo info) const; QFuture<CreateAvdInfo> createAvd(CreateAvdInfo info) const;
bool removeAvd(const QString &name) const; bool removeAvd(const QString &name) const;
QFuture<AndroidDeviceInfoList> avdList() const; QFuture<AndroidDeviceInfoList> avdList() const;

View File

@@ -841,12 +841,6 @@ QStringList AndroidConfig::getAbis(const FilePath &adbToolPath, const QString &d
return result; return result;
} }
bool AndroidConfig::useNativeUiTools() const
{
const QVersionNumber version = sdkToolsVersion();
return !version.isNull() && version <= QVersionNumber(25, 3, 0) && !isCmdlineSdkToolsInstalled();
}
bool AndroidConfig::isValidNdk(const QString &ndkLocation) const bool AndroidConfig::isValidNdk(const QString &ndkLocation) const
{ {
auto ndkPath = Utils::FilePath::fromUserInput(ndkLocation); auto ndkPath = Utils::FilePath::fromUserInput(ndkLocation);

View File

@@ -184,7 +184,6 @@ public:
OpenGl getOpenGLEnabled(const QString &emulator) const; OpenGl getOpenGLEnabled(const QString &emulator) const;
bool isConnected(const QString &serialNumber) const; bool isConnected(const QString &serialNumber) const;
bool useNativeUiTools() const;
bool isCmdlineSdkToolsInstalled() const; bool isCmdlineSdkToolsInstalled() const;
bool sdkFullyConfigured() const { return m_sdkFullyConfigured; } bool sdkFullyConfigured() const { return m_sdkFullyConfigured; }

View File

@@ -76,7 +76,6 @@ AndroidSdkManagerWidget::AndroidSdkManagerWidget(AndroidConfig &config,
m_ui->setupUi(this); m_ui->setupUi(this);
m_ui->sdkLicensebuttonBox->hide(); m_ui->sdkLicensebuttonBox->hide();
m_ui->sdkLicenseLabel->hide(); m_ui->sdkLicenseLabel->hide();
m_ui->warningLabel->setType(Utils::InfoLabel::Warning);
m_ui->viewStack->setCurrentWidget(m_ui->packagesStack); m_ui->viewStack->setCurrentWidget(m_ui->packagesStack);
m_formatter = new Utils::OutputFormatter; m_formatter = new Utils::OutputFormatter;
@@ -133,8 +132,6 @@ AndroidSdkManagerWidget::AndroidSdkManagerWidget(AndroidConfig &config,
this, &AndroidSdkManagerWidget::onApplyButton); this, &AndroidSdkManagerWidget::onApplyButton);
connect(m_ui->cancelButton, &QPushButton::clicked, this, connect(m_ui->cancelButton, &QPushButton::clicked, this,
&AndroidSdkManagerWidget::onCancel); &AndroidSdkManagerWidget::onCancel);
connect(m_ui->nativeSdkManagerButton, &QPushButton::clicked,
this, &AndroidSdkManagerWidget::onNativeSdkManager);
connect(m_ui->optionsButton, &QPushButton::clicked, connect(m_ui->optionsButton, &QPushButton::clicked,
this, &AndroidSdkManagerWidget::onSdkManagerOptions); this, &AndroidSdkManagerWidget::onSdkManagerOptions);
connect(m_ui->sdkLicensebuttonBox, &QDialogButtonBox::accepted, [this]() { connect(m_ui->sdkLicensebuttonBox, &QDialogButtonBox::accepted, [this]() {
@@ -160,7 +157,6 @@ void AndroidSdkManagerWidget::setSdkManagerControlsEnabled(bool enable)
{ {
m_ui->packagesTypeGroup->setEnabled(enable); m_ui->packagesTypeGroup->setEnabled(enable);
m_ui->expandCheck->setVisible(enable); m_ui->expandCheck->setVisible(enable);
m_ui->warningLabel->setVisible(!enable);
m_ui->packagesView->setEnabled(enable); m_ui->packagesView->setEnabled(enable);
m_ui->updateInstalledButton->setEnabled(enable); m_ui->updateInstalledButton->setEnabled(enable);
m_ui->optionsButton->setEnabled(enable); m_ui->optionsButton->setEnabled(enable);
@@ -253,19 +249,6 @@ void AndroidSdkManagerWidget::onCancel()
cancelPendingOperations(); cancelPendingOperations();
} }
void AndroidSdkManagerWidget::onNativeSdkManager()
{
if (m_androidConfig.useNativeUiTools()) {
QProcess::startDetached(m_androidConfig.androidToolPath().toString(), {});
} else {
QMessageBox::warning(this, tr("Native SDK Manager Not Available"),
tr("SDK manager UI tool is not available in the installed SDK tools "
"(version %1). Use the command line tool \"sdkmanager\" for "
"advanced SDK management.")
.arg(m_androidConfig.sdkToolsVersion().toString()));
}
}
void AndroidSdkManagerWidget::onOperationResult(int index) void AndroidSdkManagerWidget::onOperationResult(int index)
{ {
QTC_ASSERT(m_currentOperation, return); QTC_ASSERT(m_currentOperation, return);

View File

@@ -92,7 +92,6 @@ private:
void onApplyButton(); void onApplyButton();
void onUpdatePackages(); void onUpdatePackages();
void onCancel(); void onCancel();
void onNativeSdkManager();
void onOperationResult(int index); void onOperationResult(int index);
void onLicenseCheckResult(const AndroidSdkManager::OperationOutput &output); void onLicenseCheckResult(const AndroidSdkManager::OperationOutput &output);
void onSdkManagerOptions(); void onSdkManagerOptions();

View File

@@ -69,19 +69,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<widget class="Utils::InfoLabel" name="warningLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>SDK manager is not available with the current version of SDK tools. Use native SDK manager.</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
<item row="1" column="0"> <item row="1" column="0">
@@ -175,29 +162,6 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>5</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="nativeSdkManagerButton">
<property name="text">
<string>Native SDK Manager...</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>
@@ -285,13 +249,6 @@
</item> </item>
</layout> </layout>
</widget> </widget>
<customwidgets>
<customwidget>
<class>Utils::InfoLabel</class>
<extends>QLabel</extends>
<header location="global">utils/infolabel.h</header>
</customwidget>
</customwidgets>
<tabstops> <tabstops>
<tabstop>packagesView</tabstop> <tabstop>packagesView</tabstop>
<tabstop>showAllRadio</tabstop> <tabstop>showAllRadio</tabstop>

View File

@@ -118,7 +118,6 @@ private:
void startAVD(); void startAVD();
void avdActivated(const QModelIndex &); void avdActivated(const QModelIndex &);
void dataPartitionSizeEditingFinished(); void dataPartitionSizeEditingFinished();
void manageAVD();
void createKitToggled(); void createKitToggled();
void updateUI(); void updateUI();
@@ -506,8 +505,6 @@ AndroidSettingsWidget::AndroidSettingsWidget()
this, &AndroidSettingsWidget::avdActivated); this, &AndroidSettingsWidget::avdActivated);
connect(m_ui.DataPartitionSizeSpinBox, &QAbstractSpinBox::editingFinished, connect(m_ui.DataPartitionSizeSpinBox, &QAbstractSpinBox::editingFinished,
this, &AndroidSettingsWidget::dataPartitionSizeEditingFinished); this, &AndroidSettingsWidget::dataPartitionSizeEditingFinished);
connect(m_ui.nativeAvdManagerButton, &QAbstractButton::clicked,
this, &AndroidSettingsWidget::manageAVD);
connect(m_ui.CreateKitCheckBox, &QAbstractButton::toggled, connect(m_ui.CreateKitCheckBox, &QAbstractButton::toggled,
this, &AndroidSettingsWidget::createKitToggled); this, &AndroidSettingsWidget::createKitToggled);
connect(m_ui.downloadNDKToolButton, &QAbstractButton::clicked, connect(m_ui.downloadNDKToolButton, &QAbstractButton::clicked,
@@ -735,7 +732,7 @@ void AndroidSettingsWidget::validateSdk()
PlatformSdkInstalledRow, PlatformSdkInstalledRow,
AllEssentialsInstalledRow}); AllEssentialsInstalledRow});
m_androidConfig.setSdkFullyConfigured(sdkToolsOk && componentsOk); m_androidConfig.setSdkFullyConfigured(sdkToolsOk && componentsOk);
if (sdkToolsOk && !componentsOk && !m_androidConfig.useNativeUiTools()) { if (sdkToolsOk && !componentsOk) {
// Ask user to install essential SDK components. Works only for sdk tools version >= 26.0.0 // Ask user to install essential SDK components. Works only for sdk tools version >= 26.0.0
QString message = tr("Android SDK installation is missing necessary packages. Do you " QString message = tr("Android SDK installation is missing necessary packages. Do you "
"want to install the missing packages?"); "want to install the missing packages?");
@@ -920,7 +917,6 @@ void AndroidSettingsWidget::updateUI()
m_ui.avdManagerTab->setEnabled(javaSetupOk && androidSetupOk); m_ui.avdManagerTab->setEnabled(javaSetupOk && androidSetupOk);
m_ui.sdkManagerTab->setEnabled(sdkToolsOk); m_ui.sdkManagerTab->setEnabled(sdkToolsOk);
m_sdkManagerWidget->setSdkManagerControlsEnabled(!m_androidConfig.useNativeUiTools());
const QListWidgetItem *currentItem = m_ui.ndkListWidget->currentItem(); const QListWidgetItem *currentItem = m_ui.ndkListWidget->currentItem();
const FilePath currentNdk = FilePath::fromString(currentItem ? currentItem->text() : ""); const FilePath currentNdk = FilePath::fromString(currentItem ? currentItem->text() : "");
@@ -934,19 +930,6 @@ void AndroidSettingsWidget::updateUI()
m_openSslSummary->setSetupOk(openSslOk); m_openSslSummary->setSetupOk(openSslOk);
} }
void AndroidSettingsWidget::manageAVD()
{
if (m_androidConfig.useNativeUiTools()) {
m_avdManager.launchAvdManagerUiTool();
} else {
QMessageBox::warning(this, tr("AVD Manager Not Available"),
tr("AVD manager UI tool is not available in the installed SDK tools "
"(version %1). Use the command line tool \"avdmanager\" for "
"advanced AVD management.")
.arg(m_androidConfig.sdkToolsVersion().toString()));
}
}
void AndroidSettingsWidget::downloadSdk() void AndroidSettingsWidget::downloadSdk()
{ {
if (sdkToolsOk()) { if (sdkToolsOk()) {

View File

@@ -470,13 +470,6 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item>
<widget class="QPushButton" name="nativeAvdManagerButton">
<property name="text">
<string>Native AVD Manager...</string>
</property>
</widget>
</item>
</layout> </layout>
</item> </item>
</layout> </layout>

View File

@@ -112,11 +112,6 @@ SdkPlatformList AndroidToolManager::availableSdkPlatforms(bool *ok) const
return list; return list;
} }
void AndroidToolManager::launchAvdManager() const
{
QProcess::startDetached(m_config.androidToolPath().toString(), QStringList("avd"));
}
QFuture<CreateAvdInfo> AndroidToolManager::createAvd(CreateAvdInfo info) const QFuture<CreateAvdInfo> AndroidToolManager::createAvd(CreateAvdInfo info) const
{ {
return Utils::runAsync(&AndroidToolManager::createAvdImpl, info, return Utils::runAsync(&AndroidToolManager::createAvdImpl, info,

View File

@@ -50,7 +50,6 @@ public:
~AndroidToolManager(); ~AndroidToolManager();
SdkPlatformList availableSdkPlatforms(bool *ok = nullptr) const; SdkPlatformList availableSdkPlatforms(bool *ok = nullptr) const;
void launchAvdManager() const;
QFuture<CreateAvdInfo> createAvd(CreateAvdInfo info) const; QFuture<CreateAvdInfo> createAvd(CreateAvdInfo info) const;
bool removeAvd(const QString &name) const; bool removeAvd(const QString &name) const;