forked from qt-creator/qt-creator
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:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
@@ -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);
|
||||||
|
@@ -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; }
|
||||||
|
@@ -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);
|
||||||
|
@@ -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();
|
||||||
|
@@ -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>
|
||||||
|
@@ -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()) {
|
||||||
|
@@ -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>
|
||||||
|
@@ -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,
|
||||||
|
@@ -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;
|
||||||
|
Reference in New Issue
Block a user