forked from qt-creator/qt-creator
Android: Transform AndroidConfig into namespace
Change-Id: I1926758f3dcaffb4de11a85c0873eec7bd2d223c Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
@@ -45,7 +45,7 @@ static bool is32BitUserSpace()
|
||||
|
||||
bool startAvdAsync(const QString &avdName)
|
||||
{
|
||||
const FilePath emulator = androidConfig().emulatorToolPath();
|
||||
const FilePath emulator = AndroidConfig::emulatorToolPath();
|
||||
if (!emulator.exists()) {
|
||||
QMetaObject::invokeMethod(Core::ICore::mainWindow(), [emulator] {
|
||||
QMessageBox::critical(Core::ICore::dialogParent(),
|
||||
@@ -75,11 +75,11 @@ bool startAvdAsync(const QString &avdName)
|
||||
});
|
||||
|
||||
// start the emulator
|
||||
CommandLine cmd(androidConfig().emulatorToolPath());
|
||||
CommandLine cmd(emulator);
|
||||
if (is32BitUserSpace())
|
||||
cmd.addArg("-force-32bit");
|
||||
|
||||
cmd.addArgs(androidConfig().emulatorArgs(), CommandLine::Raw);
|
||||
cmd.addArgs(AndroidConfig::emulatorArgs(), CommandLine::Raw);
|
||||
cmd.addArgs({"-avd", avdName});
|
||||
qCDebug(avdManagerLog).noquote() << "Running command (startAvdAsync):" << cmd.toUserOutput();
|
||||
avdProcess->setCommand(cmd);
|
||||
@@ -89,7 +89,7 @@ bool startAvdAsync(const QString &avdName)
|
||||
|
||||
QString findAvd(const QString &avdName)
|
||||
{
|
||||
const QList<AndroidDeviceInfo> devices = androidConfig().connectedDevices();
|
||||
const QList<AndroidDeviceInfo> devices = AndroidConfig::connectedDevices();
|
||||
for (const AndroidDeviceInfo &device : devices) {
|
||||
if (device.type != ProjectExplorer::IDevice::Emulator)
|
||||
continue;
|
||||
@@ -108,7 +108,7 @@ static bool waitForBooted(const QString &serialNumber, const std::optional<QFutu
|
||||
if (isAvdBooted(serialNumber))
|
||||
return true;
|
||||
QThread::sleep(2);
|
||||
if (!androidConfig().isConnected(serialNumber)) // device was disconnected
|
||||
if (!AndroidConfig::isConnected(serialNumber)) // device was disconnected
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
@@ -132,11 +132,11 @@ QString waitForAvd(const QString &avdName, const std::optional<QFuture<void>> &f
|
||||
|
||||
bool isAvdBooted(const QString &device)
|
||||
{
|
||||
const CommandLine command{androidConfig().adbToolPath(), AndroidDeviceInfo::adbSelector(device)
|
||||
+ QStringList{"shell", "getprop", "init.svc.bootanim"}};
|
||||
qCDebug(avdManagerLog).noquote() << "Running command (isAvdBooted):" << command.toUserOutput();
|
||||
const CommandLine cmd{AndroidConfig::adbToolPath(), {AndroidDeviceInfo::adbSelector(device),
|
||||
"shell", "getprop", "init.svc.bootanim"}};
|
||||
qCDebug(avdManagerLog).noquote() << "Running command (isAvdBooted):" << cmd.toUserOutput();
|
||||
Process adbProc;
|
||||
adbProc.setCommand(command);
|
||||
adbProc.setCommand(cmd);
|
||||
adbProc.runBlocking();
|
||||
if (adbProc.result() != ProcessResult::FinishedWithSuccess)
|
||||
return false;
|
||||
|
||||
@@ -415,7 +415,7 @@ bool AndroidBuildApkWidget::isOpenSslLibsIncluded()
|
||||
|
||||
QString AndroidBuildApkWidget::openSslIncludeFileContent(const FilePath &projectPath)
|
||||
{
|
||||
QString openSslPath = androidConfig().openSslLocation().toString();
|
||||
QString openSslPath = AndroidConfig::openSslLocation().toString();
|
||||
if (projectPath.endsWith(".pro"))
|
||||
return "android: include(" + openSslPath + "/openssl.pri)";
|
||||
if (projectPath.endsWith("CMakeLists.txt"))
|
||||
@@ -541,7 +541,7 @@ bool AndroidBuildApkStep::init()
|
||||
QStringList arguments = {"--input", m_inputFile.path(),
|
||||
"--output", outputDir.path(),
|
||||
"--android-platform", m_buildTargetSdk,
|
||||
"--jdk", androidConfig().openJDKLocation().path()};
|
||||
"--jdk", AndroidConfig::openJDKLocation().path()};
|
||||
|
||||
if (verboseOutput())
|
||||
arguments << "--verbose";
|
||||
@@ -929,17 +929,16 @@ QVariant AndroidBuildApkStep::data(Utils::Id id) const
|
||||
{
|
||||
if (id == Constants::AndroidNdkPlatform) {
|
||||
if (auto qtVersion = QtKitAspect::qtVersion(kit()))
|
||||
return androidConfig()
|
||||
.bestNdkPlatformMatch(AndroidManager::minimumSDK(target()), qtVersion);
|
||||
return AndroidConfig::bestNdkPlatformMatch(AndroidManager::minimumSDK(target()), qtVersion);
|
||||
return {};
|
||||
}
|
||||
if (id == Constants::NdkLocation) {
|
||||
if (auto qtVersion = QtKitAspect::qtVersion(kit()))
|
||||
return QVariant::fromValue(androidConfig().ndkLocation(qtVersion));
|
||||
return QVariant::fromValue(AndroidConfig::ndkLocation(qtVersion));
|
||||
return {};
|
||||
}
|
||||
if (id == Constants::SdkLocation)
|
||||
return QVariant::fromValue(androidConfig().sdkLocation());
|
||||
return QVariant::fromValue(AndroidConfig::sdkLocation());
|
||||
|
||||
if (id == Constants::AndroidMkSpecAbis)
|
||||
return AndroidManager::applicationAbis(target());
|
||||
@@ -1000,7 +999,7 @@ QAbstractItemModel *AndroidBuildApkStep::keystoreCertificates()
|
||||
"-storepass", m_keystorePasswd, "-J-Duser.language=en"};
|
||||
|
||||
Process keytoolProc;
|
||||
keytoolProc.setCommand({androidConfig().keytoolPath(), params});
|
||||
keytoolProc.setCommand({AndroidConfig::keytoolPath(), params});
|
||||
using namespace std::chrono_literals;
|
||||
keytoolProc.runBlocking(30s);
|
||||
if (keytoolProc.result() > ProcessResult::FinishedWithError)
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -36,132 +36,87 @@ public:
|
||||
int sdcardSize = 0;
|
||||
};
|
||||
|
||||
struct SdkForQtVersions
|
||||
{
|
||||
QList<QVersionNumber> versions;
|
||||
QStringList essentialPackages;
|
||||
namespace AndroidConfig {
|
||||
|
||||
public:
|
||||
bool containsVersion(const QVersionNumber &qtVersion) const;
|
||||
};
|
||||
QStringList apiLevelNamesFor(const SdkPlatformList &platforms);
|
||||
QString apiLevelNameFor(const SdkPlatform *platform);
|
||||
|
||||
class AndroidConfig
|
||||
{
|
||||
public:
|
||||
void load(const Utils::QtcSettings &settings);
|
||||
void save(Utils::QtcSettings &settings) const;
|
||||
|
||||
static QStringList apiLevelNamesFor(const SdkPlatformList &platforms);
|
||||
static QString apiLevelNameFor(const SdkPlatform *platform);
|
||||
|
||||
Utils::FilePath sdkLocation() const;
|
||||
Utils::FilePath sdkLocation();
|
||||
void setSdkLocation(const Utils::FilePath &sdkLocation);
|
||||
QVersionNumber sdkToolsVersion() const;
|
||||
Utils::FilePath sdkToolsVersionPath() const;
|
||||
QVersionNumber buildToolsVersion() const;
|
||||
QStringList sdkManagerToolArgs() const;
|
||||
QVersionNumber sdkToolsVersion();
|
||||
QVersionNumber buildToolsVersion();
|
||||
QStringList sdkManagerToolArgs();
|
||||
void setSdkManagerToolArgs(const QStringList &args);
|
||||
|
||||
Utils::FilePath ndkLocation(const QtSupport::QtVersion *qtVersion) const;
|
||||
QVersionNumber ndkVersion(const QtSupport::QtVersion *qtVersion) const;
|
||||
static QVersionNumber ndkVersion(const Utils::FilePath &ndkPath);
|
||||
Utils::FilePath ndkLocation(const QtSupport::QtVersion *qtVersion);
|
||||
QVersionNumber ndkVersion(const QtSupport::QtVersion *qtVersion);
|
||||
QVersionNumber ndkVersion(const Utils::FilePath &ndkPath);
|
||||
|
||||
QUrl sdkToolsUrl() const { return m_sdkToolsUrl; }
|
||||
QByteArray getSdkToolsSha256() const { return m_sdkToolsSha256; }
|
||||
QUrl sdkToolsUrl();
|
||||
QByteArray getSdkToolsSha256();
|
||||
|
||||
QStringList defaultEssentials() const;
|
||||
QStringList essentialsFromQtVersion(const QtSupport::QtVersion &version) const;
|
||||
QStringList allEssentials() const;
|
||||
QStringList allEssentials();
|
||||
bool allEssentialsInstalled(Internal::AndroidSdkManager *sdkManager);
|
||||
bool sdkToolsOk() const;
|
||||
bool sdkToolsOk();
|
||||
|
||||
Utils::FilePath openJDKLocation() const;
|
||||
Utils::FilePath openJDKLocation();
|
||||
void setOpenJDKLocation(const Utils::FilePath &openJDKLocation);
|
||||
|
||||
QString toolchainHost(const QtSupport::QtVersion *qtVersion) const;
|
||||
static QString toolchainHostFromNdk(const Utils::FilePath &ndkPath);
|
||||
QString toolchainHost(const QtSupport::QtVersion *qtVersion);
|
||||
QString toolchainHostFromNdk(const Utils::FilePath &ndkPath);
|
||||
|
||||
QString emulatorArgs() const;
|
||||
QString emulatorArgs();
|
||||
void setEmulatorArgs(const QString &args);
|
||||
|
||||
bool automaticKitCreation() const;
|
||||
bool automaticKitCreation();
|
||||
void setAutomaticKitCreation(bool b);
|
||||
|
||||
static Utils::FilePath defaultSdkPath();
|
||||
Utils::FilePath adbToolPath() const;
|
||||
Utils::FilePath emulatorToolPath() const;
|
||||
Utils::FilePath sdkManagerToolPath() const;
|
||||
Utils::FilePath avdManagerToolPath() const;
|
||||
Utils::FilePath defaultSdkPath();
|
||||
Utils::FilePath adbToolPath();
|
||||
Utils::FilePath emulatorToolPath();
|
||||
Utils::FilePath sdkManagerToolPath();
|
||||
Utils::FilePath avdManagerToolPath();
|
||||
|
||||
void setTemporarySdkToolsPath(const Utils::FilePath &path);
|
||||
|
||||
Utils::FilePath toolchainPath(const QtSupport::QtVersion *qtVersion) const;
|
||||
static Utils::FilePath toolchainPathFromNdk(const Utils::FilePath &ndkLocation,
|
||||
Utils::OsType hostOs = Utils::HostOsInfo::hostOs());
|
||||
static Utils::FilePath clangPathFromNdk(const Utils::FilePath &ndkLocation);
|
||||
Utils::FilePath toolchainPath(const QtSupport::QtVersion *qtVersion);
|
||||
Utils::FilePath toolchainPathFromNdk(
|
||||
const Utils::FilePath &ndkLocation, Utils::OsType hostOs = Utils::HostOsInfo::hostOs());
|
||||
Utils::FilePath clangPathFromNdk(const Utils::FilePath &ndkLocation);
|
||||
|
||||
static Utils::FilePath makePathFromNdk(const Utils::FilePath &ndkLocation);
|
||||
Utils::FilePath makePathFromNdk(const Utils::FilePath &ndkLocation);
|
||||
|
||||
Utils::FilePath keytoolPath() const;
|
||||
Utils::FilePath keytoolPath();
|
||||
|
||||
QList<AndroidDeviceInfo> connectedDevices(QString *error = nullptr) const;
|
||||
QList<AndroidDeviceInfo> connectedDevices(QString *error = nullptr);
|
||||
|
||||
QString bestNdkPlatformMatch(int target, const QtSupport::QtVersion *qtVersion) const;
|
||||
QString bestNdkPlatformMatch(int target, const QtSupport::QtVersion *qtVersion);
|
||||
|
||||
static QLatin1String displayName(const ProjectExplorer::Abi &abi);
|
||||
QLatin1String displayName(const ProjectExplorer::Abi &abi);
|
||||
|
||||
QString getProductModel(const QString &device) const;
|
||||
bool isConnected(const QString &serialNumber) const;
|
||||
QString getProductModel(const QString &device);
|
||||
bool isConnected(const QString &serialNumber);
|
||||
|
||||
bool sdkFullyConfigured() const { return m_sdkFullyConfigured; }
|
||||
void setSdkFullyConfigured(bool allEssentialsInstalled) { m_sdkFullyConfigured = allEssentialsInstalled; }
|
||||
bool sdkFullyConfigured();
|
||||
void setSdkFullyConfigured(bool allEssentialsInstalled);
|
||||
|
||||
static bool isValidNdk(const QString &ndkLocation);
|
||||
QStringList getCustomNdkList() const;
|
||||
bool isValidNdk(const QString &ndkLocation);
|
||||
QStringList getCustomNdkList();
|
||||
void addCustomNdk(const QString &customNdk);
|
||||
void removeCustomNdk(const QString &customNdk);
|
||||
void setDefaultNdk(const Utils::FilePath &defaultNdk);
|
||||
Utils::FilePath defaultNdk() const;
|
||||
Utils::FilePath defaultNdk();
|
||||
|
||||
Utils::FilePath openSslLocation() const;
|
||||
Utils::FilePath openSslLocation();
|
||||
void setOpenSslLocation(const Utils::FilePath &openSslLocation);
|
||||
|
||||
static Utils::FilePath getJdkPath();
|
||||
static QStringList getAbis(const QString &device);
|
||||
static int getSDKVersion(const QString &device);
|
||||
Utils::FilePath getJdkPath();
|
||||
QStringList getAbis(const QString &device);
|
||||
int getSDKVersion(const QString &device);
|
||||
|
||||
Utils::Environment toolsEnvironment() const;
|
||||
Utils::Environment toolsEnvironment();
|
||||
|
||||
private:
|
||||
Utils::FilePath openJDKBinPath() const;
|
||||
Utils::FilePath ndkSubPathFromQtVersion(const QtSupport::QtVersion &version) const; // relative!
|
||||
|
||||
void parseDependenciesJson();
|
||||
|
||||
QList<int> availableNdkPlatforms(const QtSupport::QtVersion *qtVersion) const;
|
||||
|
||||
Utils::FilePath m_sdkLocation;
|
||||
Utils::FilePath m_temporarySdkToolsPath;
|
||||
QStringList m_sdkManagerToolArgs;
|
||||
Utils::FilePath m_openJDKLocation;
|
||||
Utils::FilePath m_keystoreLocation;
|
||||
Utils::FilePath m_openSslLocation;
|
||||
QString m_emulatorArgs;
|
||||
bool m_automaticKitCreation = true;
|
||||
QUrl m_sdkToolsUrl;
|
||||
QByteArray m_sdkToolsSha256;
|
||||
QStringList m_commonEssentialPkgs;
|
||||
SdkForQtVersions m_defaultSdkDepends;
|
||||
QList<SdkForQtVersions> m_specificQtVersions;
|
||||
QStringList m_customNdkList;
|
||||
Utils::FilePath m_defaultNdk;
|
||||
bool m_sdkFullyConfigured = false;
|
||||
|
||||
//caches
|
||||
mutable QHash<QString, QString> m_serialNumberToDeviceName;
|
||||
};
|
||||
|
||||
AndroidConfig &androidConfig();
|
||||
} // namespace AndroidConfig
|
||||
|
||||
class AndroidConfigurations : public QObject
|
||||
{
|
||||
|
||||
@@ -262,7 +262,7 @@ void AndroidCreateKeystoreCertificate::buttonBoxAccepted()
|
||||
if (!m_stateNameLineEdit->text().isEmpty())
|
||||
distinguishedNames += QLatin1String(", S=") + m_stateNameLineEdit->text().replace(',', QLatin1String("\\,"));
|
||||
|
||||
const CommandLine command(androidConfig().keytoolPath(),
|
||||
const CommandLine command(AndroidConfig::keytoolPath(),
|
||||
{"-genkey", "-keyalg", "RSA",
|
||||
"-keystore", m_keystoreFilePath.toString(),
|
||||
"-storepass", keystorePassword(),
|
||||
|
||||
@@ -110,8 +110,7 @@ void AndroidDebugSupport::start()
|
||||
|
||||
QtSupport::QtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(kit);
|
||||
if (!HostOsInfo::isWindowsHost()
|
||||
&& (qtVersion
|
||||
&& androidConfig().ndkVersion(qtVersion) >= QVersionNumber(11, 0, 0))) {
|
||||
&& (qtVersion && AndroidConfig::ndkVersion(qtVersion) >= QVersionNumber(11, 0, 0))) {
|
||||
qCDebug(androidDebugSupportLog) << "UseTargetAsync: " << true;
|
||||
setUseTargetAsync(true);
|
||||
}
|
||||
@@ -165,7 +164,7 @@ void AndroidDebugSupport::start()
|
||||
|
||||
int sdkVersion = qMax(AndroidManager::minimumSDK(kit), minimumNdk);
|
||||
if (qtVersion) {
|
||||
const FilePath ndkLocation = androidConfig().ndkLocation(qtVersion);
|
||||
const FilePath ndkLocation = AndroidConfig::ndkLocation(qtVersion);
|
||||
FilePath sysRoot = ndkLocation
|
||||
/ "platforms"
|
||||
/ QString("android-%1").arg(sdkVersion)
|
||||
|
||||
@@ -297,7 +297,7 @@ bool AndroidDeployQtStep::init()
|
||||
m_apkPath = FilePath::fromString(node->data(Constants::AndroidApk).toString());
|
||||
if (!m_apkPath.isEmpty()) {
|
||||
m_manifestName = FilePath::fromString(node->data(Constants::AndroidManifest).toString());
|
||||
m_command = androidConfig().adbToolPath();
|
||||
m_command = AndroidConfig::adbToolPath();
|
||||
AndroidManager::setManifestPath(target(), m_manifestName);
|
||||
} else {
|
||||
QString jsonFile = AndroidQtVersion::androidDeploymentSettings(target()).toString();
|
||||
@@ -335,13 +335,13 @@ bool AndroidDeployQtStep::init()
|
||||
}
|
||||
} else {
|
||||
m_uninstallPreviousPackageRun = true;
|
||||
m_command = androidConfig().adbToolPath();
|
||||
m_command = AndroidConfig::adbToolPath();
|
||||
m_apkPath = AndroidManager::packagePath(target());
|
||||
m_workingDirectory = bc ? AndroidManager::buildDirectory(target()): FilePath();
|
||||
}
|
||||
m_environment = bc ? bc->environment() : Environment();
|
||||
|
||||
m_adbPath = androidConfig().adbToolPath();
|
||||
m_adbPath = AndroidConfig::adbToolPath();
|
||||
|
||||
// Start the AVD if not running.
|
||||
if (!m_avdName.isEmpty() && AndroidAvdManager::findAvd(m_avdName).isEmpty())
|
||||
|
||||
@@ -53,7 +53,7 @@ static constexpr char wifiDevicePort[] = "5555";
|
||||
|
||||
static QString displayNameFromInfo(const AndroidDeviceInfo &info)
|
||||
{
|
||||
return info.type == IDevice::Hardware ? androidConfig().getProductModel(info.serialNumber)
|
||||
return info.type == IDevice::Hardware ? AndroidConfig::getProductModel(info.serialNumber)
|
||||
: info.avdName;
|
||||
}
|
||||
|
||||
@@ -415,7 +415,7 @@ void AndroidDevice::initAvdSettings()
|
||||
|
||||
void AndroidDeviceManager::updateAvdList()
|
||||
{
|
||||
if (androidConfig().adbToolPath().exists())
|
||||
if (AndroidConfig::adbToolPath().exists())
|
||||
m_avdListRunner.start(m_avdListRecipe);
|
||||
}
|
||||
|
||||
@@ -446,7 +446,7 @@ void AndroidDeviceManager::updateDeviceState(const ProjectExplorer::IDevice::Con
|
||||
|
||||
expected_str<void> AndroidDeviceManager::createAvd(const CreateAvdInfo &info, bool force)
|
||||
{
|
||||
CommandLine cmd(androidConfig().avdManagerToolPath(), {"create", "avd", "-n", info.name});
|
||||
CommandLine cmd(AndroidConfig::avdManagerToolPath(), {"create", "avd", "-n", info.name});
|
||||
cmd.addArgs({"-k", info.sdkStylePath});
|
||||
if (info.sdcardSize > 0)
|
||||
cmd.addArgs({"-c", QString("%1M").arg(info.sdcardSize)});
|
||||
@@ -460,7 +460,7 @@ expected_str<void> AndroidDeviceManager::createAvd(const CreateAvdInfo &info, bo
|
||||
|
||||
Process process;
|
||||
process.setProcessMode(ProcessMode::Writer);
|
||||
process.setEnvironment(androidConfig().toolsEnvironment());
|
||||
process.setEnvironment(AndroidConfig::toolsEnvironment());
|
||||
process.setCommand(cmd);
|
||||
process.setWriteData("yes\n"); // yes to "Do you wish to create a custom hardware profile"
|
||||
|
||||
@@ -521,9 +521,9 @@ void AndroidDeviceManager::eraseAvd(const IDevice::Ptr &device, QWidget *parent)
|
||||
|
||||
qCDebug(androidDeviceLog) << QString("Erasing Android AVD \"%1\" from the system.").arg(name);
|
||||
m_removeAvdProcess.reset(new Process);
|
||||
const CommandLine command(androidConfig().avdManagerToolPath(), {"delete", "avd", "-n", name});
|
||||
const CommandLine command(AndroidConfig::avdManagerToolPath(), {"delete", "avd", "-n", name});
|
||||
qCDebug(androidDeviceLog).noquote() << "Running command (removeAvd):" << command.toUserOutput();
|
||||
m_removeAvdProcess->setEnvironment(androidConfig().toolsEnvironment());
|
||||
m_removeAvdProcess->setEnvironment(AndroidConfig::toolsEnvironment());
|
||||
m_removeAvdProcess->setCommand(command);
|
||||
connect(m_removeAvdProcess.get(), &Process::done, this, [this, device] {
|
||||
const QString name = device->displayName();
|
||||
@@ -618,7 +618,7 @@ void AndroidDeviceManager::setEmulatorArguments(QWidget *parent)
|
||||
dialog.setLabelText(Tr::tr("Emulator command-line startup options "
|
||||
"(<a href=\"%1\">Help Web Page</a>):")
|
||||
.arg(helpUrl));
|
||||
dialog.setTextValue(androidConfig().emulatorArgs());
|
||||
dialog.setTextValue(AndroidConfig::emulatorArgs());
|
||||
|
||||
if (auto label = dialog.findChild<QLabel*>()) {
|
||||
label->setOpenExternalLinks(true);
|
||||
@@ -628,12 +628,12 @@ void AndroidDeviceManager::setEmulatorArguments(QWidget *parent)
|
||||
if (dialog.exec() != QDialog::Accepted)
|
||||
return;
|
||||
|
||||
androidConfig().setEmulatorArgs(dialog.textValue());
|
||||
AndroidConfig::setEmulatorArgs(dialog.textValue());
|
||||
}
|
||||
|
||||
QString AndroidDeviceManager::getRunningAvdsSerialNumber(const QString &name) const
|
||||
{
|
||||
for (const AndroidDeviceInfo &dev : androidConfig().connectedDevices()) {
|
||||
for (const AndroidDeviceInfo &dev : AndroidConfig::connectedDevices()) {
|
||||
if (!dev.serialNumber.startsWith("emulator"))
|
||||
continue;
|
||||
const QString stdOut = emulatorName(dev.serialNumber);
|
||||
@@ -661,7 +661,7 @@ static FilePath avdFilePath()
|
||||
|
||||
void AndroidDeviceManager::setupDevicesWatcher()
|
||||
{
|
||||
if (!androidConfig().adbToolPath().exists()) {
|
||||
if (!AndroidConfig::adbToolPath().exists()) {
|
||||
qCDebug(androidDeviceLog) << "Cannot start ADB device watcher"
|
||||
<< "because adb path does not exist.";
|
||||
return;
|
||||
@@ -693,10 +693,10 @@ void AndroidDeviceManager::setupDevicesWatcher()
|
||||
handleDevicesListChange(output);
|
||||
});
|
||||
|
||||
const CommandLine command{androidConfig().adbToolPath(), {"track-devices"}};
|
||||
const CommandLine command{AndroidConfig::adbToolPath(), {"track-devices"}};
|
||||
m_adbDeviceWatcherProcess->setCommand(command);
|
||||
m_adbDeviceWatcherProcess->setWorkingDirectory(command.executable().parentDir());
|
||||
m_adbDeviceWatcherProcess->setEnvironment(androidConfig().toolsEnvironment());
|
||||
m_adbDeviceWatcherProcess->setEnvironment(AndroidConfig::toolsEnvironment());
|
||||
m_adbDeviceWatcherProcess->start();
|
||||
|
||||
// Setup AVD filesystem watcher to listen for changes when an avd is created/deleted,
|
||||
@@ -838,7 +838,7 @@ void AndroidDeviceManager::handleDevicesListChange(const QString &serialNumber)
|
||||
devMgr->setDeviceState(avdId, state);
|
||||
} else {
|
||||
const Id id = Id(Constants::ANDROID_DEVICE_ID).withSuffix(':' + serial);
|
||||
QString displayName = androidConfig().getProductModel(serial);
|
||||
QString displayName = AndroidConfig::getProductModel(serial);
|
||||
// Check if the device is connected via WiFi. A sample serial of such devices can be
|
||||
// like: "192.168.1.190:5555"
|
||||
static const auto ipRegex = QRegularExpression(ipRegexStr + QStringLiteral(":(\\d{1,5})"));
|
||||
@@ -921,16 +921,16 @@ AndroidDeviceManager::AndroidDeviceManager(QObject *parent)
|
||||
});
|
||||
|
||||
const auto onProcessSetup = [](Process &process) {
|
||||
const CommandLine cmd(androidConfig().avdManagerToolPath(), {"list", "avd"});
|
||||
const CommandLine cmd(AndroidConfig::avdManagerToolPath(), {"list", "avd"});
|
||||
qCDebug(androidDeviceLog).noquote() << "Running AVD Manager command:" << cmd.toUserOutput();
|
||||
process.setEnvironment(androidConfig().toolsEnvironment());
|
||||
process.setEnvironment(AndroidConfig::toolsEnvironment());
|
||||
process.setCommand(cmd);
|
||||
};
|
||||
const auto onProcessDone = [this, storage](const Process &process, DoneWith result) {
|
||||
const QString output = process.allOutput();
|
||||
if (result != DoneWith::Success) {
|
||||
qCDebug(androidDeviceLog)
|
||||
<< "Avd list command failed" << output << androidConfig().sdkToolsVersion();
|
||||
<< "Avd list command failed" << output << AndroidConfig::sdkToolsVersion();
|
||||
return DoneResult::Error;
|
||||
}
|
||||
|
||||
@@ -981,7 +981,7 @@ public:
|
||||
":/android/images/androiddevice.png");
|
||||
setConstructionFunction(&AndroidDevice::create);
|
||||
setCreator([] {
|
||||
if (!androidConfig().sdkToolsOk()) {
|
||||
if (!AndroidConfig::sdkToolsOk()) {
|
||||
AndroidDeviceWidget::infoDialog(Tr::tr("Android support is not yet configured."));
|
||||
return IDevice::Ptr();
|
||||
}
|
||||
|
||||
@@ -202,25 +202,23 @@ QJsonObject deploymentSettings(const Target *target)
|
||||
QJsonObject settings;
|
||||
settings["_description"] = qtcSignature;
|
||||
settings["qt"] = qt->prefix().toString();
|
||||
settings["ndk"] = androidConfig().ndkLocation(qt).toString();
|
||||
settings["sdk"] = androidConfig().sdkLocation().toString();
|
||||
settings["ndk"] = AndroidConfig::ndkLocation(qt).toString();
|
||||
settings["sdk"] = AndroidConfig::sdkLocation().toString();
|
||||
if (!qt->supportsMultipleQtAbis()) {
|
||||
const QStringList abis = applicationAbis(target);
|
||||
QTC_ASSERT(abis.size() == 1, return {});
|
||||
settings["stdcpp-path"] = (androidConfig().toolchainPath(qt)
|
||||
settings["stdcpp-path"] = (AndroidConfig::toolchainPath(qt)
|
||||
/ "sysroot/usr/lib"
|
||||
/ archTriplet(abis.first())
|
||||
/ "libc++_shared.so").toString();
|
||||
} else {
|
||||
settings["stdcpp-path"] = androidConfig()
|
||||
.toolchainPath(qt)
|
||||
.pathAppended("sysroot/usr/lib")
|
||||
.toString();
|
||||
settings["stdcpp-path"]
|
||||
= AndroidConfig::toolchainPath(qt).pathAppended("sysroot/usr/lib").toString();
|
||||
}
|
||||
settings["toolchain-prefix"] = "llvm";
|
||||
settings["tool-prefix"] = "llvm";
|
||||
settings["useLLVM"] = true;
|
||||
settings["ndk-host"] = androidConfig().toolchainHost(qt);
|
||||
settings["ndk-host"] = AndroidConfig::toolchainHost(qt);
|
||||
return settings;
|
||||
}
|
||||
|
||||
@@ -584,7 +582,7 @@ bool checkKeystorePassword(const FilePath &keystorePath, const QString &keystore
|
||||
{
|
||||
if (keystorePasswd.isEmpty())
|
||||
return false;
|
||||
const CommandLine cmd(androidConfig().keytoolPath(),
|
||||
const CommandLine cmd(AndroidConfig::keytoolPath(),
|
||||
{"-list", "-keystore", keystorePath.toUserOutput(),
|
||||
"--storepass", keystorePasswd});
|
||||
Process proc;
|
||||
@@ -605,7 +603,7 @@ bool checkCertificatePassword(const FilePath &keystorePath, const QString &keyst
|
||||
arguments << certificatePasswd;
|
||||
|
||||
Process proc;
|
||||
proc.setCommand({androidConfig().keytoolPath(), arguments});
|
||||
proc.setCommand({AndroidConfig::keytoolPath(), arguments});
|
||||
proc.runBlocking(10s);
|
||||
return proc.result() == ProcessResult::FinishedWithSuccess;
|
||||
}
|
||||
@@ -618,7 +616,7 @@ bool checkCertificateExists(const FilePath &keystorePath, const QString &keystor
|
||||
"--storepass", keystorePasswd, "-alias", alias};
|
||||
|
||||
Process proc;
|
||||
proc.setCommand({androidConfig().keytoolPath(), arguments});
|
||||
proc.setCommand({AndroidConfig::keytoolPath(), arguments});
|
||||
proc.runBlocking(10s);
|
||||
return proc.result() == ProcessResult::FinishedWithSuccess;
|
||||
}
|
||||
@@ -626,7 +624,7 @@ bool checkCertificateExists(const FilePath &keystorePath, const QString &keystor
|
||||
Process *startAdbProcess(const QStringList &args, QString *err)
|
||||
{
|
||||
std::unique_ptr<Process> process(new Process);
|
||||
const FilePath adb = androidConfig().adbToolPath();
|
||||
const FilePath adb = AndroidConfig::adbToolPath();
|
||||
const CommandLine command{adb, args};
|
||||
qCDebug(androidManagerLog).noquote() << "Running command (async):" << command.toUserOutput();
|
||||
process->setCommand(command);
|
||||
@@ -664,7 +662,7 @@ static SdkToolResult runCommand(const CommandLine &command, const QByteArray &wr
|
||||
|
||||
SdkToolResult runAdbCommand(const QStringList &args, const QByteArray &writeData, int timeoutS)
|
||||
{
|
||||
return runCommand({androidConfig().adbToolPath(), args}, writeData, timeoutS);
|
||||
return runCommand({AndroidConfig::adbToolPath(), args}, writeData, timeoutS);
|
||||
}
|
||||
|
||||
} // namespace Android::AndroidManager
|
||||
|
||||
@@ -592,7 +592,7 @@ void AndroidManifestEditorWidget::postSave()
|
||||
const FilePath docPath = m_textEditorWidget->textDocument()->filePath();
|
||||
if (Target *target = androidTarget(docPath)) {
|
||||
if (BuildConfiguration *bc = target->activeBuildConfiguration()) {
|
||||
QString androidNdkPlatform = androidConfig().bestNdkPlatformMatch(
|
||||
QString androidNdkPlatform = AndroidConfig::bestNdkPlatformMatch(
|
||||
AndroidManager::minimumSDK(target),
|
||||
QtSupport::QtKitAspect::qtVersion(
|
||||
androidTarget(m_textEditorWidget->textDocument()->filePath())->kit()));
|
||||
|
||||
@@ -135,7 +135,7 @@ class AndroidPlugin final : public ExtensionSystem::IPlugin
|
||||
return v->targetDeviceTypes().contains(Android::Constants::ANDROID_DEVICE_TYPE);
|
||||
}).isEmpty();
|
||||
|
||||
if (!androidConfig().sdkFullyConfigured() && qtForAndroidInstalled)
|
||||
if (!AndroidConfig::sdkFullyConfigured() && qtForAndroidInstalled)
|
||||
askUserAboutAndroidSetup();
|
||||
|
||||
AndroidConfigurations::registerNewToolchains();
|
||||
|
||||
@@ -128,7 +128,7 @@ FilePath AndroidQmlPreviewWorker::designViewerApkPath(const QString &abi) const
|
||||
|
||||
CommandLine AndroidQmlPreviewWorker::adbCommand(const QStringList &arguments) const
|
||||
{
|
||||
CommandLine cmd{androidConfig().adbToolPath()};
|
||||
CommandLine cmd{AndroidConfig::adbToolPath()};
|
||||
if (!m_serialNumber.isEmpty())
|
||||
cmd.addArgs(AndroidDeviceInfo::adbSelector(m_serialNumber));
|
||||
cmd.addArg("shell");
|
||||
@@ -200,7 +200,7 @@ void AndroidQmlPreviewWorker::startLogcat()
|
||||
QString args = QString("logcat --pid=%1").arg(m_viewerPid);
|
||||
if (!m_logcatStartTimeStamp.isEmpty())
|
||||
args += QString(" -T '%1'").arg(m_logcatStartTimeStamp);
|
||||
CommandLine cmd(androidConfig().adbToolPath());
|
||||
CommandLine cmd(AndroidConfig::adbToolPath());
|
||||
cmd.setArguments(args);
|
||||
m_logcatProcess.setCommand(cmd);
|
||||
m_logcatProcess.setUseCtrlCStub(true);
|
||||
|
||||
@@ -61,9 +61,9 @@ QString AndroidQtVersion::invalidReason() const
|
||||
{
|
||||
QString tmp = QtVersion::invalidReason();
|
||||
if (tmp.isEmpty()) {
|
||||
if (androidConfig().ndkLocation(this).isEmpty())
|
||||
if (AndroidConfig::ndkLocation(this).isEmpty())
|
||||
return Tr::tr("NDK is not configured in Devices > Android.");
|
||||
if (androidConfig().sdkLocation().isEmpty())
|
||||
if (AndroidConfig::sdkLocation().isEmpty())
|
||||
return Tr::tr("SDK is not configured in Devices > Android.");
|
||||
if (qtAbis().isEmpty())
|
||||
return Tr::tr("Failed to detect the ABIs used by the Qt version. Check the settings in "
|
||||
@@ -79,7 +79,7 @@ bool AndroidQtVersion::supportsMultipleQtAbis() const
|
||||
|
||||
Abis AndroidQtVersion::detectQtAbis() const
|
||||
{
|
||||
const bool conf = androidConfig().sdkFullyConfigured();
|
||||
const bool conf = AndroidConfig::sdkFullyConfigured();
|
||||
return conf ? Utils::transform<Abis>(androidAbis(), &AndroidManager::androidAbi2Abi) : Abis();
|
||||
}
|
||||
|
||||
@@ -87,18 +87,17 @@ void AndroidQtVersion::addToEnvironment(const Kit *k, Utils::Environment &env) c
|
||||
{
|
||||
QtVersion::addToEnvironment(k, env);
|
||||
|
||||
const AndroidConfig &config = androidConfig();
|
||||
// this env vars are used by qmake mkspecs to generate makefiles (check QTDIR/mkspecs/android-g++/qmake.conf for more info)
|
||||
env.set(QLatin1String("ANDROID_NDK_HOST"), config.toolchainHost(this));
|
||||
env.set(QLatin1String("ANDROID_NDK_ROOT"), config.ndkLocation(this).toUserOutput());
|
||||
env.set(QLatin1String("ANDROID_NDK_HOST"), AndroidConfig::toolchainHost(this));
|
||||
env.set(QLatin1String("ANDROID_NDK_ROOT"), AndroidConfig::ndkLocation(this).toUserOutput());
|
||||
env.set(QLatin1String("ANDROID_NDK_PLATFORM"),
|
||||
config.bestNdkPlatformMatch(qMax(minimumNDK(), AndroidManager::minimumSDK(k)), this));
|
||||
AndroidConfig::bestNdkPlatformMatch(qMax(minimumNDK(), AndroidManager::minimumSDK(k)), this));
|
||||
}
|
||||
|
||||
void AndroidQtVersion::setupQmakeRunEnvironment(Utils::Environment &env) const
|
||||
{
|
||||
env.set(QLatin1String("ANDROID_NDK_ROOT"),
|
||||
androidConfig().ndkLocation(this).toUserOutput());
|
||||
AndroidConfig::ndkLocation(this).toUserOutput());
|
||||
}
|
||||
|
||||
QString AndroidQtVersion::description() const
|
||||
|
||||
@@ -184,7 +184,7 @@ void AndroidRunner::checkAVD()
|
||||
m_checkAVDTimer.stop();
|
||||
AndroidManager::setDeviceSerialNumber(m_target, serialNumber);
|
||||
emit asyncStart();
|
||||
} else if (!androidConfig().isConnected(serialNumber)) {
|
||||
} else if (!AndroidConfig::isConnected(serialNumber)) {
|
||||
// device was disconnected
|
||||
m_checkAVDTimer.stop();
|
||||
}
|
||||
|
||||
@@ -93,11 +93,9 @@ static FilePath debugServer(bool useLldb, const Target *target)
|
||||
QtSupport::QtVersion *qtVersion = QtSupport::QtKitAspect::qtVersion(target->kit());
|
||||
QString preferredAbi = AndroidManager::apkDevicePreferredAbi(target);
|
||||
|
||||
const AndroidConfig &config = androidConfig();
|
||||
|
||||
if (useLldb) {
|
||||
// Search suitable lldb-server binary.
|
||||
const FilePath prebuilt = config.ndkLocation(qtVersion) / "toolchains/llvm/prebuilt";
|
||||
const FilePath prebuilt = AndroidConfig::ndkLocation(qtVersion) / "toolchains/llvm/prebuilt";
|
||||
const QString abiNeedle = lldbServerArch2(preferredAbi);
|
||||
|
||||
// The new, built-in LLDB.
|
||||
@@ -117,7 +115,7 @@ static FilePath debugServer(bool useLldb, const Target *target)
|
||||
return lldbServer;
|
||||
} else {
|
||||
// Search suitable gdbserver binary.
|
||||
const FilePath path = config.ndkLocation(qtVersion)
|
||||
const FilePath path = AndroidConfig::ndkLocation(qtVersion)
|
||||
.pathAppended(QString("prebuilt/android-%1/gdbserver/gdbserver")
|
||||
.arg(gdbServerArch(preferredAbi)));
|
||||
if (path.exists())
|
||||
@@ -429,7 +427,7 @@ void Android::Internal::AndroidRunnerWorker::asyncStartLogcat()
|
||||
}
|
||||
|
||||
const QStringList logcatArgs = selector() << "logcat" << timeArg;
|
||||
const FilePath adb = androidConfig().adbToolPath();
|
||||
const FilePath adb = AndroidConfig::adbToolPath();
|
||||
qCDebug(androidRunWorkerLog).noquote() << "Running logcat command (async):"
|
||||
<< CommandLine(adb, logcatArgs).toUserOutput();
|
||||
m_adbLogcatProcess->setCommand({adb, logcatArgs});
|
||||
@@ -632,7 +630,7 @@ void AndroidRunnerWorker::asyncStart()
|
||||
const Storage<PidUserPair> pidStorage;
|
||||
const LoopUntil iterator([pidStorage](int) { return pidStorage->first <= 0; });
|
||||
|
||||
const FilePath adbPath = androidConfig().adbToolPath();
|
||||
const FilePath adbPath = AndroidConfig::adbToolPath();
|
||||
const QStringList args = selector();
|
||||
|
||||
const auto onPidSetup = [adbPath, args, packageName = m_packageName,
|
||||
@@ -710,7 +708,7 @@ void AndroidRunnerWorker::handleJdbWaiting()
|
||||
}
|
||||
m_afterFinishAdbCommands.push_back(removeForward.join(' '));
|
||||
|
||||
const FilePath jdbPath = androidConfig().openJDKLocation()
|
||||
const FilePath jdbPath = AndroidConfig::openJDKLocation()
|
||||
.pathAppended("bin/jdb").withExecutableSuffix();
|
||||
|
||||
QStringList jdbArgs("-connect");
|
||||
|
||||
@@ -106,7 +106,7 @@ GroupItem downloadSdkRecipe()
|
||||
Storage<StorageStruct> storage;
|
||||
|
||||
const auto onSetup = [] {
|
||||
if (androidConfig().sdkToolsUrl().isEmpty()) {
|
||||
if (AndroidConfig::sdkToolsUrl().isEmpty()) {
|
||||
logError(Tr::tr("The SDK Tools download URL is empty."));
|
||||
return SetupResult::StopWithError;
|
||||
}
|
||||
@@ -114,7 +114,7 @@ GroupItem downloadSdkRecipe()
|
||||
};
|
||||
|
||||
const auto onQuerySetup = [storage](NetworkQuery &query) {
|
||||
query.setRequest(QNetworkRequest(androidConfig().sdkToolsUrl()));
|
||||
query.setRequest(QNetworkRequest(AndroidConfig::sdkToolsUrl()));
|
||||
query.setNetworkAccessManager(NetworkAccessManager::instance());
|
||||
NetworkQuery *queryPtr = &query;
|
||||
QProgressDialog *progressDialog = storage->progressDialog.get();
|
||||
@@ -166,7 +166,7 @@ GroupItem downloadSdkRecipe()
|
||||
if (!storage->sdkFileName)
|
||||
return SetupResult::StopWithError;
|
||||
async.setConcurrentCallData(validateFileIntegrity, *storage->sdkFileName,
|
||||
androidConfig().getSdkToolsSha256());
|
||||
AndroidConfig::getSdkToolsSha256());
|
||||
storage->progressDialog->setRange(0, 0);
|
||||
storage->progressDialog->setLabelText(Tr::tr("Verifying package integrity..."));
|
||||
return SetupResult::Continue;
|
||||
@@ -197,7 +197,7 @@ GroupItem downloadSdkRecipe()
|
||||
logError(Tr::tr("Unarchiving error."));
|
||||
return;
|
||||
}
|
||||
androidConfig().setTemporarySdkToolsPath(
|
||||
AndroidConfig::setTemporarySdkToolsPath(
|
||||
storage->sdkFileName->parentDir().pathAppended(Constants::cmdlineToolsName));
|
||||
};
|
||||
const auto onCancelSetup = [storage] { return std::make_pair(storage->progressDialog.get(),
|
||||
|
||||
@@ -113,9 +113,9 @@ private:
|
||||
OutputFormatter *m_formatter = nullptr;
|
||||
};
|
||||
|
||||
static QString sdkRootArg(const AndroidConfig &config)
|
||||
static QString sdkRootArg()
|
||||
{
|
||||
return "--sdk_root=" + config.sdkLocation().toString();
|
||||
return "--sdk_root=" + AndroidConfig::sdkLocation().toString();
|
||||
}
|
||||
|
||||
const QRegularExpression &assertionRegExp()
|
||||
@@ -172,9 +172,9 @@ static GroupItem licensesRecipe(const Storage<DialogStorage> &dialogStorage)
|
||||
"respective licenses are not accepted.") + "\n\n",
|
||||
LogMessageFormat);
|
||||
process.setProcessMode(ProcessMode::Writer);
|
||||
process.setEnvironment(androidConfig().toolsEnvironment());
|
||||
process.setCommand(CommandLine(androidConfig().sdkManagerToolPath(),
|
||||
{"--licenses", sdkRootArg(androidConfig())}));
|
||||
process.setEnvironment(AndroidConfig::toolsEnvironment());
|
||||
process.setCommand(CommandLine(AndroidConfig::sdkManagerToolPath(),
|
||||
{"--licenses", sdkRootArg()}));
|
||||
process.setUseCtrlCStub(true);
|
||||
|
||||
Process *processPtr = &process;
|
||||
@@ -227,9 +227,9 @@ static GroupItem licensesRecipe(const Storage<DialogStorage> &dialogStorage)
|
||||
static void setupSdkProcess(const QStringList &args, Process *process,
|
||||
QuestionProgressDialog *dialog, int current, int total)
|
||||
{
|
||||
process->setEnvironment(androidConfig().toolsEnvironment());
|
||||
process->setCommand({androidConfig().sdkManagerToolPath(),
|
||||
args + androidConfig().sdkManagerToolArgs()});
|
||||
process->setEnvironment(AndroidConfig::toolsEnvironment());
|
||||
process->setCommand({AndroidConfig::sdkManagerToolPath(),
|
||||
args + AndroidConfig::sdkManagerToolArgs()});
|
||||
QObject::connect(process, &Process::readyReadStandardOutput, dialog,
|
||||
[process, dialog, current, total] {
|
||||
QTextCodec *codec = QTextCodec::codecForLocale();
|
||||
@@ -269,7 +269,7 @@ static GroupItem installationRecipe(const Storage<DialogStorage> &dialogStorage,
|
||||
const int total = change.count();
|
||||
const LoopList uninstallIterator(change.toUninstall);
|
||||
const auto onUninstallSetup = [dialogStorage, uninstallIterator, total](Process &process) {
|
||||
const QStringList args = {"--uninstall", *uninstallIterator, sdkRootArg(androidConfig())};
|
||||
const QStringList args = {"--uninstall", *uninstallIterator, sdkRootArg()};
|
||||
QuestionProgressDialog *dialog = dialogStorage->m_dialog.get();
|
||||
setupSdkProcess(args, &process, dialog, uninstallIterator.iteration(), total);
|
||||
dialog->appendMessage(Tr::tr("Uninstalling %1...").arg(*uninstallIterator) + '\n',
|
||||
@@ -280,7 +280,7 @@ static GroupItem installationRecipe(const Storage<DialogStorage> &dialogStorage,
|
||||
const LoopList installIterator(change.toInstall);
|
||||
const int offset = change.toUninstall.count();
|
||||
const auto onInstallSetup = [dialogStorage, installIterator, offset, total](Process &process) {
|
||||
const QStringList args = {*installIterator, sdkRootArg(androidConfig())};
|
||||
const QStringList args = {*installIterator, sdkRootArg()};
|
||||
QuestionProgressDialog *dialog = dialogStorage->m_dialog.get();
|
||||
setupSdkProcess(args, &process, dialog, offset + installIterator.iteration(), total);
|
||||
dialog->appendMessage(Tr::tr("Installing %1...").arg(*installIterator) + '\n',
|
||||
@@ -310,7 +310,7 @@ static GroupItem installationRecipe(const Storage<DialogStorage> &dialogStorage,
|
||||
static GroupItem updateRecipe(const Storage<DialogStorage> &dialogStorage)
|
||||
{
|
||||
const auto onUpdateSetup = [dialogStorage](Process &process) {
|
||||
const QStringList args = {"--update", sdkRootArg(androidConfig())};
|
||||
const QStringList args = {"--update", sdkRootArg()};
|
||||
QuestionProgressDialog *dialog = dialogStorage->m_dialog.get();
|
||||
setupSdkProcess(args, &process, dialog, 0, 1);
|
||||
dialog->appendMessage(Tr::tr("Updating installed packages....") + '\n', NormalMessageFormat);
|
||||
@@ -369,7 +369,7 @@ const AndroidSdkPackageList &AndroidSdkManager::allSdkPackages()
|
||||
|
||||
QStringList AndroidSdkManager::notFoundEssentialSdkPackages()
|
||||
{
|
||||
QStringList essentials = androidConfig().allEssentials();
|
||||
QStringList essentials = AndroidConfig::allEssentials();
|
||||
const AndroidSdkPackageList &packages = allSdkPackages();
|
||||
for (AndroidSdkPackage *package : packages) {
|
||||
essentials.removeOne(package->sdkStylePath());
|
||||
@@ -381,7 +381,7 @@ QStringList AndroidSdkManager::notFoundEssentialSdkPackages()
|
||||
|
||||
QStringList AndroidSdkManager::missingEssentialSdkPackages()
|
||||
{
|
||||
const QStringList essentials = androidConfig().allEssentials();
|
||||
const QStringList essentials = AndroidConfig::allEssentials();
|
||||
const AndroidSdkPackageList &packages = allSdkPackages();
|
||||
QStringList missingPackages;
|
||||
for (AndroidSdkPackage *package : packages) {
|
||||
@@ -461,7 +461,7 @@ BuildToolsList AndroidSdkManager::filteredBuildTools(int minApiLevel,
|
||||
|
||||
void AndroidSdkManager::refreshPackages()
|
||||
{
|
||||
if (androidConfig().sdkManagerToolPath() != m_d->lastSdkManagerPath)
|
||||
if (AndroidConfig::sdkManagerToolPath() != m_d->lastSdkManagerPath)
|
||||
reloadPackages();
|
||||
}
|
||||
|
||||
@@ -479,14 +479,14 @@ bool AndroidSdkManager::packageListingSuccessful() const
|
||||
Runs the \c sdkmanger tool with arguments \a args. Returns \c true if the command is
|
||||
successfully executed. Output is copied into \a output. The function blocks the calling thread.
|
||||
*/
|
||||
static bool sdkManagerCommand(const AndroidConfig &config, const QStringList &args, QString *output)
|
||||
static bool sdkManagerCommand(const QStringList &args, QString *output)
|
||||
{
|
||||
QStringList newArgs = args;
|
||||
newArgs.append(sdkRootArg(config));
|
||||
newArgs.append(sdkRootArg());
|
||||
Process proc;
|
||||
proc.setEnvironment(config.toolsEnvironment());
|
||||
proc.setEnvironment(AndroidConfig::toolsEnvironment());
|
||||
proc.setTimeOutMessageBoxEnabled(true);
|
||||
proc.setCommand({config.sdkManagerToolPath(), newArgs});
|
||||
proc.setCommand({AndroidConfig::sdkManagerToolPath(), newArgs});
|
||||
qCDebug(sdkManagerLog).noquote() << "Running SDK Manager command (sync):"
|
||||
<< proc.commandLine().toUserOutput();
|
||||
proc.runBlocking(60s, EventLoopMode::On);
|
||||
@@ -516,10 +516,10 @@ void AndroidSdkManagerPrivate::reloadSdkPackages()
|
||||
qDeleteAll(m_allPackages);
|
||||
m_allPackages.clear();
|
||||
|
||||
lastSdkManagerPath = androidConfig().sdkManagerToolPath();
|
||||
lastSdkManagerPath = AndroidConfig::sdkManagerToolPath();
|
||||
m_packageListingSuccessful = false;
|
||||
|
||||
if (androidConfig().sdkToolsVersion().isNull()) {
|
||||
if (AndroidConfig::sdkToolsVersion().isNull()) {
|
||||
// Configuration has invalid sdk path or corrupt installation.
|
||||
emit m_sdkManager.packageReloadFinished();
|
||||
return;
|
||||
@@ -527,8 +527,8 @@ void AndroidSdkManagerPrivate::reloadSdkPackages()
|
||||
|
||||
QString packageListing;
|
||||
QStringList args({"--list", "--verbose"});
|
||||
args << androidConfig().sdkManagerToolArgs();
|
||||
m_packageListingSuccessful = sdkManagerCommand(androidConfig(), args, &packageListing);
|
||||
args << AndroidConfig::sdkManagerToolArgs();
|
||||
m_packageListingSuccessful = sdkManagerCommand(args, &packageListing);
|
||||
if (m_packageListingSuccessful) {
|
||||
SdkManagerOutputParser parser(m_allPackages);
|
||||
parser.parsePackageListing(packageListing);
|
||||
|
||||
@@ -40,9 +40,9 @@ public:
|
||||
m_argumentDetailsEdit = new QPlainTextEdit;
|
||||
m_argumentDetailsEdit->setReadOnly(true);
|
||||
|
||||
m_process.setEnvironment(androidConfig().toolsEnvironment());
|
||||
m_process.setCommand({androidConfig().sdkManagerToolPath(),
|
||||
{"--help", "--sdk_root=" + androidConfig().sdkLocation().toString()}});
|
||||
m_process.setEnvironment(AndroidConfig::toolsEnvironment());
|
||||
m_process.setCommand({AndroidConfig::sdkManagerToolPath(),
|
||||
{"--help", "--sdk_root=" + AndroidConfig::sdkLocation().toString()}});
|
||||
connect(&m_process, &Process::done, this, [this] {
|
||||
const QString output = m_process.allOutput();
|
||||
QString argumentDetails;
|
||||
@@ -64,7 +64,7 @@ public:
|
||||
connect(dialogButtons, &QDialogButtonBox::rejected, this, &OptionsDialog::reject);
|
||||
|
||||
m_argumentsEdit = new QLineEdit;
|
||||
m_argumentsEdit->setText(androidConfig().sdkManagerToolArgs().join(" "));
|
||||
m_argumentsEdit->setText(AndroidConfig::sdkManagerToolArgs().join(" "));
|
||||
|
||||
using namespace Layouting;
|
||||
|
||||
@@ -235,8 +235,8 @@ AndroidSdkManagerDialog::AndroidSdkManagerDialog(AndroidSdkManager *sdkManager,
|
||||
OptionsDialog dlg(m_sdkManager, this);
|
||||
if (dlg.exec() == QDialog::Accepted) {
|
||||
QStringList arguments = dlg.sdkManagerArguments();
|
||||
if (arguments != androidConfig().sdkManagerToolArgs()) {
|
||||
androidConfig().setSdkManagerToolArgs(arguments);
|
||||
if (arguments != AndroidConfig::sdkManagerToolArgs()) {
|
||||
AndroidConfig::setSdkManagerToolArgs(arguments);
|
||||
m_sdkManager->reloadPackages();
|
||||
}
|
||||
}
|
||||
@@ -244,19 +244,19 @@ AndroidSdkManagerDialog::AndroidSdkManagerDialog(AndroidSdkManager *sdkManager,
|
||||
|
||||
connect(obsoleteCheckBox, &QCheckBox::stateChanged, this, [this](int state) {
|
||||
const QString obsoleteArg = "--include_obsolete";
|
||||
QStringList args = androidConfig().sdkManagerToolArgs();
|
||||
QStringList args = AndroidConfig::sdkManagerToolArgs();
|
||||
if (state == Qt::Checked && !args.contains(obsoleteArg)) {
|
||||
args.append(obsoleteArg);
|
||||
androidConfig().setSdkManagerToolArgs(args);
|
||||
AndroidConfig::setSdkManagerToolArgs(args);
|
||||
} else if (state == Qt::Unchecked && args.contains(obsoleteArg)) {
|
||||
args.removeAll(obsoleteArg);
|
||||
androidConfig().setSdkManagerToolArgs(args);
|
||||
AndroidConfig::setSdkManagerToolArgs(args);
|
||||
}
|
||||
m_sdkManager->reloadPackages();
|
||||
});
|
||||
|
||||
connect(channelCheckbox, &QComboBox::currentIndexChanged, this, [this](int index) {
|
||||
QStringList args = androidConfig().sdkManagerToolArgs();
|
||||
QStringList args = AndroidConfig::sdkManagerToolArgs();
|
||||
QString existingArg;
|
||||
for (int i = 0; i < 4; ++i) {
|
||||
const QString arg = "--channel=" + QString::number(i);
|
||||
@@ -268,17 +268,17 @@ AndroidSdkManagerDialog::AndroidSdkManagerDialog(AndroidSdkManager *sdkManager,
|
||||
|
||||
if (index == 0 && !existingArg.isEmpty()) {
|
||||
args.removeAll(existingArg);
|
||||
androidConfig().setSdkManagerToolArgs(args);
|
||||
AndroidConfig::setSdkManagerToolArgs(args);
|
||||
} else if (index > 0) {
|
||||
// Add 1 to account for Stable (second item) being channel 0
|
||||
const QString channelArg = "--channel=" + QString::number(index - 1);
|
||||
if (existingArg != channelArg) {
|
||||
if (!existingArg.isEmpty()) {
|
||||
args.removeAll(existingArg);
|
||||
androidConfig().setSdkManagerToolArgs(args);
|
||||
AndroidConfig::setSdkManagerToolArgs(args);
|
||||
}
|
||||
args.append(channelArg);
|
||||
androidConfig().setSdkManagerToolArgs(args);
|
||||
AndroidConfig::setSdkManagerToolArgs(args);
|
||||
}
|
||||
}
|
||||
m_sdkManager->reloadPackages();
|
||||
|
||||
@@ -314,7 +314,7 @@ AndroidSettingsWidget::AndroidSettingsWidget()
|
||||
"and extracted to the selected path.\n"
|
||||
"After the SDK Tools are properly set up, you are prompted to install any essential\n"
|
||||
"packages required for Qt to build for Android.")
|
||||
.arg(androidConfig().sdkToolsUrl().toString()));
|
||||
.arg(AndroidConfig::sdkToolsUrl().toString()));
|
||||
|
||||
auto sdkManagerToolButton = new QPushButton(Tr::tr("SDK Manager"));
|
||||
|
||||
@@ -380,22 +380,22 @@ AndroidSettingsWidget::AndroidSettingsWidget()
|
||||
|
||||
connect(m_openJdkLocationPathChooser, &PathChooser::rawPathChanged,
|
||||
this, &AndroidSettingsWidget::validateJdk);
|
||||
if (androidConfig().openJDKLocation().isEmpty())
|
||||
androidConfig().setOpenJDKLocation(AndroidConfig::getJdkPath());
|
||||
m_openJdkLocationPathChooser->setFilePath(androidConfig().openJDKLocation());
|
||||
if (AndroidConfig::openJDKLocation().isEmpty())
|
||||
AndroidConfig::setOpenJDKLocation(AndroidConfig::getJdkPath());
|
||||
m_openJdkLocationPathChooser->setFilePath(AndroidConfig::openJDKLocation());
|
||||
m_openJdkLocationPathChooser->setPromptDialogTitle(Tr::tr("Select JDK Path"));
|
||||
|
||||
if (androidConfig().sdkLocation().isEmpty())
|
||||
androidConfig().setSdkLocation(AndroidConfig::defaultSdkPath());
|
||||
m_sdkLocationPathChooser->setFilePath(androidConfig().sdkLocation());
|
||||
if (AndroidConfig::sdkLocation().isEmpty())
|
||||
AndroidConfig::setSdkLocation(AndroidConfig::defaultSdkPath());
|
||||
m_sdkLocationPathChooser->setFilePath(AndroidConfig::sdkLocation());
|
||||
m_sdkLocationPathChooser->setPromptDialogTitle(Tr::tr("Select Android SDK Folder"));
|
||||
|
||||
m_openSslPathChooser->setPromptDialogTitle(Tr::tr("Select OpenSSL Include Project File"));
|
||||
if (androidConfig().openSslLocation().isEmpty())
|
||||
androidConfig().setOpenSslLocation(androidConfig().sdkLocation() / ("android_openssl"));
|
||||
m_openSslPathChooser->setFilePath(androidConfig().openSslLocation());
|
||||
if (AndroidConfig::openSslLocation().isEmpty())
|
||||
AndroidConfig::setOpenSslLocation(AndroidConfig::sdkLocation() / ("android_openssl"));
|
||||
m_openSslPathChooser->setFilePath(AndroidConfig::openSslLocation());
|
||||
|
||||
m_createKitCheckBox->setChecked(androidConfig().automaticKitCreation());
|
||||
m_createKitCheckBox->setChecked(AndroidConfig::automaticKitCreation());
|
||||
|
||||
downloadNdkToolButton->setIcon(downloadIcon);
|
||||
|
||||
@@ -454,21 +454,21 @@ AndroidSettingsWidget::AndroidSettingsWidget()
|
||||
connect(m_ndkListWidget, &QListWidget::currentTextChanged,
|
||||
this, [this, removeCustomNdkButton](const QString &ndk) {
|
||||
updateUI();
|
||||
removeCustomNdkButton->setEnabled(androidConfig().getCustomNdkList().contains(ndk));
|
||||
removeCustomNdkButton->setEnabled(AndroidConfig::getCustomNdkList().contains(ndk));
|
||||
});
|
||||
connect(addCustomNdkButton, &QPushButton::clicked, this,
|
||||
&AndroidSettingsWidget::addCustomNdkItem);
|
||||
connect(removeCustomNdkButton, &QPushButton::clicked, this, [this] {
|
||||
if (isDefaultNdkSelected())
|
||||
androidConfig().setDefaultNdk({});
|
||||
androidConfig().removeCustomNdk(m_ndkListWidget->currentItem()->text());
|
||||
AndroidConfig::setDefaultNdk({});
|
||||
AndroidConfig::removeCustomNdk(m_ndkListWidget->currentItem()->text());
|
||||
m_ndkListWidget->takeItem(m_ndkListWidget->currentRow());
|
||||
});
|
||||
connect(m_makeDefaultNdkButton, &QPushButton::clicked, this, [this] {
|
||||
const FilePath defaultNdk = isDefaultNdkSelected()
|
||||
? FilePath()
|
||||
: FilePath::fromUserInput(m_ndkListWidget->currentItem()->text());
|
||||
androidConfig().setDefaultNdk(defaultNdk);
|
||||
AndroidConfig::setDefaultNdk(defaultNdk);
|
||||
updateUI();
|
||||
});
|
||||
|
||||
@@ -503,7 +503,7 @@ AndroidSettingsWidget::AndroidSettingsWidget()
|
||||
if (result != Tasking::DoneWith::Success)
|
||||
return;
|
||||
// Make sure the sdk path is created before installing packages
|
||||
const FilePath sdkPath = androidConfig().sdkLocation();
|
||||
const FilePath sdkPath = AndroidConfig::sdkLocation();
|
||||
if (!sdkPath.createDir()) {
|
||||
QMessageBox::warning(this, Android::Internal::dialogTitle(),
|
||||
Tr::tr("Failed to create the SDK Tools path %1.")
|
||||
@@ -543,12 +543,12 @@ void AndroidSettingsWidget::updateNdkList()
|
||||
ndk->installedLocation().toUserOutput()));
|
||||
}
|
||||
|
||||
const auto customNdks = androidConfig().getCustomNdkList();
|
||||
const auto customNdks = AndroidConfig::getCustomNdkList();
|
||||
for (const QString &ndk : customNdks) {
|
||||
if (AndroidConfig::isValidNdk(ndk)) {
|
||||
m_ndkListWidget->addItem(new QListWidgetItem(Icons::UNLOCKED.icon(), ndk));
|
||||
} else {
|
||||
androidConfig().removeCustomNdk(ndk);
|
||||
AndroidConfig::removeCustomNdk(ndk);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -564,7 +564,7 @@ void AndroidSettingsWidget::addCustomNdkItem()
|
||||
const QString ndkPath = QFileDialog::getExistingDirectory(this, Tr::tr("Select an NDK"), homePath);
|
||||
|
||||
if (AndroidConfig::isValidNdk(ndkPath)) {
|
||||
androidConfig().addCustomNdk(ndkPath);
|
||||
AndroidConfig::addCustomNdk(ndkPath);
|
||||
if (m_ndkListWidget->findItems(ndkPath, Qt::MatchExactly).size() == 0) {
|
||||
m_ndkListWidget->addItem(new QListWidgetItem(Icons::UNLOCKED.icon(), ndkPath));
|
||||
}
|
||||
@@ -582,9 +582,9 @@ void AndroidSettingsWidget::addCustomNdkItem()
|
||||
|
||||
bool AndroidSettingsWidget::isDefaultNdkSelected() const
|
||||
{
|
||||
if (!androidConfig().defaultNdk().isEmpty()) {
|
||||
if (!AndroidConfig::defaultNdk().isEmpty()) {
|
||||
if (const QListWidgetItem *item = m_ndkListWidget->currentItem()) {
|
||||
return FilePath::fromUserInput(item->text()) == androidConfig().defaultNdk();
|
||||
return FilePath::fromUserInput(item->text()) == AndroidConfig::defaultNdk();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
@@ -592,8 +592,8 @@ bool AndroidSettingsWidget::isDefaultNdkSelected() const
|
||||
|
||||
void AndroidSettingsWidget::validateJdk()
|
||||
{
|
||||
androidConfig().setOpenJDKLocation(m_openJdkLocationPathChooser->filePath());
|
||||
expected_str<void> test = testJavaC(androidConfig().openJDKLocation());
|
||||
AndroidConfig::setOpenJDKLocation(m_openJdkLocationPathChooser->filePath());
|
||||
expected_str<void> test = testJavaC(AndroidConfig::openJDKLocation());
|
||||
|
||||
m_androidSummary->setPointValid(JavaPathExistsAndWritableRow, test);
|
||||
|
||||
@@ -605,14 +605,14 @@ void AndroidSettingsWidget::validateJdk()
|
||||
|
||||
void AndroidSettingsWidget::validateOpenSsl()
|
||||
{
|
||||
androidConfig().setOpenSslLocation(m_openSslPathChooser->filePath());
|
||||
AndroidConfig::setOpenSslLocation(m_openSslPathChooser->filePath());
|
||||
|
||||
m_openSslSummary->setPointValid(OpenSslPathExistsRow, androidConfig().openSslLocation().exists());
|
||||
m_openSslSummary->setPointValid(OpenSslPathExistsRow, AndroidConfig::openSslLocation().exists());
|
||||
|
||||
const bool priFileExists = androidConfig().openSslLocation().pathAppended("openssl.pri").exists();
|
||||
const bool priFileExists = AndroidConfig::openSslLocation().pathAppended("openssl.pri").exists();
|
||||
m_openSslSummary->setPointValid(OpenSslPriPathExists, priFileExists);
|
||||
const bool cmakeListsExists
|
||||
= androidConfig().openSslLocation().pathAppended("CMakeLists.txt").exists();
|
||||
= AndroidConfig::openSslLocation().pathAppended("CMakeLists.txt").exists();
|
||||
m_openSslSummary->setPointValid(OpenSslCmakeListsPathExists, cmakeListsExists);
|
||||
|
||||
updateUI();
|
||||
@@ -621,8 +621,8 @@ void AndroidSettingsWidget::validateOpenSsl()
|
||||
void AndroidSettingsWidget::onSdkPathChanged()
|
||||
{
|
||||
const FilePath sdkPath = m_sdkLocationPathChooser->filePath().cleanPath();
|
||||
androidConfig().setSdkLocation(sdkPath);
|
||||
FilePath currentOpenSslPath = androidConfig().openSslLocation();
|
||||
AndroidConfig::setSdkLocation(sdkPath);
|
||||
FilePath currentOpenSslPath = AndroidConfig::openSslLocation();
|
||||
if (currentOpenSslPath.isEmpty() || !currentOpenSslPath.exists())
|
||||
currentOpenSslPath = sdkPath.pathAppended("android_openssl");
|
||||
m_openSslPathChooser->setFilePath(currentOpenSslPath);
|
||||
@@ -633,24 +633,24 @@ void AndroidSettingsWidget::onSdkPathChanged()
|
||||
void AndroidSettingsWidget::validateSdk()
|
||||
{
|
||||
const FilePath sdkPath = m_sdkLocationPathChooser->filePath().cleanPath();
|
||||
androidConfig().setSdkLocation(sdkPath);
|
||||
AndroidConfig::setSdkLocation(sdkPath);
|
||||
|
||||
const FilePath path = androidConfig().sdkLocation();
|
||||
const FilePath path = AndroidConfig::sdkLocation();
|
||||
m_androidSummary->setPointValid(SdkPathExistsAndWritableRow,
|
||||
path.exists() && path.isWritableDir());
|
||||
m_androidSummary->setPointValid(SdkToolsInstalledRow,
|
||||
!androidConfig().sdkToolsVersion().isNull());
|
||||
!AndroidConfig::sdkToolsVersion().isNull());
|
||||
m_androidSummary->setPointValid(PlatformToolsInstalledRow,
|
||||
androidConfig().adbToolPath().exists());
|
||||
AndroidConfig::adbToolPath().exists());
|
||||
m_androidSummary->setPointValid(BuildToolsInstalledRow,
|
||||
!androidConfig().buildToolsVersion().isNull());
|
||||
!AndroidConfig::buildToolsVersion().isNull());
|
||||
m_androidSummary->setPointValid(SdkManagerSuccessfulRow, m_sdkManager.packageListingSuccessful());
|
||||
// installedSdkPlatforms should not trigger a package reload as validate SDK is only called
|
||||
// after AndroidSdkManager::packageReloadFinished.
|
||||
m_androidSummary->setPointValid(PlatformSdkInstalledRow,
|
||||
!m_sdkManager.installedSdkPlatforms().isEmpty());
|
||||
m_androidSummary->setPointValid(AllEssentialsInstalledRow,
|
||||
androidConfig().allEssentialsInstalled(&m_sdkManager));
|
||||
AndroidConfig::allEssentialsInstalled(&m_sdkManager));
|
||||
|
||||
const bool sdkToolsOk = m_androidSummary->rowsOk({SdkPathExistsAndWritableRow,
|
||||
SdkToolsInstalledRow,
|
||||
@@ -659,7 +659,7 @@ void AndroidSettingsWidget::validateSdk()
|
||||
BuildToolsInstalledRow,
|
||||
PlatformSdkInstalledRow,
|
||||
AllEssentialsInstalledRow});
|
||||
androidConfig().setSdkFullyConfigured(sdkToolsOk && componentsOk);
|
||||
AndroidConfig::setSdkFullyConfigured(sdkToolsOk && componentsOk);
|
||||
if (sdkToolsOk && !componentsOk) {
|
||||
const QStringList notFoundEssentials = m_sdkManager.notFoundEssentialSdkPackages();
|
||||
if (!notFoundEssentials.isEmpty()) {
|
||||
@@ -783,7 +783,7 @@ void AndroidSettingsWidget::downloadOpenSslRepo(const bool silent)
|
||||
|
||||
void AndroidSettingsWidget::createKitToggled()
|
||||
{
|
||||
androidConfig().setAutomaticKitCreation(m_createKitCheckBox->isChecked());
|
||||
AndroidConfig::setAutomaticKitCreation(m_createKitCheckBox->isChecked());
|
||||
}
|
||||
|
||||
void AndroidSettingsWidget::updateUI()
|
||||
@@ -794,7 +794,7 @@ void AndroidSettingsWidget::updateUI()
|
||||
const QListWidgetItem *currentItem = m_ndkListWidget->currentItem();
|
||||
const FilePath currentNdk = FilePath::fromUserInput(currentItem ? currentItem->text() : "");
|
||||
const QString infoText = Tr::tr("(SDK Version: %1, NDK Version: %2)")
|
||||
.arg(androidConfig().sdkToolsVersion().toString())
|
||||
.arg(AndroidConfig::sdkToolsVersion().toString())
|
||||
.arg(currentNdk.isEmpty() ? "" : AndroidConfig::ndkVersion(currentNdk).toString());
|
||||
m_androidSummary->setInfoText(androidSetupOk ? infoText : "");
|
||||
|
||||
@@ -809,7 +809,7 @@ void AndroidSettingsWidget::updateUI()
|
||||
for (int row = 0; row < m_ndkListWidget->count(); ++row) {
|
||||
QListWidgetItem *item = m_ndkListWidget->item(row);
|
||||
const bool isDefaultNdk =
|
||||
FilePath::fromUserInput(item->text()) == androidConfig().defaultNdk();
|
||||
FilePath::fromUserInput(item->text()) == AndroidConfig::defaultNdk();
|
||||
item->setFont(isDefaultNdk ? markedFont : font);
|
||||
}
|
||||
}
|
||||
@@ -821,7 +821,7 @@ void AndroidSettingsWidget::updateUI()
|
||||
|
||||
void AndroidSettingsWidget::downloadSdk()
|
||||
{
|
||||
if (androidConfig().sdkToolsOk()) {
|
||||
if (AndroidConfig::sdkToolsOk()) {
|
||||
QMessageBox::warning(this, Android::Internal::dialogTitle(),
|
||||
Tr::tr("The selected path already has a valid SDK Tools package."));
|
||||
validateSdk();
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Android {
|
||||
namespace Internal {
|
||||
|
||||
AndroidSignalOperation::AndroidSignalOperation()
|
||||
: m_adbPath(androidConfig().adbToolPath())
|
||||
: m_adbPath(AndroidConfig::adbToolPath())
|
||||
, m_timeout(new QTimer(this))
|
||||
{
|
||||
m_timeout->setInterval(5000);
|
||||
|
||||
@@ -77,7 +77,7 @@ bool AndroidToolchain::isValid() const
|
||||
}
|
||||
|
||||
const bool isChildofNdk = compilerCommand().isChildOf(m_ndkLocation);
|
||||
const bool isChildofSdk = compilerCommand().isChildOf(androidConfig().sdkLocation());
|
||||
const bool isChildofSdk = compilerCommand().isChildOf(AndroidConfig::sdkLocation());
|
||||
|
||||
return GccToolchain::isValid() && typeId() == Constants::ANDROID_TOOLCHAIN_TYPEID
|
||||
&& targetAbi().isValid() && (isChildofNdk || isChildofSdk)
|
||||
@@ -86,9 +86,8 @@ bool AndroidToolchain::isValid() const
|
||||
|
||||
void AndroidToolchain::addToEnvironment(Environment &env) const
|
||||
{
|
||||
const AndroidConfig &config = androidConfig();
|
||||
env.set(QLatin1String("ANDROID_NDK_HOST"), AndroidConfig::toolchainHostFromNdk(m_ndkLocation));
|
||||
const FilePath javaHome = config.openJDKLocation();
|
||||
const FilePath javaHome = AndroidConfig::openJDKLocation();
|
||||
if (javaHome.exists()) {
|
||||
env.set(Constants::JAVA_HOME_ENV_VAR, javaHome.toUserOutput());
|
||||
const FilePath javaBin = javaHome.pathAppended("bin");
|
||||
@@ -97,8 +96,8 @@ void AndroidToolchain::addToEnvironment(Environment &env) const
|
||||
if (!currentJavaFilePath.isChildOf(javaBin))
|
||||
env.prependOrSetPath(javaBin);
|
||||
}
|
||||
env.set(QLatin1String("ANDROID_HOME"), config.sdkLocation().toUserOutput());
|
||||
env.set(QLatin1String("ANDROID_SDK_ROOT"), config.sdkLocation().toUserOutput());
|
||||
env.set(QLatin1String("ANDROID_HOME"), AndroidConfig::sdkLocation().toUserOutput());
|
||||
env.set(QLatin1String("ANDROID_SDK_ROOT"), AndroidConfig::sdkLocation().toUserOutput());
|
||||
}
|
||||
|
||||
void AndroidToolchain::fromMap(const Store &data)
|
||||
@@ -147,7 +146,7 @@ static FilePaths uniqueNdksForCurrentQtVersions()
|
||||
|
||||
FilePaths uniqueNdks;
|
||||
for (const QtSupport::QtVersion *version : androidQtVersions) {
|
||||
FilePath ndk = androidConfig().ndkLocation(version);
|
||||
FilePath ndk = AndroidConfig::ndkLocation(version);
|
||||
if (!uniqueNdks.contains(ndk))
|
||||
uniqueNdks.append(ndk);
|
||||
}
|
||||
@@ -161,8 +160,6 @@ ToolchainList autodetectToolchainsFromNdks(
|
||||
const bool isCustom)
|
||||
{
|
||||
QList<Toolchain *> result;
|
||||
const AndroidConfig config = androidConfig();
|
||||
|
||||
const Id LanguageIds[] {
|
||||
ProjectExplorer::Constants::CXX_LANGUAGE_ID,
|
||||
ProjectExplorer::Constants::C_LANGUAGE_ID
|
||||
|
||||
@@ -169,9 +169,9 @@ AvdDialog::DeviceType AvdDialog::tagToDeviceType(const QString &type_tag)
|
||||
|
||||
static bool avdManagerCommand(const QStringList &args, QString *output)
|
||||
{
|
||||
CommandLine cmd(androidConfig().avdManagerToolPath(), args);
|
||||
CommandLine cmd(AndroidConfig::avdManagerToolPath(), args);
|
||||
Process proc;
|
||||
proc.setEnvironment(androidConfig().toolsEnvironment());
|
||||
proc.setEnvironment(AndroidConfig::toolsEnvironment());
|
||||
qCDebug(avdDialogLog).noquote() << "Running AVD Manager command:" << cmd.toUserOutput();
|
||||
proc.setCommand(cmd);
|
||||
proc.runBlocking();
|
||||
@@ -189,7 +189,7 @@ void AvdDialog::parseDeviceDefinitionsList()
|
||||
|
||||
if (!avdManagerCommand({"list", "device"}, &output)) {
|
||||
qCDebug(avdDialogLog) << "Avd list command failed" << output
|
||||
<< androidConfig().sdkToolsVersion();
|
||||
<< AndroidConfig::sdkToolsVersion();
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ QT_END_NAMESPACE
|
||||
namespace Utils { class InfoLabel; }
|
||||
|
||||
namespace Android {
|
||||
class AndroidConfig;
|
||||
class SdkPlatform;
|
||||
|
||||
namespace Internal {
|
||||
|
||||
@@ -305,7 +305,7 @@ void JLSClient::updateProjectFiles()
|
||||
|
||||
const QStringList classPaths = node->data(Constants::AndroidClassPaths).toStringList();
|
||||
|
||||
const FilePath &sdkLocation = androidConfig().sdkLocation();
|
||||
const FilePath &sdkLocation = AndroidConfig::sdkLocation();
|
||||
const QString &targetSDK = AndroidManager::buildTargetSDK(m_currentTarget);
|
||||
const FilePath androidJar = sdkLocation / QString("platforms/%2/android.jar")
|
||||
.arg(targetSDK);
|
||||
|
||||
Reference in New Issue
Block a user