forked from qt-creator/qt-creator
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:
@@ -249,6 +249,13 @@ int AndroidManager::minimumSDK(const ProjectExplorer::Kit *kit)
|
|||||||
return minSDKVersion;
|
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)
|
QString AndroidManager::buildTargetSDK(ProjectExplorer::Target *target)
|
||||||
{
|
{
|
||||||
auto androidBuildApkStep
|
auto androidBuildApkStep
|
||||||
|
@@ -71,6 +71,7 @@ public:
|
|||||||
|
|
||||||
static int minimumSDK(ProjectExplorer::Target *target);
|
static int minimumSDK(ProjectExplorer::Target *target);
|
||||||
static int minimumSDK(const ProjectExplorer::Kit *kit);
|
static int minimumSDK(const ProjectExplorer::Kit *kit);
|
||||||
|
static int minimumNDK(ProjectExplorer::Target *target);
|
||||||
|
|
||||||
static QString targetArch(ProjectExplorer::Target *target);
|
static QString targetArch(ProjectExplorer::Target *target);
|
||||||
|
|
||||||
|
@@ -123,9 +123,25 @@ QString AndroidQtVersion::targetArch() const
|
|||||||
return m_targetArch;
|
return m_targetArch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int AndroidQtVersion::mininmumNDK() const
|
||||||
|
{
|
||||||
|
ensureMkSpecParsed();
|
||||||
|
return m_minNdk;
|
||||||
|
}
|
||||||
|
|
||||||
void AndroidQtVersion::parseMkSpec(ProFileEvaluator *evaluator) const
|
void AndroidQtVersion::parseMkSpec(ProFileEvaluator *evaluator) const
|
||||||
{
|
{
|
||||||
m_targetArch = evaluator->value(QLatin1String("ANDROID_TARGET_ARCH"));
|
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);
|
BaseQtVersion::parseMkSpec(evaluator);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -55,10 +55,12 @@ public:
|
|||||||
|
|
||||||
QString description() const override;
|
QString description() const override;
|
||||||
QString targetArch() const;
|
QString targetArch() const;
|
||||||
|
int mininmumNDK() const;
|
||||||
protected:
|
protected:
|
||||||
void parseMkSpec(ProFileEvaluator *) const override;
|
void parseMkSpec(ProFileEvaluator *) const override;
|
||||||
private:
|
private:
|
||||||
mutable QString m_targetArch;
|
mutable QString m_targetArch;
|
||||||
|
mutable int m_minNdk = -1;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
|
@@ -77,7 +77,8 @@ void AndroidQmakeBuildConfiguration::initialize(const BuildInfo *info)
|
|||||||
|
|
||||||
void AndroidQmakeBuildConfiguration::addToEnvironment(Utils::Environment &env) const
|
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);
|
env.set(QLatin1String("ANDROID_NDK_PLATFORM"), androidNdkPlatform);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user