diff --git a/src/androiddeployqt/main.cpp b/src/androiddeployqt/main.cpp
index 918467983f191cd74687dbadb8b5d127129653c9..b4ae258af46314b66d8a9007c084afd5e5fecdd0 100644
--- a/src/androiddeployqt/main.cpp
+++ b/src/androiddeployqt/main.cpp
@@ -322,11 +322,8 @@ Options parseOptions()
         if (argument.compare(QLatin1String("--output"), Qt::CaseInsensitive) == 0) {
             if (i + 1 == arguments.size())
                 options.helpRequested = true;
-            else {
+            else
                 options.outputDirectory = arguments.at(++i).trimmed();
-                if (!options.outputDirectory.endsWith(QLatin1Char('/')))
-                    options.outputDirectory += QLatin1Char('/');
-            }
         } else if (argument.compare(QLatin1String("--input"), Qt::CaseInsensitive) == 0) {
             if (i + 1 == arguments.size())
                 options.helpRequested = true;
@@ -460,6 +457,15 @@ Options parseOptions()
 
     options.timing = qEnvironmentVariableIsSet("ANDROIDDEPLOYQT_TIMING_OUTPUT");
 
+    if (!QDir::current().mkpath(options.outputDirectory)) {
+        fprintf(stderr, "Invalid output directory: %s\n", qPrintable(options.outputDirectory));
+        options.outputDirectory.clear();
+    } else {
+        options.outputDirectory = QFileInfo(options.outputDirectory).canonicalFilePath();
+        if (!options.outputDirectory.endsWith(QLatin1Char('/')))
+            options.outputDirectory += QLatin1Char('/');
+    }
+
     return options;
 }