diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 336a1befd29..88778a989a8 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -249,6 +249,13 @@ int AndroidManager::minimumSDK(const ProjectExplorer::Kit *kit) return minSDKVersion; } +int AndroidManager::minimumNDK(ProjectExplorer::Target *target) +{ + auto qt = static_cast( + QtSupport::QtKitInformation::qtVersion(target->kit())); + return qt->mininmumNDK(); +} + QString AndroidManager::buildTargetSDK(ProjectExplorer::Target *target) { auto androidBuildApkStep diff --git a/src/plugins/android/androidmanager.h b/src/plugins/android/androidmanager.h index 444710ac918..00b1fd12154 100644 --- a/src/plugins/android/androidmanager.h +++ b/src/plugins/android/androidmanager.h @@ -71,6 +71,7 @@ public: static int minimumSDK(ProjectExplorer::Target *target); static int minimumSDK(const ProjectExplorer::Kit *kit); + static int minimumNDK(ProjectExplorer::Target *target); static QString targetArch(ProjectExplorer::Target *target); diff --git a/src/plugins/android/androidqtversion.cpp b/src/plugins/android/androidqtversion.cpp index eaf47f6481f..a1a6d047bab 100644 --- a/src/plugins/android/androidqtversion.cpp +++ b/src/plugins/android/androidqtversion.cpp @@ -123,9 +123,25 @@ QString AndroidQtVersion::targetArch() const return m_targetArch; } +int AndroidQtVersion::mininmumNDK() const +{ + ensureMkSpecParsed(); + return m_minNdk; +} + void AndroidQtVersion::parseMkSpec(ProFileEvaluator *evaluator) const { m_targetArch = evaluator->value(QLatin1String("ANDROID_TARGET_ARCH")); + const QString androidPlatform = evaluator->value(QLatin1String("ANDROID_PLATFORM")); + if (!androidPlatform.isEmpty()) { + const QRegExp regex("android-(\\d+)"); + if (regex.exactMatch(androidPlatform)) { + bool ok = false; + int tmp = regex.cap(1).toInt(&ok); + if (ok) + m_minNdk = tmp; + } + } BaseQtVersion::parseMkSpec(evaluator); } diff --git a/src/plugins/android/androidqtversion.h b/src/plugins/android/androidqtversion.h index 62bbd930c60..d009c68ceb3 100644 --- a/src/plugins/android/androidqtversion.h +++ b/src/plugins/android/androidqtversion.h @@ -55,10 +55,12 @@ public: QString description() const override; QString targetArch() const; + int mininmumNDK() const; protected: void parseMkSpec(ProFileEvaluator *) const override; private: mutable QString m_targetArch; + mutable int m_minNdk = -1; }; } // namespace Internal diff --git a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp index 308caa4719b..f32330916d0 100644 --- a/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp +++ b/src/plugins/qmakeandroidsupport/androidqmakebuildconfigurationfactory.cpp @@ -77,7 +77,8 @@ void AndroidQmakeBuildConfiguration::initialize(const BuildInfo *info) void AndroidQmakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const { - QString androidNdkPlatform = AndroidConfigurations::currentConfig().bestNdkPlatformMatch(AndroidManager::minimumSDK(target())); + QString androidNdkPlatform = AndroidConfigurations::currentConfig().bestNdkPlatformMatch( + qMax(AndroidManager::minimumNDK(target()), AndroidManager::minimumSDK(target()))); env.set(QLatin1String("ANDROID_NDK_PLATFORM"), androidNdkPlatform); }