From c72734e6781d16105382af5c0112f5bddd5f365d Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Tue, 8 Aug 2023 22:23:43 +0200 Subject: [PATCH] AndroidManager: Make it a namespace Unexport it, as it seems that no method is used outside of the Android plugin. Change-Id: I5c76234a1f37ddfa3dcfa51ded5a441163ec9093 Reviewed-by: Alessandro Portale Reviewed-by: Qt CI Bot --- src/plugins/android/androidmanager.cpp | 97 +++++++++++------------- src/plugins/android/androidmanager.h | 101 +++++++++++-------------- 2 files changed, 89 insertions(+), 109 deletions(-) diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 78a697cf7ef..e01fcf76ac7 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -37,7 +37,7 @@ using namespace Utils; using namespace Android::Internal; -namespace Android { +namespace Android::AndroidManager { const char AndroidManifestName[] = "AndroidManifest.xml"; const char AndroidDeviceSn[] = "AndroidDeviceSerialNumber"; @@ -67,7 +67,7 @@ static const ProjectNode *currentProjectNode(const Target *target) return target->project()->findNodeForBuildKey(target->activeBuildKey()); } -QString AndroidManager::packageName(const Target *target) +QString packageName(const Target *target) { QDomDocument doc; if (!openManifest(target, doc)) @@ -76,7 +76,7 @@ QString AndroidManager::packageName(const Target *target) return manifestElem.attribute(QLatin1String("package")); } -QString AndroidManager::packageName(const FilePath &manifestFile) +QString packageName(const FilePath &manifestFile) { QDomDocument doc; if (!openXmlFile(doc, manifestFile)) @@ -85,7 +85,7 @@ QString AndroidManager::packageName(const FilePath &manifestFile) return manifestElem.attribute(QLatin1String("package")); } -QString AndroidManager::activityName(const Target *target) +QString activityName(const Target *target) { QDomDocument doc; if (!openManifest(target, doc)) @@ -100,7 +100,7 @@ QString AndroidManager::activityName(const Target *target) of the kit is returned if the manifest file of the APK cannot be found or parsed. */ -int AndroidManager::minimumSDK(const Target *target) +int minimumSDK(const Target *target) { QDomDocument doc; if (!openXmlFile(doc, AndroidManager::manifestSourcePath(target))) @@ -115,7 +115,7 @@ int AndroidManager::minimumSDK(const Target *target) Returns the minimum Android API level required by the kit to compile. -1 is returned if the kit does not support Android. */ -int AndroidManager::minimumSDK(const Kit *kit) +int minimumSDK(const Kit *kit) { int minSdkVersion = -1; QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(kit); @@ -132,7 +132,7 @@ int AndroidManager::minimumSDK(const Kit *kit) return minSdkVersion; } -QString AndroidManager::buildTargetSDK(const Target *target) +QString buildTargetSDK(const Target *target) { if (auto bc = target->activeBuildConfiguration()) { if (auto androidBuildApkStep = bc->buildSteps()->firstOfType()) @@ -144,13 +144,13 @@ QString AndroidManager::buildTargetSDK(const Target *target) return fallback; } -QStringList AndroidManager::applicationAbis(const Target *target) +QStringList applicationAbis(const Target *target) { auto qt = dynamic_cast(QtSupport::QtKitAspect::qtVersion(target->kit())); return qt ? qt->androidAbis() : QStringList(); } -QString AndroidManager::archTriplet(const QString &abi) +QString archTriplet(const QString &abi) { if (abi == ProjectExplorer::Constants::ANDROID_ABI_X86) { return {"i686-linux-android"}; @@ -162,7 +162,7 @@ QString AndroidManager::archTriplet(const QString &abi) return {"arm-linux-androideabi"}; } -QJsonObject AndroidManager::deploymentSettings(const Target *target) +QJsonObject deploymentSettings(const Target *target) { QtSupport::QtVersion *qt = QtSupport::QtKitAspect::qtVersion(target->kit()); if (!qt) @@ -196,7 +196,7 @@ QJsonObject AndroidManager::deploymentSettings(const Target *target) return settings; } -bool AndroidManager::isQtCreatorGenerated(const FilePath &deploymentFile) +bool isQtCreatorGenerated(const FilePath &deploymentFile) { QFile f{deploymentFile.toString()}; if (!f.open(QIODevice::ReadOnly)) @@ -204,17 +204,17 @@ bool AndroidManager::isQtCreatorGenerated(const FilePath &deploymentFile) return QJsonDocument::fromJson(f.readAll()).object()["_description"].toString() == qtcSignature; } -FilePath AndroidManager::androidBuildDirectory(const Target *target) +FilePath androidBuildDirectory(const Target *target) { return buildDirectory(target) / Constants::ANDROID_BUILD_DIRECTORY; } -FilePath AndroidManager::androidAppProcessDir(const Target *target) +FilePath androidAppProcessDir(const Target *target) { return buildDirectory(target) / Constants::ANDROID_APP_PROCESS_DIRECTORY; } -bool AndroidManager::isQt5CmakeProject(const ProjectExplorer::Target *target) +bool isQt5CmakeProject(const ProjectExplorer::Target *target) { const QtSupport::QtVersion *qt = QtSupport::QtKitAspect::qtVersion(target->kit()); const bool isQt5 = qt && qt->qtVersion() < QVersionNumber(6, 0, 0); @@ -223,7 +223,7 @@ bool AndroidManager::isQt5CmakeProject(const ProjectExplorer::Target *target) return isQt5 && isCmakeProject; } -FilePath AndroidManager::buildDirectory(const Target *target) +FilePath buildDirectory(const Target *target) { if (const BuildSystem *bs = target->buildSystem()) { const QString buildKey = target->activeBuildKey(); @@ -253,12 +253,10 @@ FilePath AndroidManager::buildDirectory(const Target *target) return {}; } -enum PackageFormat { - Apk, - Aab -}; +enum PackageFormat { Apk, Aab }; -QString packageSubPath(PackageFormat format, BuildConfiguration::BuildType buildType, bool sig) +static QString packageSubPath(PackageFormat format, BuildConfiguration::BuildType buildType, + bool sig) { const bool deb = (buildType == BuildConfiguration::Debug); @@ -274,7 +272,7 @@ QString packageSubPath(PackageFormat format, BuildConfiguration::BuildType build : "bundle/release/android-build-release.aab"); } -FilePath AndroidManager::packagePath(const Target *target) +FilePath packagePath(const Target *target) { QTC_ASSERT(target, return {}); @@ -291,7 +289,7 @@ FilePath AndroidManager::packagePath(const Target *target) return androidBuildDirectory(target) / "build/outputs" / subPath; } -bool AndroidManager::matchedAbis(const QStringList &deviceAbis, const QStringList &appAbis) +bool matchedAbis(const QStringList &deviceAbis, const QStringList &appAbis) { for (const auto &abi : appAbis) { if (deviceAbis.contains(abi)) @@ -300,7 +298,7 @@ bool AndroidManager::matchedAbis(const QStringList &deviceAbis, const QStringLis return false; } -QString AndroidManager::devicePreferredAbi(const QStringList &deviceAbis, const QStringList &appAbis) +QString devicePreferredAbi(const QStringList &deviceAbis, const QStringList &appAbis) { for (const auto &abi : appAbis) { if (deviceAbis.contains(abi)) @@ -309,7 +307,7 @@ QString AndroidManager::devicePreferredAbi(const QStringList &deviceAbis, const return {}; } -Abi AndroidManager::androidAbi2Abi(const QString &androidAbi) +Abi androidAbi2Abi(const QString &androidAbi) { if (androidAbi == ProjectExplorer::Constants::ANDROID_ABI_ARM64_V8A) { return Abi{Abi::Architecture::ArmArchitecture, @@ -344,7 +342,7 @@ Abi AndroidManager::androidAbi2Abi(const QString &androidAbi) } } -bool AndroidManager::skipInstallationAndPackageSteps(const Target *target) +bool skipInstallationAndPackageSteps(const Target *target) { // For projects using Qt 5.15 and Qt 6, the deployment settings file // is generated by CMake/qmake and not Qt Creator, so if such file doesn't exist @@ -367,7 +365,7 @@ bool AndroidManager::skipInstallationAndPackageSteps(const Target *target) return n == nullptr; // If no Application target found, then skip steps } -FilePath AndroidManager::manifestSourcePath(const Target *target) +FilePath manifestSourcePath(const Target *target) { if (const ProjectNode *node = currentProjectNode(target)) { const QString packageSource @@ -381,7 +379,7 @@ FilePath AndroidManager::manifestSourcePath(const Target *target) return manifestPath(target); } -FilePath AndroidManager::manifestPath(const Target *target) +FilePath manifestPath(const Target *target) { QVariant manifest = target->namedSettings(AndroidManifestName); if (manifest.isValid()) @@ -389,17 +387,17 @@ FilePath AndroidManager::manifestPath(const Target *target) return androidBuildDirectory(target).pathAppended(AndroidManifestName); } -void AndroidManager::setManifestPath(Target *target, const FilePath &path) +void setManifestPath(Target *target, const FilePath &path) { target->setNamedSettings(AndroidManifestName, QVariant::fromValue(path)); } -QString AndroidManager::deviceSerialNumber(const Target *target) +QString deviceSerialNumber(const Target *target) { return target->namedSettings(AndroidDeviceSn).toString(); } -void AndroidManager::setDeviceSerialNumber(Target *target, const QString &deviceSerialNumber) +void setDeviceSerialNumber(Target *target, const QString &deviceSerialNumber) { qCDebug(androidManagerLog) << "Target device serial changed:" << target->displayName() << deviceSerialNumber; @@ -416,7 +414,7 @@ static QString preferredAbi(const QStringList &appAbis, const Target *target) return {}; } -QString AndroidManager::apkDevicePreferredAbi(const Target *target) +QString apkDevicePreferredAbi(const Target *target) { const FilePath libsPath = androidBuildDirectory(target).pathAppended("libs"); if (!libsPath.exists()) { @@ -436,24 +434,24 @@ QString AndroidManager::apkDevicePreferredAbi(const Target *target) return preferredAbi(apkAbis, target); } -void AndroidManager::setDeviceAbis(Target *target, const QStringList &deviceAbis) +void setDeviceAbis(Target *target, const QStringList &deviceAbis) { target->setNamedSettings(AndroidDeviceAbis, deviceAbis); } -int AndroidManager::deviceApiLevel(const Target *target) +int deviceApiLevel(const Target *target) { return target->namedSettings(ApiLevelKey).toInt(); } -void AndroidManager::setDeviceApiLevel(Target *target, int level) +void setDeviceApiLevel(Target *target, int level) { qCDebug(androidManagerLog) << "Target device API level changed:" << target->displayName() << level; target->setNamedSettings(ApiLevelKey, level); } -int AndroidManager::defaultMinimumSDK(const QtSupport::QtVersion *qtVersion) +int defaultMinimumSDK(const QtSupport::QtVersion *qtVersion) { if (qtVersion && qtVersion->qtVersion() >= QVersionNumber(6, 0)) return 23; @@ -463,7 +461,7 @@ int AndroidManager::defaultMinimumSDK(const QtSupport::QtVersion *qtVersion) return 16; } -QString AndroidManager::androidNameForApiLevel(int x) +QString androidNameForApiLevel(int x) { switch (x) { case 2: @@ -572,7 +570,7 @@ static int parseMinSdk(const QDomElement &manifestElem) return 0; } -void AndroidManager::installQASIPackage(Target *target, const FilePath &packagePath) +void installQASIPackage(Target *target, const FilePath &packagePath) { const QStringList appAbis = AndroidManager::applicationAbis(target); if (appAbis.isEmpty()) @@ -602,8 +600,7 @@ void AndroidManager::installQASIPackage(Target *target, const FilePath &packageP } } -bool AndroidManager::checkKeystorePassword(const FilePath &keystorePath, - const QString &keystorePasswd) +bool checkKeystorePassword(const FilePath &keystorePath, const QString &keystorePasswd) { if (keystorePasswd.isEmpty()) return false; @@ -617,10 +614,8 @@ bool AndroidManager::checkKeystorePassword(const FilePath &keystorePath, return proc.result() == ProcessResult::FinishedWithSuccess; } -bool AndroidManager::checkCertificatePassword(const FilePath &keystorePath, - const QString &keystorePasswd, - const QString &alias, - const QString &certificatePasswd) +bool checkCertificatePassword(const FilePath &keystorePath, const QString &keystorePasswd, + const QString &alias, const QString &certificatePasswd) { // assumes that the keystore password is correct QStringList arguments = {"-certreq", "-keystore", keystorePath.toUserOutput(), @@ -637,8 +632,8 @@ bool AndroidManager::checkCertificatePassword(const FilePath &keystorePath, return proc.result() == ProcessResult::FinishedWithSuccess; } -bool AndroidManager::checkCertificateExists(const FilePath &keystorePath, - const QString &keystorePasswd, const QString &alias) +bool checkCertificateExists(const FilePath &keystorePath, const QString &keystorePasswd, + const QString &alias) { // assumes that the keystore password is correct QStringList arguments = { "-list", "-keystore", keystorePath.toUserOutput(), @@ -651,7 +646,7 @@ bool AndroidManager::checkCertificateExists(const FilePath &keystorePath, return proc.result() == ProcessResult::FinishedWithSuccess; } -Process *AndroidManager::startAdbProcess(const QStringList &args, QString *err) +Process *startAdbProcess(const QStringList &args, QString *err) { std::unique_ptr process(new Process); const FilePath adb = AndroidConfigurations::currentConfig().adbToolPath(); @@ -670,8 +665,8 @@ Process *AndroidManager::startAdbProcess(const QStringList &args, QString *err) return nullptr; } -SdkToolResult AndroidManager::runCommand(const CommandLine &command, - const QByteArray &writeData, int timeoutS) +static SdkToolResult runCommand(const CommandLine &command, const QByteArray &writeData, + int timeoutS) { Android::SdkToolResult cmdResult; Process cmdProc; @@ -691,10 +686,10 @@ SdkToolResult AndroidManager::runCommand(const CommandLine &command, return cmdResult; } -SdkToolResult AndroidManager::runAdbCommand(const QStringList &args, - const QByteArray &writeData, int timeoutS) +SdkToolResult runAdbCommand(const QStringList &args, const QByteArray &writeData, int timeoutS) { return runCommand({AndroidConfigurations::currentConfig().adbToolPath(), args}, writeData, timeoutS); } -} // namespace Android + +} // namespace Android::AndroidManager diff --git a/src/plugins/android/androidmanager.h b/src/plugins/android/androidmanager.h index 0d6db5369cd..b8ea9b167fb 100644 --- a/src/plugins/android/androidmanager.h +++ b/src/plugins/android/androidmanager.h @@ -3,12 +3,6 @@ #pragma once -#include "android_global.h" - -#include -#include -#include - #include #include @@ -18,7 +12,6 @@ class Target; } namespace Utils { -class CommandLine; class FilePath; class Process; } @@ -33,77 +26,69 @@ public: const QString &stdErr() const { return m_stdErr; } const QString &exitMessage() const { return m_exitMessage; } -private: bool m_success = false; QString m_stdOut; QString m_stdErr; QString m_exitMessage; - friend class AndroidManager; }; -class ANDROID_EXPORT AndroidManager : public QObject +namespace AndroidManager { - Q_OBJECT -public: - static QString packageName(const ProjectExplorer::Target *target); - static QString packageName(const Utils::FilePath &manifestFile); - static QString activityName(const ProjectExplorer::Target *target); +QString packageName(const ProjectExplorer::Target *target); +QString packageName(const Utils::FilePath &manifestFile); +QString activityName(const ProjectExplorer::Target *target); - static QString deviceSerialNumber(const ProjectExplorer::Target *target); - static void setDeviceSerialNumber(ProjectExplorer::Target *target, const QString &deviceSerialNumber); +QString deviceSerialNumber(const ProjectExplorer::Target *target); +void setDeviceSerialNumber(ProjectExplorer::Target *target, const QString &deviceSerialNumber); - static QString apkDevicePreferredAbi(const ProjectExplorer::Target *target); - static void setDeviceAbis(ProjectExplorer::Target *target, const QStringList &deviceAbis); +QString apkDevicePreferredAbi(const ProjectExplorer::Target *target); +void setDeviceAbis(ProjectExplorer::Target *target, const QStringList &deviceAbis); - static int deviceApiLevel(const ProjectExplorer::Target *target); - static void setDeviceApiLevel(ProjectExplorer::Target *target, int level); +int deviceApiLevel(const ProjectExplorer::Target *target); +void setDeviceApiLevel(ProjectExplorer::Target *target, int level); - static QString buildTargetSDK(const ProjectExplorer::Target *target); +QString buildTargetSDK(const ProjectExplorer::Target *target); - static int minimumSDK(const ProjectExplorer::Target *target); - static int minimumSDK(const ProjectExplorer::Kit *kit); - static int defaultMinimumSDK(const QtSupport::QtVersion *qtVersion); +int minimumSDK(const ProjectExplorer::Target *target); +int minimumSDK(const ProjectExplorer::Kit *kit); +int defaultMinimumSDK(const QtSupport::QtVersion *qtVersion); - static QStringList applicationAbis(const ProjectExplorer::Target *target); - static QString archTriplet(const QString &abi); +QStringList applicationAbis(const ProjectExplorer::Target *target); +QString archTriplet(const QString &abi); - static bool isQt5CmakeProject(const ProjectExplorer::Target *target); +bool isQt5CmakeProject(const ProjectExplorer::Target *target); - static Utils::FilePath androidBuildDirectory(const ProjectExplorer::Target *target); - static Utils::FilePath androidAppProcessDir(const ProjectExplorer::Target *target); - static Utils::FilePath buildDirectory(const ProjectExplorer::Target *target); - static Utils::FilePath manifestPath(const ProjectExplorer::Target *target); - static void setManifestPath(ProjectExplorer::Target *target, const Utils::FilePath &path); - static Utils::FilePath manifestSourcePath(const ProjectExplorer::Target *target); - static Utils::FilePath packagePath(const ProjectExplorer::Target *target); - static bool matchedAbis(const QStringList &deviceAbis, const QStringList &appAbis); - static QString devicePreferredAbi(const QStringList &deviceAbis, const QStringList &appAbis); - static ProjectExplorer::Abi androidAbi2Abi(const QString &androidAbi); - static bool skipInstallationAndPackageSteps(const ProjectExplorer::Target *target); +Utils::FilePath androidBuildDirectory(const ProjectExplorer::Target *target); +Utils::FilePath androidAppProcessDir(const ProjectExplorer::Target *target); +Utils::FilePath buildDirectory(const ProjectExplorer::Target *target); +Utils::FilePath manifestPath(const ProjectExplorer::Target *target); +void setManifestPath(ProjectExplorer::Target *target, const Utils::FilePath &path); +Utils::FilePath manifestSourcePath(const ProjectExplorer::Target *target); +Utils::FilePath packagePath(const ProjectExplorer::Target *target); +bool matchedAbis(const QStringList &deviceAbis, const QStringList &appAbis); +QString devicePreferredAbi(const QStringList &deviceAbis, const QStringList &appAbis); +ProjectExplorer::Abi androidAbi2Abi(const QString &androidAbi); +bool skipInstallationAndPackageSteps(const ProjectExplorer::Target *target); - static QString androidNameForApiLevel(int x); +QString androidNameForApiLevel(int x); - static void installQASIPackage(ProjectExplorer::Target *target, const Utils::FilePath &packagePath); +void installQASIPackage(ProjectExplorer::Target *target, const Utils::FilePath &packagePath); - static bool checkKeystorePassword(const Utils::FilePath &keystorePath, - const QString &keystorePasswd); - static bool checkCertificatePassword(const Utils::FilePath &keystorePath, - const QString &keystorePasswd, - const QString &alias, const QString &certificatePasswd); - static bool checkCertificateExists(const Utils::FilePath &keystorePath, - const QString &keystorePasswd, const QString &alias); +bool checkKeystorePassword(const Utils::FilePath &keystorePath, + const QString &keystorePasswd); +bool checkCertificatePassword(const Utils::FilePath &keystorePath, + const QString &keystorePasswd, + const QString &alias, const QString &certificatePasswd); +bool checkCertificateExists(const Utils::FilePath &keystorePath, + const QString &keystorePasswd, const QString &alias); - static Utils::Process *startAdbProcess(const QStringList &args, QString *err = nullptr); - static SdkToolResult runAdbCommand(const QStringList &args, const QByteArray &writeData = {}, - int timeoutS = 30); +Utils::Process *startAdbProcess(const QStringList &args, QString *err = nullptr); +SdkToolResult runAdbCommand(const QStringList &args, const QByteArray &writeData = {}, + int timeoutS = 30); - static QJsonObject deploymentSettings(const ProjectExplorer::Target *target); - static bool isQtCreatorGenerated(const Utils::FilePath &deploymentFile); - -private: - static SdkToolResult runCommand(const Utils::CommandLine &command, - const QByteArray &writeData = {}, int timeoutS = 30); -}; +QJsonObject deploymentSettings(const ProjectExplorer::Target *target); +bool isQtCreatorGenerated(const Utils::FilePath &deploymentFile); +} // namespace AndroidManager } // namespace Android