From: Alessandro Portale Date: Thu, 23 Apr 2015 10:59:55 +0000 (+0200) Subject: androiddeployqt: Use correct package name when uninstalling X-Git-Tag: v5.5.90+alpha1~21^2~4 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=30329ce24004a54e0bd1bbeff2b139ab13bb6946;p=platform%2Fupstream%2Fqttools.git 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 --- diff --git a/src/androiddeployqt/main.cpp b/src/androiddeployqt/main.cpp index 9b26c09..4e0414e 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("")] = features; - QString androidManifestPath = options.outputDirectory + QLatin1String("/AndroidManifest.xml"); + QString androidManifestPath = androidManifestPathFromOptions(options); if (!updateFile(androidManifestPath, replacements)) return false;