Android: Clean up for extraData constants

clean, rename and delete unused constants, we well as unify the
usage between qmake, cmake, and qbs.

Change-Id: I8827ac2f2f7660e337694fef17f744e727bd776a
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
This commit is contained in:
Assam Boudjelthia
2021-09-05 18:49:26 +03:00
parent b7815a4187
commit 91117a1c36
19 changed files with 72 additions and 61 deletions

View File

@@ -939,7 +939,8 @@ QVariant AndroidBuildApkStep::data(Utils::Id id) const
}
if (id == Constants::SdkLocation)
return QVariant::fromValue(AndroidConfigurations::currentConfig().sdkLocation());
if (id == Constants::AndroidABIs)
if (id == Constants::AndroidMkSpecAbis)
return AndroidManager::applicationAbis(target());
return AbstractProcessStep::data(id);

View File

@@ -1127,9 +1127,8 @@ void AndroidConfigurations::removeOldToolChains()
void AndroidConfigurations::removeUnusedDebuggers()
{
const QList<BaseQtVersion *> qtVersions
= QtVersionManager::versions([](const BaseQtVersion *v) {
return v->type() == Constants::ANDROIDQT;
const QList<BaseQtVersion*> qtVersions = QtVersionManager::versions([](const BaseQtVersion *v) {
return v->type() == Constants::ANDROID_QT_TYPE;
});
QVector<FilePath> uniqueNdks;
@@ -1267,8 +1266,8 @@ void AndroidConfigurations::updateAutomaticKitList()
removeUnusedDebuggers();
QHash<Abi, QList<const BaseQtVersion *> > qtVersionsForArch;
const QList<BaseQtVersion *> qtVersions = QtVersionManager::versions([](const BaseQtVersion *v) {
return v->type() == Constants::ANDROIDQT;
const QList<BaseQtVersion*> qtVersions = QtVersionManager::versions([](const BaseQtVersion *v) {
return v->type() == Constants::ANDROID_QT_TYPE;
});
for (const BaseQtVersion *qtVersion : qtVersions) {
const Abis qtAbis = qtVersion->qtAbis();

View File

@@ -42,9 +42,9 @@ namespace Internal {
namespace Constants {
const char ANDROID_SETTINGS_ID[] = "BB.Android Configurations";
const char ANDROID_TOOLCHAIN_TYPEID[] = "Qt4ProjectManager.ToolChain.Android";
const char ANDROIDQT[] = "Qt4ProjectManager.QtVersion.Android";
const char ANDROID_QT_TYPE[] = "Qt4ProjectManager.QtVersion.Android";
const char ANDROID_AMSTARTARGS[] = "Android.AmStartArgs";
const char ANDROID_AM_START_ARGS[] = "Android.AmStartArgs";
// Note: Can be set on RunConfiguration using an aspect and/or
// the AndroidRunnerWorker using recordData()
const char ANDROID_PRESTARTSHELLCMDLIST[] = "Android.PreStartShellCmdList";
@@ -67,32 +67,33 @@ const char ANDROID_ARCHITECTURE[] = "Android.Architecture";
const char ANDROID_PACKAGE_SOURCE_DIR[] = "ANDROID_PACKAGE_SOURCE_DIR";
const char ANDROID_EXTRA_LIBS[] = "ANDROID_EXTRA_LIBS";
const char ANDROID_ABI[] = "ANDROID_ABI";
const char ANDROID_TARGET_ARCH[] = "ANDROID_TARGET_ARCH";
const char ANDROID_ABIS[] = "ANDROID_ABIS";
const char ANDROID_APPLICATION_ARGUMENTS[] = "ANDROID_APPLICATION_ARGUMENTS";
const char QT_ANDROID_APPLICATION_ARGUMENTS[] = "QT_ANDROID_APPLICATION_ARGUMENTS";
const char ANDROID_DEPLOYMENT_SETTINGS_FILE[] = "ANDROID_DEPLOYMENT_SETTINGS_FILE";
const char ANDROID_SO_LIBS_PATHS[] = "ANDROID_SO_LIBS_PATHS";
const char ANDROID_PACKAGENAME[] = "Android.PackageName";
const char ANDROID_PACKAGE_INSTALLATION_STEP_ID[]
= "Qt4ProjectManager.AndroidPackageInstallationStep";
const char ANDROID_PACKAGE_INSTALL_STEP_ID[] = "Qt4ProjectManager.AndroidPackageInstallationStep";
const char ANDROID_BUILD_APK_ID[] = "QmakeProjectManager.AndroidBuildApkStep";
const char ANDROID_DEPLOY_QT_ID[] = "Qt4ProjectManager.AndroidDeployQtStep";
const char AndroidPackageSourceDir[] = "AndroidPackageSourceDir"; // QString
const char AndroidDeploySettingsFile[] = "AndroidDeploySettingsFile"; // QString
const char AndroidExtraLibs[] = "AndroidExtraLibs"; // QStringList
// REMOVE ME
const char AndroidArch[] = "AndroidArch"; // QString
const char AndroidAbi[] = "AndroidAbi"; // QString
const char AndroidAbis[] = "AndroidAbis"; // QStringList
const char AndroidMkSpecAbis[] = "AndroidMkSpecAbis"; // QStringList
const char AndroidSoLibPath[] = "AndroidSoLibPath"; // QStringList
const char AndroidTargets[] = "AndroidTargets"; // QStringList
const char AndroidApplicationArgs[] = "AndroidApplicationArgs"; // QString
// For qbs support
const char AndroidApk[] = "Android.APK"; // QStringList
const char AndroidManifest[] = "Android.Manifest"; // QStringList
const char AndroidNdkPlatform[] = "AndroidNdkPlatform"; //QString
const char NdkLocation[] = "NdkLocation"; // FileName
const char SdkLocation[] = "SdkLocation"; // FileName
const char AndroidABIs[] = "AndroidABIs"; // QString
// Android Device
const Utils::Id AndroidSerialNumber = "AndroidSerialNumber";

View File

@@ -149,14 +149,14 @@ bool AndroidDeployQtStep::init()
info = androidDeployQtStep->m_deviceInfo;
const BuildSystem *bs = buildSystem();
auto selectedAbis = bs->property(Constants::ANDROID_ABIS).toStringList();
auto selectedAbis = bs->property(Constants::AndroidAbis).toStringList();
const QString buildKey = target()->activeBuildKey();
if (selectedAbis.isEmpty())
selectedAbis = bs->extraData(buildKey, Constants::ANDROID_ABIS).toStringList();
selectedAbis = bs->extraData(buildKey, Constants::AndroidAbis).toStringList();
if (selectedAbis.isEmpty())
selectedAbis.append(bs->extraData(buildKey, Constants::AndroidArch).toString());
selectedAbis.append(bs->extraData(buildKey, Constants::AndroidAbi).toString());
if (!info.isValid()) {
const IDevice *dev = DeviceKitAspect::device(kit()).data();

View File

@@ -408,7 +408,7 @@ QString AndroidManager::apkDevicePreferredAbi(const Target *target)
auto libsPath = androidBuildDirectory(target).pathAppended("libs");
if (!libsPath.exists()) {
if (const ProjectNode *node = currentProjectNode(target))
return preferredAbi(node->data(Android::Constants::ANDROID_ABIS).toStringList(),
return preferredAbi(node->data(Android::Constants::AndroidAbis).toStringList(),
target);
}
QStringList apkAbis;

View File

@@ -196,7 +196,7 @@ void AndroidPackageInstallationStep::doRun()
AndroidPackageInstallationFactory::AndroidPackageInstallationFactory()
{
registerStep<AndroidPackageInstallationStep>(Constants::ANDROID_PACKAGE_INSTALLATION_STEP_ID);
registerStep<AndroidPackageInstallationStep>(Constants::ANDROID_PACKAGE_INSTALL_STEP_ID);
setSupportedStepList(ProjectExplorer::Constants::BUILDSTEPS_BUILD);
setSupportedDeviceType(Android::Constants::ANDROID_DEVICE_TYPE);
setRepeatable(false);

View File

@@ -74,7 +74,7 @@ bool AndroidPotentialKit::isEnabled() const
}
return QtSupport::QtVersionManager::version([](const QtSupport::BaseQtVersion *v) {
return v->isValid() && v->type() == QString::fromLatin1(Constants::ANDROIDQT);
return v->isValid() && v->type() == QString::fromLatin1(Constants::ANDROID_QT_TYPE);
});
}

View File

@@ -197,7 +197,7 @@ void AndroidQtVersion::parseMkSpec(ProFileEvaluator *evaluator) const
{
m_androidAbis = evaluator->values("ALL_ANDROID_ABIS");
if (m_androidAbis.isEmpty())
m_androidAbis = QStringList{evaluator->value("ANDROID_TARGET_ARCH")};
m_androidAbis = QStringList{evaluator->value(Constants::ANDROID_TARGET_ARCH)};
const QString androidPlatform = evaluator->value("ANDROID_PLATFORM");
if (!androidPlatform.isEmpty()) {
const QRegularExpression regex("android-(\\d+)");
@@ -232,7 +232,7 @@ QSet<Utils::Id> AndroidQtVersion::targetDeviceTypes() const
AndroidQtVersionFactory::AndroidQtVersionFactory()
{
setQtVersionCreator([] { return new AndroidQtVersion; });
setSupportedType(Constants::ANDROIDQT);
setSupportedType(Constants::ANDROID_QT_TYPE);
setPriority(90);
setRestrictionChecker([](const SetupData &setup) {

View File

@@ -82,13 +82,13 @@ AndroidRunConfiguration::AndroidRunConfiguration(Target *target, Utils::Id id)
if (target->buildConfigurations().first()->buildType() == BuildConfiguration::BuildType::Release) {
const QString buildKey = target->activeBuildKey();
target->buildSystem()->setExtraData(buildKey,
Android::Constants::ANDROID_APPLICATION_ARGUMENTS,
Android::Constants::AndroidApplicationArgs,
extraAppArgsAspect->arguments(target->macroExpander()));
}
});
auto amStartArgsAspect = addAspect<StringAspect>();
amStartArgsAspect->setId(Constants::ANDROID_AMSTARTARGS);
amStartArgsAspect->setId(Constants::ANDROID_AM_START_ARGS);
amStartArgsAspect->setSettingsKey("Android.AmStartArgsKey");
amStartArgsAspect->setLabelText(tr("Activity manager start options:"));
amStartArgsAspect->setDisplayStyle(StringAspect::LineEditDisplay);

View File

@@ -279,7 +279,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa
m_extraAppParams = runControl->runnable().command.arguments();
}
if (auto aspect = runControl->aspect(Constants::ANDROID_AMSTARTARGS)) {
if (auto aspect = runControl->aspect(Constants::ANDROID_AM_START_ARGS)) {
QTC_CHECK(aspect->value().type() == QVariant::String);
const QString startArgs = aspect->value().toString();
m_amStartExtraArgs = ProcessArgs::splitArgs(startArgs, OsTypeOtherUnix);

View File

@@ -936,7 +936,7 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
initialArgs.append("-DCMAKE_TOOLCHAIN_FILE:PATH="
+ ndkLocation.pathAppended("build/cmake/android.toolchain.cmake").path());
auto androidAbis = bs->data(Android::Constants::AndroidABIs).toStringList();
auto androidAbis = bs->data(Android::Constants::AndroidMkSpecAbis).toStringList();
QString preferredAbi;
if (androidAbis.contains(ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A)) {
preferredAbi = ProjectExplorer::Constants::ANDROID_ABI_ARMEABI_V7A;

View File

@@ -128,20 +128,26 @@ QVariant CMakeTargetNode::data(Utils::Id role) const
return {};
};
if (role == Android::Constants::AndroidAbi)
return value(Android::Constants::ANDROID_ABI);
if (role == Android::Constants::AndroidAbis)
return value(Android::Constants::ANDROID_ABIS);
// TODO: Concerns the variables below. Qt 6 uses target properties which cannot be read
// by the current mechanism, and the variables start with "Qt_" prefix.
if (role == Android::Constants::AndroidPackageSourceDir)
return value(Android::Constants::ANDROID_PACKAGE_SOURCE_DIR);
if (role == Android::Constants::AndroidDeploySettingsFile)
return value(Android::Constants::ANDROID_DEPLOYMENT_SETTINGS_FILE);
if (role == Android::Constants::AndroidExtraLibs)
return value(Android::Constants::ANDROID_EXTRA_LIBS);
if (role == Android::Constants::ANDROID_APPLICATION_ARGUMENTS)
return value(Android::Constants::QT_ANDROID_APPLICATION_ARGUMENTS);
if (role == Android::Constants::AndroidDeploySettingsFile)
return value(Android::Constants::ANDROID_DEPLOYMENT_SETTINGS_FILE);
if (role == Android::Constants::AndroidArch)
return value(Android::Constants::ANDROID_ABI);
if (role == Android::Constants::AndroidApplicationArgs)
return value(Android::Constants::ANDROID_APPLICATION_ARGUMENTS);
if (role == Android::Constants::ANDROID_ABIS)
return value(Android::Constants::ANDROID_ABIS);
@@ -152,6 +158,9 @@ QVariant CMakeTargetNode::data(Utils::Id role) const
if (role == Android::Constants::AndroidTargets)
return values("TARGETS_BUILD_PATH");
if (role == Android::Constants::AndroidApk)
return {};
if (role == Ios::Constants::IosTarget) {
// For some reason the artifact is e.g. "Debug/untitled.app/untitled" which is wrong.
// It actually is e.g. "Debug-iphonesimulator/untitled.app/untitled".

View File

@@ -218,7 +218,7 @@ QVariant QbsProductNode::data(Id role) const
return m_productData.value("module-properties").toObject()
.value("Qt.core.enableKeywords").toBool();
if (role == Android::Constants::ANDROID_ABIS) {
if (role == Android::Constants::AndroidAbis) {
// Try using qbs.architectures
QStringList qbsAbis;
QMap<QString, QString> archToAbi {

View File

@@ -33,21 +33,22 @@ const TextEditor::Keywords &QmakeProjectManager::Internal::qmakeKeywords()
{
static TextEditor::Keywords keywords(
QStringList{ // variables
"ANDROID_ABIS",
Android::Constants::ANDROID_ABI,
Android::Constants::ANDROID_ABIS,
"ANDROID_API_VERSION",
QLatin1String(Android::Constants::ANDROID_APPLICATION_ARGUMENTS),
Android::Constants::ANDROID_APPLICATION_ARGUMENTS,
"ANDROID_BUNDLED_JAR_DEPENDENCIES",
"ANDROID_DEPLOYMENT_DEPENDENCIES",
QLatin1String(Android::Constants::ANDROID_DEPLOYMENT_SETTINGS_FILE),
QLatin1String(Android::Constants::ANDROID_EXTRA_LIBS),
Android::Constants::ANDROID_DEPLOYMENT_SETTINGS_FILE,
Android::Constants::ANDROID_EXTRA_LIBS,
"ANDROID_EXTRA_PLUGINS",
"ANDROID_FEATURES",
"ANDROID_LIB_DEPENDENCIES",
"ANDROID_MIN_SDK_VERSION",
QLatin1String(Android::Constants::ANDROID_PACKAGE_SOURCE_DIR),
Android::Constants::ANDROID_PACKAGE_SOURCE_DIR,
"ANDROID_PERMISSIONS",
"ANDROID_TARGET_SDK_VERSION",
"ANDROID_TARGET_ARCH",
Android::Constants::ANDROID_TARGET_ARCH,
"ANDROID_VERSION_CODE",
"ANDROID_VERSION_NAME",
"ARGC",

View File

@@ -157,7 +157,7 @@ QmakeBuildConfiguration::QmakeBuildConfiguration(Target *target, Utils::Id id)
if (DeviceTypeKitAspect::deviceTypeId(target->kit())
== Android::Constants::ANDROID_DEVICE_TYPE) {
buildSteps()->appendStep(Android::Constants::ANDROID_PACKAGE_INSTALLATION_STEP_ID);
buildSteps()->appendStep(Android::Constants::ANDROID_PACKAGE_INSTALL_STEP_ID);
buildSteps()->appendStep(Android::Constants::ANDROID_BUILD_APK_ID);
}

View File

@@ -364,16 +364,16 @@ QStringList QmakeProFileNode::targetApplications() const
QVariant QmakeProFileNode::data(Utils::Id role) const
{
if (role == Android::Constants::ANDROID_ABIS)
if (role == Android::Constants::AndroidAbis)
return variableValue(Variable::AndroidAbis);
if (role == Android::Constants::AndroidAbi)
return singleVariableValue(Variable::AndroidAbi);
if (role == Android::Constants::AndroidExtraLibs)
return variableValue(Variable::AndroidExtraLibs);
if (role == Android::Constants::AndroidPackageSourceDir)
return singleVariableValue(Variable::AndroidPackageSourceDir);
if (role == Android::Constants::AndroidDeploySettingsFile)
return singleVariableValue(Variable::AndroidDeploySettingsFile);
if (role == Android::Constants::AndroidExtraLibs)
return variableValue(Variable::AndroidExtraLibs);
if (role == Android::Constants::AndroidArch)
return singleVariableValue(Variable::AndroidArch);
if (role == Android::Constants::AndroidSoLibPath) {
TargetInformation info = targetInformation();
QStringList res = {info.buildDir.toString()};
@@ -431,8 +431,9 @@ bool QmakeProFileNode::setData(Utils::Id role, const QVariant &value) const
if (Target *target = m_buildSystem->target()) {
QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(target->kit());
if (version && !version->supportsMultipleQtAbis()) {
const QString arch = pro->singleVariableValue(Variable::AndroidArch);
scope = "contains(ANDROID_TARGET_ARCH," + arch + ')';
const QString arch = pro->singleVariableValue(Variable::AndroidAbi);
scope = QString("contains(%1,%2)").arg(Android::Constants::ANDROID_TARGET_ARCH)
.arg(arch);
flags |= QmakeProjectManager::Internal::ProWriter::MultiLine;
}
}
@@ -443,7 +444,7 @@ bool QmakeProFileNode::setData(Utils::Id role, const QVariant &value) const
if (role == Android::Constants::AndroidPackageSourceDir)
return pro->setProVariable(QLatin1String(Android::Constants::ANDROID_PACKAGE_SOURCE_DIR),
{value.toString()}, scope, flags);
if (role == Android::Constants::ANDROID_APPLICATION_ARGUMENTS)
if (role == Android::Constants::AndroidApplicationArgs)
return pro->setProVariable(QLatin1String(Android::Constants::ANDROID_APPLICATION_ARGUMENTS),
{value.toString()}, scope, flags);

View File

@@ -1562,11 +1562,11 @@ QmakeEvalResult *QmakeProFile::evaluate(const QmakeEvalInput &input)
= exactReader->values(QLatin1String("TARGET_VERSION_EXT"));
result->newVarValues[Variable::StaticLibExtension] = exactReader->values(QLatin1String("QMAKE_EXTENSION_STATICLIB"));
result->newVarValues[Variable::ShLibExtension] = exactReader->values(QLatin1String("QMAKE_EXTENSION_SHLIB"));
result->newVarValues[Variable::AndroidArch] = exactReader->values(QLatin1String("ANDROID_TARGET_ARCH"));
result->newVarValues[Variable::AndroidAbi] = exactReader->values(QLatin1String(Android::Constants::ANDROID_TARGET_ARCH));
result->newVarValues[Variable::AndroidDeploySettingsFile] = exactReader->values(QLatin1String(Android::Constants::ANDROID_DEPLOYMENT_SETTINGS_FILE));
result->newVarValues[Variable::AndroidPackageSourceDir] = exactReader->values(QLatin1String(Android::Constants::ANDROID_PACKAGE_SOURCE_DIR));
result->newVarValues[Variable::AndroidAbis] = exactReader->values(QLatin1String("ANDROID_ABIS"));
result->newVarValues[Variable::AndroidApplicationArguments] = exactReader->values(QLatin1String(Android::Constants::ANDROID_APPLICATION_ARGUMENTS));
result->newVarValues[Variable::AndroidAbis] = exactReader->values(QLatin1String(Android::Constants::ANDROID_ABIS));
result->newVarValues[Variable::AndroidApplicationArgs] = exactReader->values(QLatin1String(Android::Constants::ANDROID_APPLICATION_ARGUMENTS));
result->newVarValues[Variable::AndroidExtraLibs] = exactReader->values(QLatin1String(Android::Constants::ANDROID_EXTRA_LIBS));
result->newVarValues[Variable::AppmanPackageDir] = exactReader->values(QLatin1String("AM_PACKAGE_DIR"));
result->newVarValues[Variable::AppmanManifest] = exactReader->values(QLatin1String("AM_MANIFEST"));

View File

@@ -96,12 +96,12 @@ enum class Variable {
TargetVersionExt,
StaticLibExtension,
ShLibExtension,
AndroidArch,
AndroidDeploySettingsFile,
AndroidAbi,
AndroidAbis,
AndroidDeploySettingsFile,
AndroidPackageSourceDir,
AndroidExtraLibs,
AndroidApplicationArguments,
AndroidApplicationArgs,
AppmanPackageDir,
AppmanManifest,
IsoIcons,

View File

@@ -632,7 +632,7 @@ void QMakeStep::abisChanged()
if (BaseQtVersion *qtVersion = QtKitAspect::qtVersion(target()->kit())) {
if (qtVersion->hasAbi(Abi::LinuxOS, Abi::AndroidLinuxFlavor)) {
const QString prefix = "ANDROID_ABIS=";
const QString prefix = QString("%1=").arg(Android::Constants::ANDROID_ABIS);
QStringList args = m_extraArgs;
for (auto it = args.begin(); it != args.end(); ++it) {
if (it->startsWith(prefix)) {
@@ -643,8 +643,7 @@ void QMakeStep::abisChanged()
if (!m_selectedAbis.isEmpty())
args << prefix + '"' + m_selectedAbis.join(' ') + '"';
setExtraArguments(args);
buildSystem()->setProperty(Android::Constants::ANDROID_ABIS, m_selectedAbis);
buildSystem()->setProperty(Android::Constants::AndroidAbis, m_selectedAbis);
} else if (qtVersion->hasAbi(Abi::DarwinOS) && !isIos(target()->kit())) {
const QString prefix = "QMAKE_APPLE_DEVICE_ARCHS=";
QStringList args = m_extraArgs;