From 6458473414119ae5a70a3128c375f2c3faabef33 Mon Sep 17 00:00:00 2001 From: Jake Petroules Date: Mon, 4 Sep 2017 15:21:16 -0700 Subject: [PATCH] Android: remove support for local/debug deployment option This is only usable with versions of Android older than 5. Now that Android 8 is the current version, we say goodbye to this feature as it is almost certainly no longer of use to anyone. Task-number: QTBUG-62995 Change-Id: I19795eb385b18f4dd87a1bb8df57d36c3fa28dc5 Reviewed-by: Eskil Abrahamsen Blomfeldt Reviewed-by: Leena Miettinen Reviewed-by: Vikas Pachdha Reviewed-by: BogDan Vatra --- doc/src/android/deploying-android.qdoc | 16 ------- src/plugins/android/androidbuildapkstep.cpp | 15 ++----- src/plugins/android/androidbuildapkstep.h | 1 - src/plugins/android/androidbuildapkwidget.cpp | 33 --------------- src/plugins/android/androidbuildapkwidget.h | 2 - src/plugins/android/androidbuildapkwidget.ui | 42 ------------------- src/plugins/android/androidconfigurations.cpp | 5 +-- src/plugins/android/androidconfigurations.h | 3 +- src/plugins/android/androiddeployqtstep.cpp | 8 +--- src/plugins/android/androiddevicedialog.cpp | 13 +++--- src/plugins/android/androiddevicedialog.h | 2 +- src/plugins/android/androidmanager.cpp | 4 +- src/plugins/android/androidrunner.cpp | 3 +- .../qmakeandroidbuildapkstep.cpp | 2 - 14 files changed, 17 insertions(+), 132 deletions(-) diff --git a/doc/src/android/deploying-android.qdoc b/doc/src/android/deploying-android.qdoc index cf9018ce311..0074867b778 100644 --- a/doc/src/android/deploying-android.qdoc +++ b/doc/src/android/deploying-android.qdoc @@ -82,22 +82,6 @@ To use Ministro to install the Qt libraries, select the \uicontrol {Use Ministro service to install Qt} option. - \section1 Deploying Qt Libraries for Debugging - - To test your application on a device that is physically connected to the - development host (or on an emulator), you can copy the Qt libraries into a - temporary directory on your device and run the application against them. - - An APK built in this way is not distributable, since it relies on the device - containing the Qt libraries in the correct location. However, as the Qt - libraries are only copied into the device once, this method provides a fast - turn-around time, and is therefore convenient for testing the application - during development. - - Select the \uicontrol {Deploy local Qt libraries to temporary directory} option to - deploy Qt libraries to the \c{/data/local/tmp/qt} folder on the device and - to run the application against them. - \section1 Packaging Applications Because bundling applications as APK packages is not diff --git a/src/plugins/android/androidbuildapkstep.cpp b/src/plugins/android/androidbuildapkstep.cpp index a8bb143a756..255114a9cac 100644 --- a/src/plugins/android/androidbuildapkstep.cpp +++ b/src/plugins/android/androidbuildapkstep.cpp @@ -115,12 +115,8 @@ AndroidBuildApkStep::AndroidBuildApkStep(ProjectExplorer::BuildStepList *parent, m_buildTargetSdk(other->m_buildTargetSdk) { const QtSupport::BaseQtVersion *version = QtSupport::QtKitInformation::qtVersion(target()->kit()); - if (version->qtVersion() < QtSupport::QtVersionNumber(5, 4, 0)) { - if (m_deployAction == DebugDeployment) - m_deployAction = BundleLibrariesDeployment; - if (m_useGradle) - m_useGradle = false; - } + if (m_useGradle && version->qtVersion() < QtSupport::QtVersionNumber(5, 4, 0)) + m_useGradle = false; } bool AndroidBuildApkStep::init(QList &earlierSteps) @@ -237,11 +233,8 @@ bool AndroidBuildApkStep::verifyCertificatePassword() bool AndroidBuildApkStep::fromMap(const QVariantMap &map) { m_deployAction = AndroidDeployAction(map.value(DeployActionKey, BundleLibrariesDeployment).toInt()); - if ( m_deployAction == DebugDeployment - && QtSupport::QtKitInformation::qtVersion(target()->kit())->qtVersion() < QtSupport::QtVersionNumber(5, 4, 0)) { - m_deployAction = BundleLibrariesDeployment; - } - + if (m_deployAction > BundleLibrariesDeployment) + m_deployAction = BundleLibrariesDeployment; // BundleLibrariesDeployment used to be 2 m_keystorePath = Utils::FileName::fromString(map.value(KeystoreLocationKey).toString()); m_signPackage = false; // don't restore this m_buildTargetSdk = map.value(BuildTargetSdkKey).toString(); diff --git a/src/plugins/android/androidbuildapkstep.h b/src/plugins/android/androidbuildapkstep.h index eae827eb15f..f58005ee76c 100644 --- a/src/plugins/android/androidbuildapkstep.h +++ b/src/plugins/android/androidbuildapkstep.h @@ -44,7 +44,6 @@ public: enum AndroidDeployAction { MinistroDeployment, // use ministro - DebugDeployment, BundleLibrariesDeployment }; diff --git a/src/plugins/android/androidbuildapkwidget.cpp b/src/plugins/android/androidbuildapkwidget.cpp index 97dd4695bde..664a0aa6de2 100644 --- a/src/plugins/android/androidbuildapkwidget.cpp +++ b/src/plugins/android/androidbuildapkwidget.cpp @@ -69,9 +69,6 @@ AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step) case AndroidBuildApkStep::MinistroDeployment: m_ui->ministroOption->setChecked(true); break; - case AndroidBuildApkStep::DebugDeployment: - m_ui->temporaryQtOption->setChecked(true); - break; case AndroidBuildApkStep::BundleLibrariesDeployment: m_ui->bundleQtOption->setChecked(true); break; @@ -91,7 +88,6 @@ AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step) m_ui->signingDebugWarningIcon->setPixmap(Utils::Icons::WARNING.pixmap()); m_ui->signingDebugWarningIcon->hide(); m_ui->signingDebugWarningLabel->hide(); - m_ui->signingDebugDeployErrorIcon->setPixmap(Utils::Icons::CRITICAL.pixmap()); signPackageCheckBoxToggled(m_step->signPackage()); m_ui->useGradleCheckBox->setEnabled(config.antScriptsAvailable()); @@ -109,16 +105,8 @@ AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step) // deployment options connect(m_ui->ministroOption, &QAbstractButton::clicked, this, &AndroidBuildApkWidget::setMinistro); - connect(m_ui->temporaryQtOption, &QAbstractButton::clicked, - this, &AndroidBuildApkWidget::setDeployLocalQtLibs); connect(m_ui->bundleQtOption, &QAbstractButton::clicked, this, &AndroidBuildApkWidget::setBundleQtLibs); - connect(m_ui->ministroOption, &QAbstractButton::clicked, - this, &AndroidBuildApkWidget::updateDebugDeploySigningWarning); - connect(m_ui->temporaryQtOption, &QAbstractButton::clicked, - this, &AndroidBuildApkWidget::updateDebugDeploySigningWarning); - connect(m_ui->bundleQtOption, &QAbstractButton::clicked, - this, &AndroidBuildApkWidget::updateDebugDeploySigningWarning); connect(m_ui->useGradleCheckBox, &QAbstractButton::toggled, this, &AndroidBuildApkWidget::useGradleCheckBoxToggled); @@ -147,10 +135,8 @@ AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step) this, &AndroidBuildApkWidget::updateSigningWarning); updateSigningWarning(); - updateDebugDeploySigningWarning(); QtSupport::BaseQtVersion *qt = QtSupport::QtKitInformation::qtVersion(step->target()->kit()); bool qt54 = qt->qtVersion() >= QtSupport::QtVersionNumber(5, 4, 0); - m_ui->temporaryQtOption->setVisible(qt54); m_ui->useGradleCheckBox->setVisible(qt54); } @@ -179,11 +165,6 @@ void AndroidBuildApkWidget::setMinistro() m_step->setDeployAction(AndroidBuildApkStep::MinistroDeployment); } -void AndroidBuildApkWidget::setDeployLocalQtLibs() -{ - m_step->setDeployAction(AndroidBuildApkStep::DebugDeployment); -} - void AndroidBuildApkWidget::setBundleQtLibs() { m_step->setDeployAction(AndroidBuildApkStep::BundleLibrariesDeployment); @@ -267,20 +248,6 @@ void AndroidBuildApkWidget::updateSigningWarning() } } -void AndroidBuildApkWidget::updateDebugDeploySigningWarning() -{ - if (m_step->deployAction() == AndroidBuildApkStep::DebugDeployment) { - m_ui->signingDebugDeployError->setVisible(true); - m_ui->signingDebugDeployErrorIcon->setVisible(true); - m_ui->signPackageCheckBox->setChecked(false); - m_ui->signPackageCheckBox->setEnabled(false); - } else { - m_ui->signingDebugDeployError->setVisible(false); - m_ui->signingDebugDeployErrorIcon->setVisible(false); - m_ui->signPackageCheckBox->setEnabled(true); - } -} - void AndroidBuildApkWidget::useGradleCheckBoxToggled(bool checked) { m_step->setUseGradle(checked); diff --git a/src/plugins/android/androidbuildapkwidget.h b/src/plugins/android/androidbuildapkwidget.h index e4d46a99a23..c17f0536d80 100644 --- a/src/plugins/android/androidbuildapkwidget.h +++ b/src/plugins/android/androidbuildapkwidget.h @@ -52,13 +52,11 @@ public: private: void setTargetSdk(const QString &sdk); void setMinistro(); - void setDeployLocalQtLibs(); void setBundleQtLibs(); void createKeyStore(); void certificatesAliasComboBoxCurrentIndexChanged(const QString &alias); void certificatesAliasComboBoxActivated(const QString &alias); void updateSigningWarning(); - void updateDebugDeploySigningWarning(); void useGradleCheckBoxToggled(bool checked); void openPackageLocationCheckBoxToggled(bool checked); void verboseOutputCheckBoxToggled(bool checked); diff --git a/src/plugins/android/androidbuildapkwidget.ui b/src/plugins/android/androidbuildapkwidget.ui index fa3c1ef3d66..369c761da19 100644 --- a/src/plugins/android/androidbuildapkwidget.ui +++ b/src/plugins/android/androidbuildapkwidget.ui @@ -117,37 +117,6 @@ - - - - - - - 0 - 0 - - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - 0 - 0 - - - - Signing an APK that uses "Deploy local Qt libraries" is not allowed. -Deploying local Qt libraries is incompatible with Android 5. - - - - - @@ -280,17 +249,6 @@ Deploying local Qt libraries is incompatible with Android 5. - - - - Pushes local Qt libraries to device. You must have Qt libraries compiled for that platform. -The APK will not be usable on any other device. - - - Deploy local Qt libraries to temporary directory - - - diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index ab059d0f8c8..3b2e1a1bea3 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -941,11 +941,10 @@ void AndroidConfigurations::setConfig(const AndroidConfig &devConfigs) } AndroidDeviceInfo AndroidConfigurations::showDeviceDialog(Project *project, - int apiLevel, const QString &abi, - Options options) + int apiLevel, const QString &abi) { QString serialNumber = defaultDevice(project, abi); - AndroidDeviceDialog dialog(apiLevel, abi, options, serialNumber, Core::ICore::mainWindow()); + AndroidDeviceDialog dialog(apiLevel, abi, serialNumber, Core::ICore::mainWindow()); AndroidDeviceInfo info = dialog.device(); if (dialog.saveDeviceSelection() && info.isValid()) { const QString serialNumber = info.type == AndroidDeviceInfo::Hardware ? diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index d95b6aad423..e2a26e36e7a 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -233,8 +233,7 @@ public: static AndroidConfigurations *instance(); static void updateAndroidDevice(); - enum Options { None, FilterAndroid5 }; - static AndroidDeviceInfo showDeviceDialog(ProjectExplorer::Project *project, int apiLevel, const QString &abi, Options options); + static AndroidDeviceInfo showDeviceDialog(ProjectExplorer::Project *project, int apiLevel, const QString &abi); static void setDefaultDevice(ProjectExplorer::Project *project, const QString &abi, const QString &serialNumber); // serial number or avd name static QString defaultDevice(ProjectExplorer::Project *project, const QString &abi); // serial number or avd name static void clearDefaultDevices(ProjectExplorer::Project *project); diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index b4bfbc7bc16..94966152981 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -161,12 +161,9 @@ bool AndroidDeployQtStep::init(QList &earlierSteps) } int deviceAPILevel = AndroidManager::minimumSDK(target()); - AndroidConfigurations::Options options = AndroidConfigurations::None; - if (androidBuildApkStep->deployAction() == AndroidBuildApkStep::DebugDeployment) - options = AndroidConfigurations::FilterAndroid5; AndroidDeviceInfo info = earlierDeviceInfo(earlierSteps, Id); if (!info.isValid()) { - info = AndroidConfigurations::showDeviceDialog(project(), deviceAPILevel, m_targetArch, options); + info = AndroidConfigurations::showDeviceDialog(project(), deviceAPILevel, m_targetArch); m_deviceInfo = info; // Keep around for later steps } @@ -232,9 +229,6 @@ bool AndroidDeployQtStep::init(QList &earlierSteps) case AndroidBuildApkStep::MinistroDeployment: Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("ministro")); break; - case AndroidBuildApkStep::DebugDeployment: - Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("debug")); - break; case AndroidBuildApkStep::BundleLibrariesDeployment: Utils::QtcProcess::addArg(&m_androiddeployqtArgs, QLatin1String("bundled")); break; diff --git a/src/plugins/android/androiddevicedialog.cpp b/src/plugins/android/androiddevicedialog.cpp index a874466e15b..67cd02e9f84 100644 --- a/src/plugins/android/androiddevicedialog.cpp +++ b/src/plugins/android/androiddevicedialog.cpp @@ -237,7 +237,7 @@ class AndroidDeviceModel : public QAbstractItemModel { Q_OBJECT public: - AndroidDeviceModel(int apiLevel, const QString &abi, AndroidConfigurations::Options options); + AndroidDeviceModel(int apiLevel, const QString &abi); QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; QModelIndex parent(const QModelIndex &child) const; @@ -253,7 +253,6 @@ public: private: int m_apiLevel; QString m_abi; - AndroidConfigurations::Options m_options; AndroidDeviceModelNode *m_root; }; @@ -262,8 +261,8 @@ private: ///////////////// // AndroidDeviceModel ///////////////// -AndroidDeviceModel::AndroidDeviceModel(int apiLevel, const QString &abi, AndroidConfigurations::Options options) - : m_apiLevel(apiLevel), m_abi(abi), m_options(options), m_root(0) +AndroidDeviceModel::AndroidDeviceModel(int apiLevel, const QString &abi) + : m_apiLevel(apiLevel), m_abi(abi), m_root(0) { } @@ -372,8 +371,6 @@ void AndroidDeviceModel::setDevices(const QVector &devices) } else if (device.sdk < m_apiLevel) { error = AndroidDeviceDialog::tr("API Level of device is: %1.") .arg(device.sdk); - } else if (device.sdk > 20 && (m_options & AndroidConfigurations::FilterAndroid5)) { - error = AndroidDeviceDialog::tr("Android 5 devices are incompatible with deploying Qt to a temporary directory."); } else { new AndroidDeviceModelNode(compatibleDevices, device); continue; @@ -417,10 +414,10 @@ static inline QString msgAdbListDevices() return AndroidDeviceDialog::tr("

The adb tool in the Android SDK lists all connected devices if run via "adb devices".

"); } -AndroidDeviceDialog::AndroidDeviceDialog(int apiLevel, const QString &abi, AndroidConfigurations::Options options, +AndroidDeviceDialog::AndroidDeviceDialog(int apiLevel, const QString &abi, const QString &serialNumber, QWidget *parent) : QDialog(parent), - m_model(new AndroidDeviceModel(apiLevel, abi, options)), + m_model(new AndroidDeviceModel(apiLevel, abi)), m_ui(new Ui::AndroidDeviceDialog), m_apiLevel(apiLevel), m_abi(abi), diff --git a/src/plugins/android/androiddevicedialog.h b/src/plugins/android/androiddevicedialog.h index 8f957aa0b20..f882b0bfcd2 100644 --- a/src/plugins/android/androiddevicedialog.h +++ b/src/plugins/android/androiddevicedialog.h @@ -52,7 +52,7 @@ class AndroidDeviceDialog : public QDialog Q_OBJECT public: - explicit AndroidDeviceDialog(int apiLevel, const QString &abi, AndroidConfigurations::Options opts, + explicit AndroidDeviceDialog(int apiLevel, const QString &abi, const QString &serialNumber, QWidget *parent = 0); ~AndroidDeviceDialog(); diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 71bb1b40d60..a5dcdd55a19 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -341,7 +341,7 @@ void AndroidManager::cleanLibsOnDevice(ProjectExplorer::Target *target) if (targetArch.isEmpty()) return; const int deviceAPILevel = AndroidManager::minimumSDK(target); - AndroidDeviceInfo info = AndroidConfigurations::showDeviceDialog(target->project(), deviceAPILevel, targetArch, AndroidConfigurations::None); + AndroidDeviceInfo info = AndroidConfigurations::showDeviceDialog(target->project(), deviceAPILevel, targetArch); if (!info.isValid()) // aborted return; @@ -371,7 +371,7 @@ void AndroidManager::installQASIPackage(ProjectExplorer::Target *target, const Q if (targetArch.isEmpty()) return; const int deviceAPILevel = AndroidManager::minimumSDK(target); - AndroidDeviceInfo info = AndroidConfigurations::showDeviceDialog(target->project(), deviceAPILevel, targetArch, AndroidConfigurations::None); + AndroidDeviceInfo info = AndroidConfigurations::showDeviceDialog(target->project(), deviceAPILevel, targetArch); if (!info.isValid()) // aborted return; diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index 203b0cdd8ea..eb676d9bc8d 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -814,8 +814,7 @@ void AndroidRunner::launchAVD() // Get AVD info. AndroidDeviceInfo info = AndroidConfigurations::showDeviceDialog( - m_target->project(), deviceAPILevel, targetArch, - AndroidConfigurations::None); + m_target->project(), deviceAPILevel, targetArch); AndroidManager::setDeviceSerialNumber(m_target, info.serialNumber); m_androidRunnable.deviceSerialNumber = info.serialNumber; emit androidRunnableChanged(m_androidRunnable); diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp index 9ede1a10e3a..f9fe6758c01 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp @@ -138,8 +138,6 @@ bool QmakeAndroidBuildApkStep::init(QList &earlierSteps) QString deploymentMethod; if (m_deployAction == MinistroDeployment) deploymentMethod = "ministro"; - else if (m_deployAction == DebugDeployment) - deploymentMethod = "debug"; else if (m_deployAction == BundleLibrariesDeployment) deploymentMethod = "bundled";