Android: Avoid one use of ProcessArgs::splitArgs()

Replaced by the more harmless joinArgs in a compatibility settings
code path for now.

Change-Id: Id6d94faea26002f4a2641b5824d97e09a783b720
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2022-04-14 16:52:51 +02:00
parent 2533a4cfd6
commit 4297b9f289
4 changed files with 17 additions and 15 deletions

View File

@@ -292,14 +292,14 @@ bool AndroidAvdManager::startAvdAsync(const QString &avdName) const
});
// start the emulator
QStringList arguments;
CommandLine cmd(m_config.emulatorToolPath());
if (AndroidConfigurations::force32bitEmulator())
arguments << "-force-32bit";
cmd.addArg("-force-32bit");
arguments << m_config.emulatorArgs() << "-avd" << avdName;
qCDebug(avdManagerLog) << "Running command (startAvdAsync):"
<< CommandLine(m_config.emulatorToolPath(), arguments).toUserOutput();
avdProcess->setCommand({m_config.emulatorToolPath(), arguments});
cmd.addArgs(m_config.emulatorArgs(), CommandLine::Raw);
cmd.addArgs({"-avd", avdName});
qCDebug(avdManagerLog) << "Running command (startAvdAsync):" << cmd.toUserOutput();
avdProcess->setCommand(cmd);
avdProcess->start();
return avdProcess->waitForStarted(-1);
}

View File

@@ -229,8 +229,10 @@ QLatin1String AndroidConfig::displayName(const Abi &abi)
void AndroidConfig::load(const QSettings &settings)
{
// user settings
m_emulatorArgs = settings.value(EmulatorArgsKey,
QStringList({"-netdelay", "none", "-netspeed", "full"})).toStringList();
QVariant emulatorArgs = settings.value(EmulatorArgsKey, QString("-netdelay none -netspeed full"));
if (emulatorArgs.type() == QVariant::StringList) // Changed in 8.0 from QStringList to QString.
emulatorArgs = ProcessArgs::joinArgs(emulatorArgs.toStringList());
m_emulatorArgs = emulatorArgs.toString();
m_sdkLocation = FilePath::fromUserInput(settings.value(SDKLocationKey).toString()).cleanPath();
m_customNdkList = settings.value(CustomNdkLocationsKey).toStringList();
m_defaultNdk =
@@ -1106,12 +1108,12 @@ QString AndroidConfig::toolchainHostFromNdk(const FilePath &ndkPath)
return toolchainHost;
}
QStringList AndroidConfig::emulatorArgs() const
QString AndroidConfig::emulatorArgs() const
{
return m_emulatorArgs;
}
void AndroidConfig::setEmulatorArgs(const QStringList &args)
void AndroidConfig::setEmulatorArgs(const QString &args)
{
m_emulatorArgs = args;
}

View File

@@ -123,8 +123,8 @@ public:
QString toolchainHost(const QtSupport::QtVersion *qtVersion) const;
static QString toolchainHostFromNdk(const Utils::FilePath &ndkPath);
QStringList emulatorArgs() const;
void setEmulatorArgs(const QStringList &args);
QString emulatorArgs() const;
void setEmulatorArgs(const QString &args);
bool automaticKitCreation() const;
void setAutomaticKitCreation(bool b);
@@ -196,7 +196,7 @@ private:
Utils::FilePath m_openJDKLocation;
Utils::FilePath m_keystoreLocation;
Utils::FilePath m_openSslLocation;
QStringList m_emulatorArgs;
QString m_emulatorArgs;
bool m_automaticKitCreation = true;
QUrl m_sdkToolsUrl;
QByteArray m_sdkToolsSha256;

View File

@@ -603,7 +603,7 @@ void AndroidDeviceManager::setEmulatorArguments(QWidget *parent)
dialog.setLabelText(AndroidDevice::tr("Emulator command-line startup options "
"(<a href=\"%1\">Help Web Page</a>):")
.arg(helpUrl));
dialog.setTextValue(m_androidConfig.emulatorArgs().join(' '));
dialog.setTextValue(m_androidConfig.emulatorArgs());
if (auto label = dialog.findChild<QLabel*>()) {
label->setOpenExternalLinks(true);
@@ -613,7 +613,7 @@ void AndroidDeviceManager::setEmulatorArguments(QWidget *parent)
if (dialog.exec() != QDialog::Accepted)
return;
m_androidConfig.setEmulatorArgs(ProcessArgs::splitArgs(dialog.textValue()));
m_androidConfig.setEmulatorArgs(dialog.textValue());
}
QString AndroidDeviceManager::getRunningAvdsSerialNumber(const QString &name) const