diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/android/androiddeployqtstep.cpp | 18 | ||||
-rw-r--r-- | src/plugins/android/androiddeployqtstep.h | 2 | ||||
-rw-r--r-- | src/plugins/android/androidmanager.cpp | 9 | ||||
-rw-r--r-- | src/plugins/android/androidmanager.h | 1 |
4 files changed, 22 insertions, 8 deletions
diff --git a/src/plugins/android/androiddeployqtstep.cpp b/src/plugins/android/androiddeployqtstep.cpp index 73a093c20f..a6b38e20b6 100644 --- a/src/plugins/android/androiddeployqtstep.cpp +++ b/src/plugins/android/androiddeployqtstep.cpp @@ -200,11 +200,7 @@ bool AndroidDeployQtStep::init() m_uninstallPreviousPackageRun = m_uninstallPreviousPackage || m_uninstallPreviousPackageTemp; m_uninstallPreviousPackageTemp = false; if (m_uninstallPreviousPackageRun) { - m_packageName = AndroidManager::packageName(target()); - if (m_packageName.isEmpty()){ - emit addOutput(tr("Cannot find the package name."), ErrorOutput); - return false; - } + m_manifestName = AndroidManager::manifestPath(target()); } ProjectExplorer::ProcessParameters *pp = processParameters(); m_useAndroiddeployqt = version->qtVersion() >= QtSupport::QtVersionNumber(5, 4, 0); @@ -299,10 +295,18 @@ void AndroidDeployQtStep::run(QFutureInterface<bool> &fi) pp->setArguments(m_androiddeployqtArgs); } else { if (m_uninstallPreviousPackageRun) { - emit addOutput(tr("Uninstall previous package %1.").arg(m_packageName), MessageOutput); + const QString packageName = AndroidManager::packageName(m_manifestName); + if (packageName.isEmpty()){ + emit addOutput(tr("Cannot find the package name."), ErrorOutput); + fi.reportResult(false); + emit finished(); + return; + } + + emit addOutput(tr("Uninstall previous package %1.").arg(packageName), MessageOutput); runCommand(AndroidConfigurations::currentConfig().adbToolPath().toString(), AndroidDeviceInfo::adbSelector(m_serialNumber) - << QLatin1String("uninstall") << m_packageName); + << QLatin1String("uninstall") << packageName); } QString args; diff --git a/src/plugins/android/androiddeployqtstep.h b/src/plugins/android/androiddeployqtstep.h index 8a1f2ebc20..b9e9461251 100644 --- a/src/plugins/android/androiddeployqtstep.h +++ b/src/plugins/android/androiddeployqtstep.h @@ -103,7 +103,7 @@ private: void stdError(const QString &line); virtual bool processSucceeded(int exitCode, QProcess::ExitStatus status); - QString m_packageName; + Utils::FileName m_manifestName; QString m_serialNumber; QString m_buildDirectory; QString m_avdName; diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 5c2881652b..84f1b612f5 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -123,6 +123,15 @@ QString AndroidManager::packageName(ProjectExplorer::Target *target) return manifestElem.attribute(QLatin1String("package")); } +QString AndroidManager::packageName(const Utils::FileName &manifestFile) +{ + QDomDocument doc; + if (!openXmlFile(doc, manifestFile)) + return QString(); + QDomElement manifestElem = doc.documentElement(); + return manifestElem.attribute(QLatin1String("package")); +} + QString AndroidManager::intentName(ProjectExplorer::Target *target) { return packageName(target) + QLatin1Char('/') + activityName(target); diff --git a/src/plugins/android/androidmanager.h b/src/plugins/android/androidmanager.h index ed395611bc..a64e36010e 100644 --- a/src/plugins/android/androidmanager.h +++ b/src/plugins/android/androidmanager.h @@ -57,6 +57,7 @@ public: static bool supportsAndroid(const ProjectExplorer::Target *target); static QString packageName(ProjectExplorer::Target *target); + static QString packageName(const Utils::FileName &manifestFile); static QString intentName(ProjectExplorer::Target *target); static QString activityName(ProjectExplorer::Target *target); |