AndroidDeployQtStep: Fix deployment for qt 5.3

Task-number: QTCREATORBUG-13244
Change-Id: Iad4620a07994bd8944b48a117fac6a695a866205
Reviewed-by: Ulf Hermann <ulf.hermann@digia.com>
Reviewed-by: BogDan Vatra <bogdan@kde.org>
This commit is contained in:
Daniel Teske
2014-10-24 17:53:05 +02:00
parent d739c9ff73
commit 26e0617a08
4 changed files with 22 additions and 8 deletions

View File

@@ -200,11 +200,7 @@ bool AndroidDeployQtStep::init()
m_uninstallPreviousPackageRun = m_uninstallPreviousPackage || m_uninstallPreviousPackageTemp; m_uninstallPreviousPackageRun = m_uninstallPreviousPackage || m_uninstallPreviousPackageTemp;
m_uninstallPreviousPackageTemp = false; m_uninstallPreviousPackageTemp = false;
if (m_uninstallPreviousPackageRun) { if (m_uninstallPreviousPackageRun) {
m_packageName = AndroidManager::packageName(target()); m_manifestName = AndroidManager::manifestPath(target());
if (m_packageName.isEmpty()){
emit addOutput(tr("Cannot find the package name."), ErrorOutput);
return false;
}
} }
ProjectExplorer::ProcessParameters *pp = processParameters(); ProjectExplorer::ProcessParameters *pp = processParameters();
m_useAndroiddeployqt = version->qtVersion() >= QtSupport::QtVersionNumber(5, 4, 0); m_useAndroiddeployqt = version->qtVersion() >= QtSupport::QtVersionNumber(5, 4, 0);
@@ -299,10 +295,18 @@ void AndroidDeployQtStep::run(QFutureInterface<bool> &fi)
pp->setArguments(m_androiddeployqtArgs); pp->setArguments(m_androiddeployqtArgs);
} else { } else {
if (m_uninstallPreviousPackageRun) { 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(), runCommand(AndroidConfigurations::currentConfig().adbToolPath().toString(),
AndroidDeviceInfo::adbSelector(m_serialNumber) AndroidDeviceInfo::adbSelector(m_serialNumber)
<< QLatin1String("uninstall") << m_packageName); << QLatin1String("uninstall") << packageName);
} }
QString args; QString args;

View File

@@ -103,7 +103,7 @@ private:
void stdError(const QString &line); void stdError(const QString &line);
virtual bool processSucceeded(int exitCode, QProcess::ExitStatus status); virtual bool processSucceeded(int exitCode, QProcess::ExitStatus status);
QString m_packageName; Utils::FileName m_manifestName;
QString m_serialNumber; QString m_serialNumber;
QString m_buildDirectory; QString m_buildDirectory;
QString m_avdName; QString m_avdName;

View File

@@ -123,6 +123,15 @@ QString AndroidManager::packageName(ProjectExplorer::Target *target)
return manifestElem.attribute(QLatin1String("package")); 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) QString AndroidManager::intentName(ProjectExplorer::Target *target)
{ {
return packageName(target) + QLatin1Char('/') + activityName(target); return packageName(target) + QLatin1Char('/') + activityName(target);

View File

@@ -57,6 +57,7 @@ public:
static bool supportsAndroid(const ProjectExplorer::Target *target); static bool supportsAndroid(const ProjectExplorer::Target *target);
static QString packageName(ProjectExplorer::Target *target); static QString packageName(ProjectExplorer::Target *target);
static QString packageName(const Utils::FileName &manifestFile);
static QString intentName(ProjectExplorer::Target *target); static QString intentName(ProjectExplorer::Target *target);
static QString activityName(ProjectExplorer::Target *target); static QString activityName(ProjectExplorer::Target *target);