diff --git a/src/androiddeployqt/main.cpp b/src/androiddeployqt/main.cpp
index 3696038f8d5338fc8e39f865288e560dc968ba66..30dc89a11e7a345ab0349862f43d1d82ea73f10a 100644
--- a/src/androiddeployqt/main.cpp
+++ b/src/androiddeployqt/main.cpp
@@ -1603,6 +1603,7 @@ bool readDependenciesFromElf(Options *options,
             fprintf(stdout, "      %s\n", qPrintable(dep));
     }
     // Recursively add dependencies from ELF and supplementary XML information
+    QList<QString> dependenciesToCheck;
     foreach (QString dependency, dependencies) {
         if (usedDependencies->contains(dependency))
             continue;
@@ -1619,12 +1620,17 @@ bool readDependenciesFromElf(Options *options,
         options->qtDependencies.append(QtDependency(dependency, absoluteDependencyPath));
         if (options->verbose)
             fprintf(stdout, "Appending dependency: %s\n", qPrintable(dependency));
+        dependenciesToCheck.append(dependency);
+    }
+
+    foreach (QString dependency, dependenciesToCheck) {
         QString qtBaseName = dependency.mid(sizeof("lib/lib") - 1);
         qtBaseName = qtBaseName.left(qtBaseName.size() - (sizeof(".so") - 1));
         if (!readAndroidDependencyXml(options, qtBaseName, usedDependencies, remainingDependencies)) {
             return false;
         }
     }
+
     return true;
 }