summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Portale <alessandro.portale@theqtcompany.com>2015-04-23 12:59:55 +0200
committerNiels Weber <niels.weber@theqtcompany.com>2015-05-04 09:35:55 +0000
commit30329ce24004a54e0bd1bbeff2b139ab13bb6946 (patch)
tree307e97896d11eb88f18ff6558b38f0a6ee204c8a
parentc401dd9059bf6ed204debba8a0d4930f76c38eb5 (diff)
downloadqttools-30329ce24004a54e0bd1bbeff2b139ab13bb6946.tar.gz
androiddeployqt: Use correct package name when uninstalling
When calling androiddeployqt with "--install --no-build", it will try to uninstall a package with a wrong package name. This patch attempts to read a valid package name from the AndroidManifest.xml before uninstalling. Task-number: QTBUG-45433 Change-Id: If2bc788753a24dd752492464c985de70c67b8f72 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
-rw-r--r--src/androiddeployqt/main.cpp26
1 files changed, 24 insertions, 2 deletions
diff --git a/src/androiddeployqt/main.cpp b/src/androiddeployqt/main.cpp
index 9b26c0955..4e0414ee0 100644
--- a/src/androiddeployqt/main.cpp
+++ b/src/androiddeployqt/main.cpp
@@ -668,6 +668,26 @@ QString detectLatestAndroidPlatform(const QString &sdkPath)
return latestPlatform.baseName();
}
+QString androidManifestPathFromOptions(const Options &options)
+{
+ return options.androidSourceDirectory + QLatin1String("/AndroidManifest.xml");
+}
+
+QString packageNameFromAndroidManifest(const QString &androidManifestPath)
+{
+ QFile androidManifestXml(androidManifestPath);
+ if (androidManifestXml.open(QIODevice::ReadOnly)) {
+ QXmlStreamReader reader(&androidManifestXml);
+ while (!reader.atEnd()) {
+ reader.readNext();
+ if (reader.isStartElement() && reader.name() == QLatin1String("manifest"))
+ return cleanPackageName(
+ reader.attributes().value(QLatin1String("package")).toString());
+ }
+ }
+ return QString();
+}
+
bool readInputFile(Options *options)
{
QFile file(options->inputFileName);
@@ -821,7 +841,9 @@ bool readInputFile(Options *options)
options->ndkHost = ndkHost.toString();
}
- options->packageName = cleanPackageName(QString::fromLatin1("org.qtproject.example.%1").arg(QFileInfo(options->applicationBinary).baseName().mid(sizeof("lib") - 1)));
+ options->packageName = packageNameFromAndroidManifest(androidManifestPathFromOptions(*options));
+ if (options->packageName.isEmpty())
+ options->packageName = cleanPackageName(QString::fromLatin1("org.qtproject.example.%1").arg(QFileInfo(options->applicationBinary).baseName().mid(sizeof("lib") - 1)));
{
QJsonValue extraLibs = jsonObject.value("android-extra-libs");
@@ -1281,7 +1303,7 @@ bool updateAndroidManifest(Options &options)
replacements[QLatin1String("<!-- %%INSERT_FEATURES -->")] = features;
- QString androidManifestPath = options.outputDirectory + QLatin1String("/AndroidManifest.xml");
+ QString androidManifestPath = androidManifestPathFromOptions(options);
if (!updateFile(androidManifestPath, replacements))
return false;