Android: Correct setting ANDROID_NDK_PLATFORM

Instead of using always just the minimum SDK version
we need to differentiate between SDK and NDK version.

Fixes: QTCREATORBUG-21536
Change-Id: I2f99c9d40ab05ccd2a4b8efeb2cd0300ecf0cf3a
Reviewed-by: BogDan Vatra <bogdan@kdab.com>
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
This commit is contained in:
Christian Stenger
2018-11-23 10:08:35 +01:00
parent 5e61e0aa73
commit 1d683dcc07
5 changed files with 28 additions and 1 deletions

View File

@@ -249,6 +249,13 @@ int AndroidManager::minimumSDK(const ProjectExplorer::Kit *kit)
return minSDKVersion;
}
int AndroidManager::minimumNDK(ProjectExplorer::Target *target)
{
auto qt = static_cast<Android::Internal::AndroidQtVersion *>(
QtSupport::QtKitInformation::qtVersion(target->kit()));
return qt->mininmumNDK();
}
QString AndroidManager::buildTargetSDK(ProjectExplorer::Target *target)
{
auto androidBuildApkStep

View File

@@ -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);

View File

@@ -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);
}

View File

@@ -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

View File

@@ -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);
}