aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/android
diff options
context:
space:
mode:
authorAssam Boudjelthia <assam.boudjelthia@qt.io>2020-06-30 09:50:28 +0300
committerAssam Boudjelthia <assam.boudjelthia@qt.io>2020-07-01 13:24:38 +0000
commit0cfb9e2bcebcb96b51c77624a03a0629903ec5b9 (patch)
treed050e975076139b4cd0fd830ab9348c28e5d402e /src/plugins/android
parent784420e9113e0078245a8485337463c190a4da8d (diff)
Android: remove old android tool
Follows af7c218d95d670080893356af7a42c672f1de1a9, the old android tool is not useful anymore. Change-Id: I126ecc24622f2e90465440c86b84cdfb30c103e1 Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Diffstat (limited to 'src/plugins/android')
-rw-r--r--src/plugins/android/CMakeLists.txt1
-rw-r--r--src/plugins/android/android.pro2
-rw-r--r--src/plugins/android/android.qbs2
-rw-r--r--src/plugins/android/androidavdmanager.cpp3
-rw-r--r--src/plugins/android/androidavdmanager.h2
-rw-r--r--src/plugins/android/androidconfigurations.cpp1
-rw-r--r--src/plugins/android/androidsdkmanager.cpp30
-rw-r--r--src/plugins/android/androidtoolmanager.cpp339
-rw-r--r--src/plugins/android/androidtoolmanager.h71
9 files changed, 8 insertions, 443 deletions
diff --git a/src/plugins/android/CMakeLists.txt b/src/plugins/android/CMakeLists.txt
index 563732fbd4..e7bdfea6bc 100644
--- a/src/plugins/android/CMakeLists.txt
+++ b/src/plugins/android/CMakeLists.txt
@@ -44,7 +44,6 @@ add_qtc_plugin(Android
androidsettingswidget.cpp androidsettingswidget.h androidsettingswidget.ui
androidsignaloperation.cpp androidsignaloperation.h
androidtoolchain.cpp androidtoolchain.h
- androidtoolmanager.cpp androidtoolmanager.h
avddialog.cpp avddialog.h
certificatesmodel.cpp certificatesmodel.h
createandroidmanifestwizard.cpp createandroidmanifestwizard.h
diff --git a/src/plugins/android/android.pro b/src/plugins/android/android.pro
index bdf7efb38f..f5c5f981f8 100644
--- a/src/plugins/android/android.pro
+++ b/src/plugins/android/android.pro
@@ -43,7 +43,6 @@ HEADERS += \
android_global.h \
androidbuildapkstep.h \
androidbuildapkwidget.h \
- androidtoolmanager.h \
androidsdkmanager.h \
androidavdmanager.h \
adbcommandswidget.h \
@@ -90,7 +89,6 @@ SOURCES += \
avddialog.cpp \
androidbuildapkstep.cpp \
androidbuildapkwidget.cpp \
- androidtoolmanager.cpp \
androidsdkmanager.cpp \
androidavdmanager.cpp \
adbcommandswidget.cpp \
diff --git a/src/plugins/android/android.qbs b/src/plugins/android/android.qbs
index 026cc30324..1f89461102 100644
--- a/src/plugins/android/android.qbs
+++ b/src/plugins/android/android.qbs
@@ -103,8 +103,6 @@ Project {
"androidsignaloperation.h",
"androidtoolchain.cpp",
"androidtoolchain.h",
- "androidtoolmanager.cpp",
- "androidtoolmanager.h",
"avddialog.cpp",
"avddialog.h",
"certificatesmodel.cpp",
diff --git a/src/plugins/android/androidavdmanager.cpp b/src/plugins/android/androidavdmanager.cpp
index d396aceed7..7ae088b496 100644
--- a/src/plugins/android/androidavdmanager.cpp
+++ b/src/plugins/android/androidavdmanager.cpp
@@ -24,8 +24,6 @@
****************************************************************************/
#include "androidavdmanager.h"
-#include "androidtoolmanager.h"
-
#include <coreplugin/icore.h>
#include <utils/algorithm.h>
#include <utils/qtcassert.h>
@@ -222,7 +220,6 @@ private:
AndroidAvdManager::AndroidAvdManager(const AndroidConfig &config):
m_config(config),
- m_androidTool(new AndroidToolManager(m_config)),
m_parser(new AvdManagerOutputParser)
{
diff --git a/src/plugins/android/androidavdmanager.h b/src/plugins/android/androidavdmanager.h
index 5f6ea967a6..667301a58d 100644
--- a/src/plugins/android/androidavdmanager.h
+++ b/src/plugins/android/androidavdmanager.h
@@ -32,7 +32,6 @@
namespace Android {
namespace Internal {
-class AndroidToolManager;
class AvdManagerOutputParser;
class AndroidAvdManager
@@ -63,7 +62,6 @@ private:
private:
const AndroidConfig &m_config;
- std::unique_ptr<AndroidToolManager> m_androidTool;
std::unique_ptr<AvdManagerOutputParser> m_parser;
};
diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp
index 8c759905d0..00cd6fabf5 100644
--- a/src/plugins/android/androidconfigurations.cpp
+++ b/src/plugins/android/androidconfigurations.cpp
@@ -31,7 +31,6 @@
#include "androidqtversion.h"
#include "androiddevicedialog.h"
#include "androidsdkmanager.h"
-#include "androidtoolmanager.h"
#include "avddialog.h"
#include <coreplugin/icore.h>
diff --git a/src/plugins/android/androidsdkmanager.cpp b/src/plugins/android/androidsdkmanager.cpp
index e5df4a2d82..06101e6387 100644
--- a/src/plugins/android/androidsdkmanager.cpp
+++ b/src/plugins/android/androidsdkmanager.cpp
@@ -25,9 +25,9 @@
#include "androidsdkmanager.h"
+#include "androidconfigurations.h"
#include "androidconstants.h"
#include "androidmanager.h"
-#include "androidtoolmanager.h"
#include <utils/algorithm.h>
#include <utils/qtcassert.h>
@@ -49,10 +49,6 @@ static Q_LOGGING_CATEGORY(sdkManagerLog, "qtc.android.sdkManager", QtWarningMsg)
namespace Android {
namespace Internal {
-// Though sdk manager is introduced in 25.2.3 but the verbose mode is avaialble in 25.3.0
-// and android tool is supported in 25.2.3
-const QVersionNumber sdkManagerIntroVersion(25, 3 ,0);
-
const char installLocationKey[] = "Installed Location:";
const char revisionKey[] = "Version:";
const char descriptionKey[] = "Description:";
@@ -916,23 +912,13 @@ void AndroidSdkManagerPrivate::reloadSdkPackages()
return;
}
- if (m_config.sdkToolsVersion() < sdkManagerIntroVersion && !m_config.isCmdlineSdkToolsInstalled()) {
- // Old Sdk tools.
- m_packageListingSuccessful = true;
- AndroidToolManager toolManager(m_config);
- auto toAndroidSdkPackages = [](SdkPlatform *p) -> AndroidSdkPackage *{
- return p;
- };
- m_allPackages = Utils::transform(toolManager.availableSdkPlatforms(), toAndroidSdkPackages);
- } else {
- QString packageListing;
- QStringList args({"--list", "--verbose"});
- args << m_config.sdkManagerToolArgs();
- m_packageListingSuccessful = sdkManagerCommand(m_config, args, &packageListing);
- if (m_packageListingSuccessful) {
- SdkManagerOutputParser parser(m_allPackages);
- parser.parsePackageListing(packageListing);
- }
+ QString packageListing;
+ QStringList args({"--list", "--verbose"});
+ args << m_config.sdkManagerToolArgs();
+ m_packageListingSuccessful = sdkManagerCommand(m_config, args, &packageListing);
+ if (m_packageListingSuccessful) {
+ SdkManagerOutputParser parser(m_allPackages);
+ parser.parsePackageListing(packageListing);
}
emit m_sdkManager.packageReloadFinished();
}
diff --git a/src/plugins/android/androidtoolmanager.cpp b/src/plugins/android/androidtoolmanager.cpp
deleted file mode 100644
index 4fefc5dbcf..0000000000
--- a/src/plugins/android/androidtoolmanager.cpp
+++ /dev/null
@@ -1,339 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-#include "androidtoolmanager.h"
-
-#include "androidmanager.h"
-
-#include <utils/algorithm.h>
-#include <utils/environment.h>
-#include <utils/qtcassert.h>
-#include <utils/runextensions.h>
-#include <utils/synchronousprocess.h>
-
-#include <QLoggingCategory>
-
-namespace {
-static Q_LOGGING_CATEGORY(androidToolLog, "qtc.android.sdkManager", QtWarningMsg)
-}
-
-namespace Android {
-namespace Internal {
-
-using namespace Utils;
-
-class AndroidToolOutputParser
-{
-public:
- void parseTargetListing(const QString &output, const FilePath &sdkLocation,
- SdkPlatformList &platformList);
-
- QList<SdkPlatform> m_installedPlatforms;
-};
-
-/*!
- Runs the \c android tool located at \a toolPath with arguments \a args and environment \a
- environment. Returns \c true for successful execution. Command's output is copied to \a
- output.
- */
-static bool androidToolCommand(Utils::FilePath toolPath, const QStringList &args,
- const QProcessEnvironment &environment, QString *output)
-{
- SynchronousProcess proc;
- proc.setProcessEnvironment(environment);
- SynchronousProcessResponse response = proc.runBlocking({toolPath, args});
- if (response.result == SynchronousProcessResponse::Finished) {
- if (output)
- *output = response.allOutput();
- return true;
- }
- return false;
-}
-
-static QStringList cleanAndroidABIs(const QStringList &abis)
-{
- QStringList res;
- foreach (const QString &abi, abis) {
- int index = abi.lastIndexOf(QLatin1Char('/'));
- if (index == -1)
- res << abi;
- else
- res << abi.mid(index + 1);
- }
- return res;
-}
-
-AndroidToolManager::AndroidToolManager(const AndroidConfig &config) :
- m_config(config),
- m_parser(new AndroidToolOutputParser)
-{
-
-}
-
-AndroidToolManager::~AndroidToolManager() = default;
-
-SdkPlatformList AndroidToolManager::availableSdkPlatforms(bool *ok) const
-{
- bool success = false;
- SdkPlatformList list;
- QString targetListing;
- if (androidToolCommand(m_config.androidToolPath(), QStringList({"list", "target"}),
- AndroidConfigurations::toolsEnvironment(m_config), &targetListing)) {
- m_parser->parseTargetListing(targetListing, m_config.sdkLocation(), list);
- success = true;
- } else {
- qCDebug(androidToolLog) << "Android tool target listing failed";
- }
-
- if (ok)
- *ok = success;
-
- return list;
-}
-
-QFuture<CreateAvdInfo> AndroidToolManager::createAvd(CreateAvdInfo info) const
-{
- return Utils::runAsync(&AndroidToolManager::createAvdImpl, info,
- m_config.androidToolPath(),
- AndroidConfigurations::toolsEnvironment(m_config));
-}
-
-bool AndroidToolManager::removeAvd(const QString &name) const
-{
- SynchronousProcess proc;
- proc.setTimeoutS(5);
- proc.setProcessEnvironment(AndroidConfigurations::toolsEnvironment(m_config));
- SynchronousProcessResponse response
- = proc.runBlocking({m_config.androidToolPath(), {"delete", "avd", "-n", name}});
- return response.result == SynchronousProcessResponse::Finished && response.exitCode == 0;
-}
-
-QFuture<AndroidDeviceInfoList> AndroidToolManager::androidVirtualDevicesFuture() const
-{
- return Utils::runAsync(&AndroidToolManager::androidVirtualDevices,
- m_config.androidToolPath(), m_config.sdkLocation(),
- AndroidConfigurations::toolsEnvironment(m_config));
-}
-
-CreateAvdInfo AndroidToolManager::createAvdImpl(CreateAvdInfo info, FilePath androidToolPath,
- QProcessEnvironment env)
-{
- QProcess proc;
- proc.setProcessEnvironment(env);
- QStringList arguments;
- arguments << QLatin1String("create") << QLatin1String("avd")
- << QLatin1String("-t") << QString("android-%1").arg(info.systemImage->apiLevel())
- << QLatin1String("-n") << info.name
- << QLatin1String("-b") << info.abi;
- if (info.sdcardSize > 0)
- arguments << QLatin1String("-c") << QString::fromLatin1("%1M").arg(info.sdcardSize);
- proc.start(androidToolPath.toString(), arguments);
- if (!proc.waitForStarted()) {
- info.error = tr("Could not start process \"%1 %2\"")
- .arg(androidToolPath.toString(), arguments.join(QLatin1Char(' ')));
- return info;
- }
- QTC_CHECK(proc.state() == QProcess::Running);
- proc.write(QByteArray("yes\n")); // yes to "Do you wish to create a custom hardware profile"
-
- QByteArray question;
- while (true) {
- proc.waitForReadyRead(500);
- question += proc.readAllStandardOutput();
- if (question.endsWith(QByteArray("]:"))) {
- // truncate to last line
- int index = question.lastIndexOf(QByteArray("\n"));
- if (index != -1)
- question = question.mid(index);
- if (question.contains("hw.gpu.enabled"))
- proc.write(QByteArray("yes\n"));
- else
- proc.write(QByteArray("\n"));
- question.clear();
- }
-
- if (proc.state() != QProcess::Running)
- break;
- }
- QTC_CHECK(proc.state() == QProcess::NotRunning);
-
- QString errorOutput = QString::fromLocal8Bit(proc.readAllStandardError());
- // The exit code is always 0, so we need to check stderr
- // For now assume that any output at all indicates a error
- if (!errorOutput.isEmpty()) {
- info.error = errorOutput;
- }
-
- return info;
-}
-
-AndroidDeviceInfoList AndroidToolManager::androidVirtualDevices(const Utils::FilePath &androidTool,
- const FilePath &sdkLocationPath,
- const QProcessEnvironment &env)
-{
- AndroidDeviceInfoList devices;
- QString output;
- if (!androidToolCommand(androidTool, QStringList({"list", "avd"}), env, &output))
- return devices;
-
- QStringList avds = output.split('\n');
- if (avds.empty())
- return devices;
-
- for (const QString &line : avds) // remove the daemon logs
- if (line.startsWith("* daemon"))
- avds.removeOne(line);
-
- avds.removeFirst(); // remove "List of devices attached" header line
-
- bool nextLineIsTargetLine = false;
-
- AndroidDeviceInfo dev;
- for (int i = 0; i < avds.size(); i++) {
- QString line = avds.at(i);
- if (!line.contains(QLatin1String("Name:")))
- continue;
-
- int index = line.indexOf(QLatin1Char(':')) + 2;
- if (index >= line.size())
- break;
- dev.avdname = line.mid(index).trimmed();
- dev.sdk = -1;
- dev.cpuAbi.clear();
- ++i;
- for (; i < avds.size(); ++i) {
- line = avds.at(i);
- if (line.contains(QLatin1String("---------")))
- break;
-
- if (line.contains(QLatin1String("Target:")) || nextLineIsTargetLine) {
- if (line.contains(QLatin1String("Google APIs"))) {
- nextLineIsTargetLine = true;
- continue;
- }
-
- nextLineIsTargetLine = false;
-
- int lastIndex = line.lastIndexOf(QLatin1Char(' '));
- if (lastIndex == -1) // skip line
- break;
- QString tmp = line.mid(lastIndex).remove(QLatin1Char(')')).trimmed();
- dev.sdk = AndroidManager::findApiLevel(
- sdkLocationPath.pathAppended(QString("/platforms/android-%1").arg(tmp)));
- }
- if (line.contains(QLatin1String("Tag/ABI:"))) {
- int lastIndex = line.lastIndexOf(QLatin1Char('/')) + 1;
- if (lastIndex >= line.size())
- break;
- dev.cpuAbi = QStringList(line.mid(lastIndex));
- } else if (line.contains(QLatin1String("ABI:"))) {
- int lastIndex = line.lastIndexOf(QLatin1Char(' ')) + 1;
- if (lastIndex >= line.size())
- break;
- dev.cpuAbi = QStringList(line.mid(lastIndex).trimmed());
- }
- }
- // armeabi-v7a devices can also run armeabi code
- if (dev.cpuAbi == QStringList("armeabi-v7a"))
- dev.cpuAbi << QLatin1String("armeabi");
- dev.state = AndroidDeviceInfo::OkState;
- dev.type = AndroidDeviceInfo::Emulator;
- if (dev.cpuAbi.isEmpty() || dev.sdk == -1)
- continue;
- devices.push_back(dev);
- }
- Utils::sort(devices);
-
- return devices;
-}
-
-void AndroidToolOutputParser::parseTargetListing(const QString &output,
- const Utils::FilePath &sdkLocation,
- SdkPlatformList &platformList)
-{
- auto addSystemImage = [](const QStringList& abiList, SdkPlatform *platform) {
- QTC_ASSERT(platform, return);
- foreach (auto imageAbi, abiList) {
- auto image = new SystemImage(QVersionNumber(), "", imageAbi, platform);
- platform->addSystemImage(image);
- }
- };
-
- class {
- public:
- QStringList abiList;
- QVersionNumber revision;
- int apiLevel = -1;
- QString description;
- Utils::FilePath installedLocation;
-
- void clear() {
- abiList.clear();
- revision = QVersionNumber();
- apiLevel = -1;
- description.clear();
- installedLocation.clear();
- }
- } platformParams;
-
- QStringList outputLines = output.split('\n');
- for (int index = 0; index < outputLines.count(); ++index) {
- const QString line = outputLines.at(index).trimmed();
- if (line.startsWith(QLatin1String("id:")) && line.contains(QLatin1String("android-"))) {
- int index = line.indexOf(QLatin1String("\"android-"));
- if (index == -1)
- continue;
- QString androidTarget = line.mid(index + 1, line.length() - index - 2);
- const QString tmp = androidTarget.mid(androidTarget.lastIndexOf(QLatin1Char('-')) + 1);
- platformParams.installedLocation = sdkLocation.pathAppended(QString("/platforms/android-%1").arg(tmp));
- platformParams.apiLevel = AndroidManager::findApiLevel(platformParams.installedLocation);
- } else if (line.startsWith(QLatin1String("Name:"))) {
- platformParams.description = line.mid(6);
- } else if (line.startsWith(QLatin1String("Revision:"))) {
- platformParams.revision = QVersionNumber::fromString(line.mid(10));
- } else if (line.startsWith(QLatin1String("Tag/ABIs :"))) {
- platformParams.abiList = cleanAndroidABIs(line.mid(10).trimmed().split(QLatin1String(", ")));
- } else if (line.startsWith(QLatin1String("ABIs"))) {
- platformParams.abiList = cleanAndroidABIs(line.mid(6).trimmed().split(QLatin1String(", ")));
- } else if (line.startsWith(QLatin1String("---"))
- || line.startsWith(QLatin1String("==="))
- || index == outputLines.count() - 1) {
- if (platformParams.apiLevel == -1)
- continue;
- auto platform = new SdkPlatform(platformParams.revision,
- QString("platforms;android-%1").arg(platformParams.apiLevel),
- platformParams.apiLevel);
- platform->setState(AndroidSdkPackage::Installed);
- platform->setDescriptionText(platformParams.description);
- platform->setInstalledLocation(platformParams.installedLocation);
- addSystemImage(platformParams.abiList, platform);
- platformList << platform;
- platformParams.clear();
- }
- }
- Utils::sort(platformList);
-}
-
-} // namespace Internal
-} // namespace Android
diff --git a/src/plugins/android/androidtoolmanager.h b/src/plugins/android/androidtoolmanager.h
deleted file mode 100644
index a109d4d2b7..0000000000
--- a/src/plugins/android/androidtoolmanager.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of Qt Creator.
-**
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-****************************************************************************/
-#pragma once
-
-#include "androidconfigurations.h"
-
-#include <utils/fileutils.h>
-
-#include <QStringList>
-
-#include <memory>
-
-namespace Android {
-class AndroidConfig;
-
-namespace Internal {
-
-class AndroidToolOutputParser;
-/*!
- Wraps the \c android tool's usage. The tool itself is deprecated since SDK tools version 25.3.0.
- */
-class AndroidToolManager
-{
- Q_DECLARE_TR_FUNCTIONS(AndroidToolManager)
-
-public:
- AndroidToolManager(const AndroidConfig &config);
- ~AndroidToolManager();
-
- SdkPlatformList availableSdkPlatforms(bool *ok = nullptr) const;
-
- QFuture<CreateAvdInfo> createAvd(CreateAvdInfo info) const;
- bool removeAvd(const QString &name) const;
- QFuture<AndroidDeviceInfoList> androidVirtualDevicesFuture() const;
-
-// Helper methods
-private:
- static CreateAvdInfo createAvdImpl(CreateAvdInfo info, Utils::FilePath androidToolPath,
- QProcessEnvironment env);
- static AndroidDeviceInfoList androidVirtualDevices(const Utils::FilePath &androidTool,
- const Utils::FilePath &sdkLlocationPath,
- const QProcessEnvironment &env);
-private:
- const AndroidConfig &m_config;
- std::unique_ptr<AndroidToolOutputParser> m_parser;
-};
-
-} // namespace Internal
-} // namespace Android