summaryrefslogtreecommitdiffstats
path: root/src/tools/androiddeployqt/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/androiddeployqt/main.cpp')
-rw-r--r--src/tools/androiddeployqt/main.cpp63
1 files changed, 45 insertions, 18 deletions
diff --git a/src/tools/androiddeployqt/main.cpp b/src/tools/androiddeployqt/main.cpp
index 6a3d03c3c3..a94b0be84a 100644
--- a/src/tools/androiddeployqt/main.cpp
+++ b/src/tools/androiddeployqt/main.cpp
@@ -344,7 +344,7 @@ QString fileArchitecture(const Options &options, const QString &path)
return {};
}
- readElf = QLatin1String("%1 -needed-libs %2").arg(shellQuote(readElf), shellQuote(path));
+ readElf = QLatin1String("%1 --needed-libs %2").arg(shellQuote(readElf), shellQuote(path));
FILE *readElfCommand = openProcess(readElf);
if (!readElfCommand) {
@@ -1654,7 +1654,7 @@ QStringList getQtLibsFromElf(const Options &options, const QString &fileName)
return QStringList();
}
- readElf = QLatin1String("%1 -needed-libs %2").arg(shellQuote(readElf), shellQuote(fileName));
+ readElf = QLatin1String("%1 --needed-libs %2").arg(shellQuote(readElf), shellQuote(fileName));
FILE *readElfCommand = openProcess(readElf);
if (!readElfCommand) {
@@ -1819,7 +1819,7 @@ bool scanImports(Options *options, QSet<QString> *usedDependencies)
qPrintable(object.value(QLatin1String("name")).toString()));
} else {
if (options->verbose)
- fprintf(stdout, " -- Adding '%s' as QML dependency\n", path.toLocal8Bit().constData());
+ fprintf(stdout, " -- Adding '%s' as QML dependency\n", qPrintable(path));
QFileInfo info(path);
@@ -1859,30 +1859,57 @@ bool scanImports(Options *options, QSet<QString> *usedDependencies)
return false;
}
+ importPathOfThisImport = QDir(importPathOfThisImport).absolutePath() + QLatin1Char('/');
+ QList<QtDependency> qmlImportsDependencies;
+ auto collectQmlDependency = [&usedDependencies, &qmlImportsDependencies,
+ &importPathOfThisImport](const QString &filePath) {
+ if (!usedDependencies->contains(filePath)) {
+ usedDependencies->insert(filePath);
+ qmlImportsDependencies += QtDependency(
+ QLatin1String("qml/") + filePath.mid(importPathOfThisImport.size()),
+ filePath);
+ }
+ };
+
+
QDir dir(importPathOfThisImport);
importPathOfThisImport = dir.absolutePath() + QLatin1Char('/');
const QList<QtDependency> fileNames = findFilesRecursively(*options, info, importPathOfThisImport);
for (QtDependency fileName : fileNames) {
- if (usedDependencies->contains(fileName.absolutePath))
- continue;
-
- usedDependencies->insert(fileName.absolutePath);
-
- if (options->verbose)
- fprintf(stdout, " -- Appending dependency found by qmlimportscanner: %s\n", qPrintable(fileName.absolutePath));
-
- // Put all imports in default import path in assets
- fileName.relativePath.prepend(QLatin1String("qml/"));
- options->qtDependencies[options->currentArchitecture].append(fileName);
-
- if (fileName.absolutePath.endsWith(QLatin1String(".so")) && checkArchitecture(*options, fileName.absolutePath)) {
+ if (!usedDependencies->contains(fileName.absolutePath) && fileName.absolutePath.endsWith(QLatin1String(".so")) && checkArchitecture(*options, fileName.absolutePath)) {
QSet<QString> remainingDependencies;
- if (!readDependenciesFromElf(options, fileName.absolutePath, usedDependencies, &remainingDependencies))
- return false;
+ if (readDependenciesFromElf(options, fileName.absolutePath, usedDependencies, &remainingDependencies))
+ collectQmlDependency(fileName.absolutePath);
+ }
+ }
+ QFileInfo qmldirFileInfo = QFileInfo(path + QLatin1Char('/') + QLatin1String("qmldir"));
+ if (qmldirFileInfo.exists()) {
+ collectQmlDependency(qmldirFileInfo.absoluteFilePath());
+ }
+
+ QVariantList qmlFiles =
+ object.value(QLatin1String("components")).toArray().toVariantList();
+ qmlFiles.append(object.value(QLatin1String("scripts")).toArray().toVariantList());
+ bool qmlFilesMissing = false;
+ for (const auto &qmlFileEntry : qmlFiles) {
+ QFileInfo fileInfo(qmlFileEntry.toString());
+ if (!fileInfo.exists()) {
+ qmlFilesMissing = true;
+ break;
}
+ collectQmlDependency(fileInfo.absoluteFilePath());
}
+
+ if (qmlFilesMissing) {
+ if (options->verbose)
+ fprintf(stdout,
+ " -- Skipping because the required qml files are missing.\n");
+ continue;
+ }
+
+ options->qtDependencies[options->currentArchitecture].append(qmlImportsDependencies);
}
}