aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/api/runenvironment.cpp
diff options
context:
space:
mode:
authorJake Petroules <jake.petroules@qt.io>2017-11-29 19:39:51 -0800
committerJake Petroules <jake.petroules@qt.io>2017-11-30 15:33:40 +0000
commited6d7def8f226593533a494ea5a4ef618fa20aec (patch)
tree55c19bb9ec04a43540d9b2b0ad430d182f7b0650 /src/lib/corelib/api/runenvironment.cpp
parent6fd43ee022e600731baa6f03388ce086891e608f (diff)
Remove dependency on QtXml in RunEnvironment
The strings returned by aapt dump badging are not technically XML, and the more strict QXmlStreamReader can't parse them anyways. Change-Id: I05b53989f18c89567af1912ee210873dcbe461c9 Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'src/lib/corelib/api/runenvironment.cpp')
-rw-r--r--src/lib/corelib/api/runenvironment.cpp25
1 files changed, 14 insertions, 11 deletions
diff --git a/src/lib/corelib/api/runenvironment.cpp b/src/lib/corelib/api/runenvironment.cpp
index 43aa78395..36d953572 100644
--- a/src/lib/corelib/api/runenvironment.cpp
+++ b/src/lib/corelib/api/runenvironment.cpp
@@ -62,8 +62,7 @@
#include <QtCore/qtemporaryfile.h>
#include <QtCore/qvariant.h>
-#include <QtXml/qdom.h>
-
+#include <regex>
#include <stdlib.h>
namespace qbs {
@@ -232,6 +231,15 @@ static QString findExecutable(const QStringList &fileNames)
return QString();
}
+static std::string readAaptBadgingAttribute(const std::string &line)
+{
+ std::regex re("^[A-Za-z\\-]+:\\s+name='(.+?)'.*$");
+ std::smatch match;
+ if (std::regex_match(line, match, re))
+ return match[1];
+ return { };
+}
+
static QString findMainIntent(const QString &aapt, const QString &apkFilePath)
{
QString packageId;
@@ -243,15 +251,10 @@ static QString findMainIntent(const QString &aapt, const QString &apkFilePath)
<< apkFilePath);
if (aaptProcess.waitForFinished(-1)) {
for (auto line : aaptProcess.readAllStandardOutput().split('\n')) {
- if (line.startsWith(QByteArrayLiteral("package:"))) {
- QDomDocument doc;
- doc.setContent(QByteArrayLiteral("<") + line + QByteArrayLiteral("/>"));
- packageId = doc.firstChild().toElement().attribute(StringConstants::nameProperty());
- } else if (line.startsWith(QByteArrayLiteral("launchable-activity:"))) {
- QDomDocument doc;
- doc.setContent(QByteArrayLiteral("<") + line + QByteArrayLiteral("/>"));
- activity = doc.firstChild().toElement().attribute(StringConstants::nameProperty());
- }
+ if (line.startsWith(QByteArrayLiteral("package:")))
+ packageId = QString::fromStdString(readAaptBadgingAttribute(line.toStdString()));
+ else if (line.startsWith(QByteArrayLiteral("launchable-activity:")))
+ activity = QString::fromStdString(readAaptBadgingAttribute(line.toStdString()));
}
}