diff options
Diffstat (limited to 'src/plugins/android/androiddeployqtstep.cpp')
-rw-r--r-- | src/plugins/android/androiddeployqtstep.cpp | 68 |
1 files changed, 35 insertions, 33 deletions
diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index f3863ca998..d82d050511 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -101,43 +101,43 @@ public: setSummaryText(displayName()); auto uninstallPreviousPackage = new QCheckBox(this); - uninstallPreviousPackage->setText(AndroidDeployQtStep::tr("Uninstall previous package")); + uninstallPreviousPackage->setText(AndroidDeployQtStep::tr("Uninstall the existing app first")); uninstallPreviousPackage->setChecked(step->uninstallPreviousPackage() > AndroidDeployQtStep::Keep); uninstallPreviousPackage->setEnabled(step->uninstallPreviousPackage() != AndroidDeployQtStep::ForceUnintall); - auto resetDefaultDevices = new QPushButton(this); - resetDefaultDevices->setText(AndroidDeployQtStep::tr("Reset Default Devices")); - - auto installMinistroButton = new QPushButton(this); - installMinistroButton->setText(AndroidDeployQtStep::tr("Install Ministro from APK")); + connect(uninstallPreviousPackage, &QAbstractButton::toggled, + step, &AndroidDeployQtStep::setUninstallPreviousPackage); - connect(installMinistroButton, &QAbstractButton::clicked, this, [this, step] { - QString packagePath = - QFileDialog::getOpenFileName(this, - AndroidDeployQtStep::tr("Qt Android Smart Installer"), - QDir::homePath(), - AndroidDeployQtStep::tr("Android package (*.apk)")); - if (!packagePath.isEmpty()) - AndroidManager::installQASIPackage(step->target(), packagePath); - }); + auto resetDefaultDevices = new QPushButton(this); + resetDefaultDevices->setText(AndroidDeployQtStep::tr("Reset Default Deployment Devices")); connect(resetDefaultDevices, &QAbstractButton::clicked, this, [step] { AndroidConfigurations::clearDefaultDevices(step->project()); }); - connect(uninstallPreviousPackage, &QAbstractButton::toggled, - step, &AndroidDeployQtStep::setUninstallPreviousPackage); + auto installCustomApkButton = new QPushButton(this); + installCustomApkButton->setText(AndroidDeployQtStep::tr("Install an APK File")); + + connect(installCustomApkButton, &QAbstractButton::clicked, this, [this, step] { + const QString packagePath + = QFileDialog::getOpenFileName(this, + AndroidDeployQtStep::tr("Qt Android Installer"), + QDir::homePath(), + AndroidDeployQtStep::tr("Android package (*.apk)")); + if (!packagePath.isEmpty()) + AndroidManager::installQASIPackage(step->target(), packagePath); + }); auto layout = new QVBoxLayout(this); layout->addWidget(uninstallPreviousPackage); layout->addWidget(resetDefaultDevices); - layout->addWidget(installMinistroButton); + layout->addWidget(installCustomApkButton); } }; // AndroidDeployQtStep -AndroidDeployQtStep::AndroidDeployQtStep(BuildStepList *parent, Core::Id id) +AndroidDeployQtStep::AndroidDeployQtStep(BuildStepList *parent, Utils::Id id) : BuildStep(parent, id) { setImmutable(true); @@ -155,7 +155,7 @@ AndroidDeployQtStep::AndroidDeployQtStep(BuildStepList *parent, Core::Id id) this, &AndroidDeployQtStep::slotSetSerialNumber); } -Core::Id AndroidDeployQtStep::stepId() +Utils::Id AndroidDeployQtStep::stepId() { return "Qt4ProjectManager.AndroidDeployQtStep"; } @@ -163,8 +163,12 @@ Core::Id AndroidDeployQtStep::stepId() bool AndroidDeployQtStep::init() { QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(target()->kit()); - if (!version) // TODO: Add error message + if (!version) { + qCDebug(deployStepLog, + "The Qt version for kit %s is not valid.", + qPrintable(target()->kit()->displayName())); return false; + } m_androiddeployqtArgs = CommandLine(); @@ -178,7 +182,7 @@ bool AndroidDeployQtStep::init() RunConfiguration *rc = target()->activeRunConfiguration(); QTC_ASSERT(rc, return false); - ProjectExplorer::BuildConfiguration *bc = buildConfiguration(); + BuildConfiguration *bc = target()->activeBuildConfiguration(); QTC_ASSERT(bc, return false); auto androidBuildApkStep = bc->buildSteps()->firstOfType<AndroidBuildApkStep>(); @@ -205,7 +209,7 @@ bool AndroidDeployQtStep::init() m_avdName = info.avdname; m_serialNumber = info.serialNumber; - qCDebug(deployStepLog) << "Selected Device:" << info; + qCDebug(deployStepLog) << "Selected device info:" << info; gatherFilesToPull(); @@ -222,7 +226,8 @@ bool AndroidDeployQtStep::init() m_useAndroiddeployqt = version->qtVersion() >= QtSupport::QtVersionNumber(5, 4, 0); if (m_useAndroiddeployqt) { - const ProjectNode *node = target()->project()->findNodeForBuildKey(rc->buildKey()); + const QString buildKey = target()->activeBuildKey(); + const ProjectNode *node = target()->project()->findNodeForBuildKey(buildKey); if (!node) return false; m_apkPath = Utils::FilePath::fromString(node->data(Constants::AndroidApk).toString()); @@ -241,7 +246,6 @@ bool AndroidDeployQtStep::init() emit addOutput(tr("Cannot find the androiddeployqt tool."), OutputFormat::Stderr); return false; } - qCDebug(deployStepLog) << "Using androiddeployqt"; m_command = m_command.pathAppended(HostOsInfo::withExecutableSuffix("androiddeployqt")); m_workingDirectory = bc->buildDirectory().pathAppended(Constants::ANDROID_BUILDDIRECTORY); @@ -251,11 +255,6 @@ bool AndroidDeployQtStep::init() "--no-build", "--input", jsonFile}); - if (androidBuildApkStep && androidBuildApkStep->useMinistro()) { - qCDebug(deployStepLog) << "Using ministro"; - m_androiddeployqtArgs.addArgs({"--deployment", "ministro"}); - } - m_androiddeployqtArgs.addArg("--gradle"); if (androidBuildApkStep && androidBuildApkStep->signPackage()) { @@ -451,8 +450,12 @@ bool AndroidDeployQtStep::runImpl() if (!m_filesToPull.isEmpty()) emit addOutput(tr("Pulling files necessary for debugging."), OutputFormat::NormalMessage); + // Note that values are not necessarily unique, e.g. app_process is looked up in several directories for (auto itr = m_filesToPull.constBegin(); itr != m_filesToPull.constEnd(); ++itr) { QFile::remove(itr.value()); + } + + for (auto itr = m_filesToPull.constBegin(); itr != m_filesToPull.constEnd(); ++itr) { runCommand({m_adbPath, AndroidDeviceInfo::adbSelector(m_serialNumber) << "pull" << itr.key() << itr.value()}); @@ -469,7 +472,7 @@ bool AndroidDeployQtStep::runImpl() void AndroidDeployQtStep::gatherFilesToPull() { m_filesToPull.clear(); - ProjectExplorer::BuildConfiguration *bc = buildConfiguration(); + BuildConfiguration *bc = target()->activeBuildConfiguration(); QString buildDir = bc ? bc->buildDirectory().toString() : QString(); if (bc && !buildDir.endsWith("/")) { buildDir += "/"; @@ -493,9 +496,8 @@ void AndroidDeployQtStep::gatherFilesToPull() m_filesToPull["/system/bin/" + linkerName] = buildDir + linkerName; m_filesToPull["/system/" + libDirName + "/libc.so"] = buildDir + "libc.so"; - qCDebug(deployStepLog) << "Files to pull from device:"; for (auto itr = m_filesToPull.constBegin(); itr != m_filesToPull.constEnd(); ++itr) - qCDebug(deployStepLog) << itr.key() << "to" << itr.value(); + qCDebug(deployStepLog) << "Pulling file from device:" << itr.key() << "to:" << itr.value(); } void AndroidDeployQtStep::doRun() |