From 750f25d9e69068b3ca67a5ba8df180d84ce679da Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Tue, 28 Feb 2017 14:03:20 +0200 Subject: [PATCH] Fix release builds debugging Add gdbserver all the time, except when the user signs the package. Even then the user can "Force debugging" by checking the checkbox. Change-Id: I274243786f3d6d6b88f41e532bebc24213f5e9db Reviewed-by: Vikas Pachdha Reviewed-by: Leena Miettinen Reviewed-by: hjk --- src/plugins/android/androidbuildapkstep.cpp | 10 ++++++ src/plugins/android/androidbuildapkstep.h | 4 +++ src/plugins/android/androidbuildapkwidget.cpp | 4 +++ src/plugins/android/androidbuildapkwidget.ui | 34 +++++++++++++++++-- .../qmakeandroidbuildapkstep.cpp | 16 +++++---- 5 files changed, 59 insertions(+), 9 deletions(-) diff --git a/src/plugins/android/androidbuildapkstep.cpp b/src/plugins/android/androidbuildapkstep.cpp index 0ff998809f7..4064839288a 100644 --- a/src/plugins/android/androidbuildapkstep.cpp +++ b/src/plugins/android/androidbuildapkstep.cpp @@ -342,6 +342,16 @@ void AndroidBuildApkStep::setUseGradle(bool b) } } +bool AndroidBuildApkStep::addDebugger() const +{ + return m_addDebugger; +} + +void AndroidBuildApkStep::setAddDebugger(bool debug) +{ + m_addDebugger = debug; +} + bool AndroidBuildApkStep::verboseOutput() const { return m_verbose; diff --git a/src/plugins/android/androidbuildapkstep.h b/src/plugins/android/androidbuildapkstep.h index 0d044c0cccc..c6cfb969096 100644 --- a/src/plugins/android/androidbuildapkstep.h +++ b/src/plugins/android/androidbuildapkstep.h @@ -73,6 +73,9 @@ public: bool useGradle() const; void setUseGradle(bool b); + bool addDebugger() const; + void setAddDebugger(bool debug); + QString buildTargetSdk() const; void setBuildTargetSdk(const QString &sdk); @@ -102,6 +105,7 @@ protected: bool m_useGradle = false; bool m_openPackageLocation = false; bool m_openPackageLocationForRun = false; + bool m_addDebugger = true; QString m_buildTargetSdk; Utils::FileName m_keystorePath; diff --git a/src/plugins/android/androidbuildapkwidget.cpp b/src/plugins/android/androidbuildapkwidget.cpp index 2e85c243fc2..bce4508e054 100644 --- a/src/plugins/android/androidbuildapkwidget.cpp +++ b/src/plugins/android/androidbuildapkwidget.cpp @@ -94,6 +94,7 @@ AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step) m_ui->useGradleCheckBox->setChecked(m_step->useGradle()); m_ui->verboseOutputCheckBox->setChecked(m_step->verboseOutput()); m_ui->openPackageLocationCheckBox->setChecked(m_step->openPackageLocation()); + m_ui->addDebuggerCheckBox->setChecked(m_step->addDebugger()); // target sdk connect(m_ui->targetSDKComboBox, @@ -120,6 +121,8 @@ AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step) this, &AndroidBuildApkWidget::openPackageLocationCheckBoxToggled); connect(m_ui->verboseOutputCheckBox, &QAbstractButton::toggled, this, &AndroidBuildApkWidget::verboseOutputCheckBoxToggled); + connect(m_ui->addDebuggerCheckBox, &QAbstractButton::toggled, + m_step, &AndroidBuildApkStep::setAddDebugger); //signing connect(m_ui->signPackageCheckBox, &QAbstractButton::toggled, @@ -185,6 +188,7 @@ void AndroidBuildApkWidget::signPackageCheckBoxToggled(bool checked) { m_ui->certificatesAliasComboBox->setEnabled(checked); m_step->setSignPackage(checked); + m_ui->addDebuggerCheckBox->setChecked(!checked); updateSigningWarning(); if (!checked) return; diff --git a/src/plugins/android/androidbuildapkwidget.ui b/src/plugins/android/androidbuildapkwidget.ui index e5565873af3..d74066ce64a 100644 --- a/src/plugins/android/androidbuildapkwidget.ui +++ b/src/plugins/android/androidbuildapkwidget.ui @@ -7,7 +7,7 @@ 0 0 819 - 390 + 478 @@ -197,6 +197,19 @@ Deploying local Qt libraries is incompatible with Android 5. + + + + false + + + Packages debug server with the APK to enable debugging. For the signed APK this option is unchecked by default. + + + Add debug server + + + @@ -254,5 +267,22 @@ The APK will not be usable on any other device. - + + + signPackageCheckBox + clicked(bool) + addDebuggerCheckBox + setEnabled(bool) + + + 113 + 178 + + + 510 + 452 + + + + diff --git a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp index c336329c9c7..ce087ff9df2 100644 --- a/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp +++ b/src/plugins/qmakeandroidsupport/qmakeandroidbuildapkstep.cpp @@ -182,13 +182,6 @@ bool QmakeAndroidBuildApkStep::init(QList &earlierSteps) QStringList argumentsPasswordConcealed = arguments; - if (version->qtVersion() >= QtSupport::QtVersionNumber(5, 6, 0)) { - if (bc->buildType() == ProjectExplorer::BuildConfiguration::Debug) - arguments << QLatin1String("--gdbserver"); - else - arguments << QLatin1String("--no-gdbserver"); - } - if (m_signPackage) { arguments << QLatin1String("--sign") << m_keystorePath.toString() @@ -206,6 +199,15 @@ bool QmakeAndroidBuildApkStep::init(QList &earlierSteps) } + // Must be the last option, otherwise androiddeployqt might use the other + // params (e.g. --sign) to choose not to add gdbserver + if (version->qtVersion() >= QtSupport::QtVersionNumber(5, 6, 0)) { + if (m_addDebugger || bc->buildType() == ProjectExplorer::BuildConfiguration::Debug) + arguments << QLatin1String("--gdbserver"); + else + arguments << QLatin1String("--no-gdbserver"); + } + ProjectExplorer::ProcessParameters *pp = processParameters(); setupProcessParameters(pp, bc, arguments, command);