Android: Warn if sdkmanager could not be run

Add a line in the error checking for "SDK manager runs"

Fixes: QTCREATORBUG-22626
Change-Id: I63f783b376056a28c106bad1ce8c874acf6897f2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Eike Ziller
2019-08-05 14:46:01 +02:00
parent 39e5cef301
commit 14da061c33
3 changed files with 19 additions and 2 deletions

View File

@@ -227,6 +227,9 @@ private:
QString m_licenseTextCache; QString m_licenseTextCache;
QByteArray m_licenseUserInput; QByteArray m_licenseUserInput;
mutable QReadWriteLock m_licenseInputLock; mutable QReadWriteLock m_licenseInputLock;
public:
bool m_packageListingSuccessful = true;
}; };
/*! /*!
@@ -372,6 +375,11 @@ bool AndroidSdkManager::isBusy() const
return m_d->m_activeOperation && !m_d->m_activeOperation->isFinished(); return m_d->m_activeOperation && !m_d->m_activeOperation->isFinished();
} }
bool AndroidSdkManager::packageListingSuccessful() const
{
return m_d->m_packageListingSuccessful;
}
QFuture<QString> AndroidSdkManager::availableArguments() const QFuture<QString> AndroidSdkManager::availableArguments() const
{ {
return Utils::runAsync(&AndroidSdkManagerPrivate::parseCommonArguments, m_d.get()); return Utils::runAsync(&AndroidSdkManagerPrivate::parseCommonArguments, m_d.get());
@@ -806,6 +814,7 @@ void AndroidSdkManagerPrivate::reloadSdkPackages()
if (m_config.sdkToolsVersion() < sdkManagerIntroVersion) { if (m_config.sdkToolsVersion() < sdkManagerIntroVersion) {
// Old Sdk tools. // Old Sdk tools.
m_packageListingSuccessful = true;
AndroidToolManager toolManager(m_config); AndroidToolManager toolManager(m_config);
auto toAndroidSdkPackages = [](SdkPlatform *p) -> AndroidSdkPackage *{ auto toAndroidSdkPackages = [](SdkPlatform *p) -> AndroidSdkPackage *{
return p; return p;
@@ -815,7 +824,8 @@ void AndroidSdkManagerPrivate::reloadSdkPackages()
QString packageListing; QString packageListing;
QStringList args({"--list", "--verbose"}); QStringList args({"--list", "--verbose"});
args << m_config.sdkManagerToolArgs(); args << m_config.sdkManagerToolArgs();
if (sdkManagerCommand(m_config, args, &packageListing)) { m_packageListingSuccessful = sdkManagerCommand(m_config, args, &packageListing);
if (m_packageListingSuccessful) {
SdkManagerOutputParser parser(m_allPackages); SdkManagerOutputParser parser(m_allPackages);
parser.parsePackageListing(packageListing); parser.parsePackageListing(packageListing);
} }

View File

@@ -78,6 +78,8 @@ public:
void reloadPackages(bool forceReload = false); void reloadPackages(bool forceReload = false);
bool isBusy() const; bool isBusy() const;
bool packageListingSuccessful() const;
QFuture<QString> availableArguments() const; QFuture<QString> availableArguments() const;
QFuture<OperationOutput> updateAll(); QFuture<OperationOutput> updateAll();
QFuture<OperationOutput> update(const QStringList &install, const QStringList &uninstall); QFuture<OperationOutput> update(const QStringList &install, const QStringList &uninstall);

View File

@@ -76,6 +76,7 @@ enum AndroidValidation {
SdkToolsInstalledRow, SdkToolsInstalledRow,
PlatformToolsInstalledRow, PlatformToolsInstalledRow,
BuildToolsInstalledRow, BuildToolsInstalledRow,
SdkManagerSuccessfulRow,
PlatformSdkInstalledRow, PlatformSdkInstalledRow,
NdkPathExistsRow, NdkPathExistsRow,
NdkDirStructureRow, NdkDirStructureRow,
@@ -259,6 +260,8 @@ AndroidSettingsWidget::AndroidSettingsWidget(QWidget *parent)
androidValidationPoints[SdkPathWritableRow] = tr("Android SDK path writable."); androidValidationPoints[SdkPathWritableRow] = tr("Android SDK path writable.");
androidValidationPoints[SdkToolsInstalledRow] = tr("SDK tools installed."); androidValidationPoints[SdkToolsInstalledRow] = tr("SDK tools installed.");
androidValidationPoints[PlatformToolsInstalledRow] = tr("Platform tools installed."); androidValidationPoints[PlatformToolsInstalledRow] = tr("Platform tools installed.");
androidValidationPoints[SdkManagerSuccessfulRow] = tr(
"SDK manager runs (requires exactly Java 1.8).");
androidValidationPoints[BuildToolsInstalledRow] = tr("Build tools installed."); androidValidationPoints[BuildToolsInstalledRow] = tr("Build tools installed.");
androidValidationPoints[PlatformSdkInstalledRow] = tr("Platform SDK installed."); androidValidationPoints[PlatformSdkInstalledRow] = tr("Platform SDK installed.");
androidValidationPoints[NdkPathExistsRow] = tr("Android NDK path exists."); androidValidationPoints[NdkPathExistsRow] = tr("Android NDK path exists.");
@@ -425,12 +428,14 @@ void AndroidSettingsWidget::validateSdk()
summaryWidget->setPointValid(BuildToolsInstalledRow, summaryWidget->setPointValid(BuildToolsInstalledRow,
!m_androidConfig.buildToolsVersion().isNull()); !m_androidConfig.buildToolsVersion().isNull());
summaryWidget->setPointValid(SdkManagerSuccessfulRow, m_sdkManager->packageListingSuccessful());
// installedSdkPlatforms should not trigger a package reload as validate SDK is only called // installedSdkPlatforms should not trigger a package reload as validate SDK is only called
// after AndroidSdkManager::packageReloadFinished. // after AndroidSdkManager::packageReloadFinished.
summaryWidget->setPointValid(PlatformSdkInstalledRow, summaryWidget->setPointValid(PlatformSdkInstalledRow,
!m_sdkManager->installedSdkPlatforms().isEmpty()); !m_sdkManager->installedSdkPlatforms().isEmpty());
updateUI(); updateUI();
bool sdkToolsOk = summaryWidget->rowsOk({SdkPathExistsRow, SdkPathWritableRow, SdkToolsInstalledRow}); bool sdkToolsOk = summaryWidget->rowsOk(
{SdkPathExistsRow, SdkPathWritableRow, SdkToolsInstalledRow, SdkManagerSuccessfulRow});
bool componentsOk = summaryWidget->rowsOk({PlatformToolsInstalledRow, bool componentsOk = summaryWidget->rowsOk({PlatformToolsInstalledRow,
BuildToolsInstalledRow, BuildToolsInstalledRow,
PlatformSdkInstalledRow}); PlatformSdkInstalledRow});