QtSupport: Add supportsMultipleQtAbis getter

Introduce bool QtSupport::supportsMultipleQtAbis().

Let AndroidQtVersion respond according to the QVersionNumber.

This allows to replace the version arithmetics in several
places with straight forward (and better findable) function calls.

Task-number: QTCREATORBUG-24471
Change-Id: Ib6e39fd6485a54e08ad66f84d4e2582989043419
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Alessandro Portale
2020-08-20 13:58:21 +02:00
parent 13b72eb621
commit a650997448
9 changed files with 19 additions and 6 deletions

View File

@@ -390,7 +390,7 @@ void AndroidBuildApkStep::doRun()
QJsonObject deploySettings = Android::AndroidManager::deploymentSettings(target());
QString applicationBinary;
if (version->qtVersion() < QtSupport::QtVersionNumber(5, 14, 0)) {
if (!version->supportsMultipleQtAbis()) {
QTC_ASSERT(androidAbis.size() == 1, return false);
applicationBinary = buildSystem()->buildTarget(buildKey).targetFilePath.toString();
FilePath androidLibsDir = buildDirectory() / "android-build/libs" / androidAbis.first();

View File

@@ -235,7 +235,7 @@ QWidget *AndroidBuildApkWidget::createAdvancedGroup()
auto vbox = new QVBoxLayout(group);
QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(step()->target()->kit());
if (version && version->qtVersion() >= QtSupport::QtVersionNumber{5,14}) {
if (version && version->supportsMultipleQtAbis()) {
auto buildAAB = new QCheckBox(tr("Build .aab (Android App Bundle)"), group);
buildAAB->setChecked(m_step->buildAAB());
connect(buildAAB, &QAbstractButton::toggled, m_step, &AndroidBuildApkStep::setBuildAAB);

View File

@@ -287,7 +287,7 @@ QJsonObject AndroidManager::deploymentSettings(const Target *target)
settings["qt"] = qt->prefix().toString();
settings["ndk"] = AndroidConfigurations::currentConfig().ndkLocation(qt).toString();
settings["sdk"] = AndroidConfigurations::currentConfig().sdkLocation().toString();
if (qt->qtVersion() < QtSupport::QtVersionNumber(5, 14, 0)) {
if (!qt->supportsMultipleQtAbis()) {
const QStringList abis = applicationAbis(target);
QTC_ASSERT(abis.size() == 1, return {});
settings["stdcpp-path"] = (AndroidConfigurations::currentConfig().toolchainPath(qt)

View File

@@ -84,6 +84,11 @@ QString AndroidQtVersion::invalidReason() const
return tmp;
}
bool AndroidQtVersion::supportsMultipleQtAbis() const
{
return qtVersion() >= QtSupport::QtVersionNumber{5, 14};
}
Abis AndroidQtVersion::detectQtAbis() const
{
auto androidAbi2Abi = [](const QString &androidAbi) {
@@ -165,7 +170,7 @@ int AndroidQtVersion::minimumNDK() const
void AndroidQtVersion::parseMkSpec(ProFileEvaluator *evaluator) const
{
if (qtVersion() >= QtSupport::QtVersionNumber{5, 14})
if (supportsMultipleQtAbis())
m_androidAbis = evaluator->values("ALL_ANDROID_ABIS");
else
m_androidAbis = QStringList{evaluator->value("ANDROID_TARGET_ARCH")};

View File

@@ -43,6 +43,7 @@ public:
bool isValid() const override;
QString invalidReason() const override;
bool supportsMultipleQtAbis() const override;
ProjectExplorer::Abis detectQtAbis() const override;
void addToEnvironment(const ProjectExplorer::Kit *k, Utils::Environment &env) const override;