diff options
author | Alessandro Portale <alessandro.portale@theqtcompany.com> | 2015-04-23 12:59:55 +0200 |
---|---|---|
committer | Niels Weber <niels.weber@theqtcompany.com> | 2015-05-04 09:35:55 +0000 |
commit | 30329ce24004a54e0bd1bbeff2b139ab13bb6946 (patch) | |
tree | 307e97896d11eb88f18ff6558b38f0a6ee204c8a /src/androiddeployqt | |
parent | c401dd9059bf6ed204debba8a0d4930f76c38eb5 (diff) | |
download | qttools-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>
Diffstat (limited to 'src/androiddeployqt')
-rw-r--r-- | src/androiddeployqt/main.cpp | 26 |
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; |