diff options
author | hjk <hjk@qt.io> | 2020-05-18 16:38:18 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2020-05-19 13:25:48 +0000 |
commit | 5b2b8446b239815fae99b055d1a322beef7216e0 (patch) | |
tree | f08518b662e363834dee3647a790d9b71bd6caa9 /src/plugins/android/androidmanager.cpp | |
parent | f0fd6282d2c0bc6dd3ad354be5515f585bdce5aa (diff) |
Android: AndroidManager code cosmetics
Change-Id: I228c29fb7dcf5d919bea3633ea235b5ae5a51a42
Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/android/androidmanager.cpp')
-rw-r--r-- | src/plugins/android/androidmanager.cpp | 130 |
1 files changed, 63 insertions, 67 deletions
diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 7174c624b70..04b85d2beb6 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -68,63 +68,59 @@ #include <QRegularExpression> #include <QVersionNumber> -namespace { - const QLatin1String AndroidManifestName("AndroidManifest.xml"); - const QLatin1String AndroidDefaultPropertiesName("project.properties"); - const QLatin1String AndroidDeviceSn("AndroidDeviceSerialNumber"); - const QLatin1String AndroidDeviceAbis("AndroidDeviceAbis"); - const QLatin1String ApiLevelKey("AndroidVersion.ApiLevel"); - const QString packageNameRegEx("(?<token>package: )(.*?)(name=)'(?<target>.*?)'"); - const QString activityRegEx("(?<token>launchable-activity: )(.*?)(name=)'(?<target>.*?)'"); - const QString apkVersionRegEx("(?<token>package: )(.*?)(versionCode=)'(?<target>.*?)'"); - const QString versionCodeRegEx("(?<token>versionCode=)(?<version>\\d*)"); - const QString qtcSignature("This file is generated by QtCreator to be read by androiddeployqt and should not be modified by hand."); - - static Q_LOGGING_CATEGORY(androidManagerLog, "qtc.android.androidManager", QtWarningMsg) - - QString parseAaptOutput(const QString &output, const QString ®Ex) { - const QRegularExpression regRx(regEx, - QRegularExpression::CaseInsensitiveOption | - QRegularExpression::MultilineOption); - QRegularExpressionMatch match = regRx.match(output); - if (match.hasMatch()) - return match.captured("target"); - return QString(); - }; -} // anonymous namespace - - using namespace ProjectExplorer; using namespace Utils; +using namespace Android::Internal; + namespace Android { -using namespace Internal; +const QLatin1String AndroidManifestName("AndroidManifest.xml"); +const QLatin1String AndroidDefaultPropertiesName("project.properties"); +const QLatin1String AndroidDeviceSn("AndroidDeviceSerialNumber"); +const QLatin1String AndroidDeviceAbis("AndroidDeviceAbis"); +const QLatin1String ApiLevelKey("AndroidVersion.ApiLevel"); +const QString packageNameRegEx("(?<token>package: )(.*?)(name=)'(?<target>.*?)'"); +const QString activityRegEx("(?<token>launchable-activity: )(.*?)(name=)'(?<target>.*?)'"); +const QString apkVersionRegEx("(?<token>package: )(.*?)(versionCode=)'(?<target>.*?)'"); +const QString versionCodeRegEx("(?<token>versionCode=)(?<version>\\d*)"); +const QString qtcSignature("This file is generated by QtCreator to be read by androiddeployqt and should not be modified by hand."); + +static Q_LOGGING_CATEGORY(androidManagerLog, "qtc.android.androidManager", QtWarningMsg) + +static QString parseAaptOutput(const QString &output, const QString ®Ex) +{ + const QRegularExpression regRx(regEx, + QRegularExpression::CaseInsensitiveOption | + QRegularExpression::MultilineOption); + QRegularExpressionMatch match = regRx.match(output); + if (match.hasMatch()) + return match.captured("target"); + return QString(); +} class Library { public: - Library() - { level = -1; } - int level; + int level = -1; QStringList dependencies; QString name; }; using LibrariesMap = QMap<QString, Library>; -static bool openXmlFile(QDomDocument &doc, const Utils::FilePath &fileName); -static bool openManifest(ProjectExplorer::Target *target, QDomDocument &doc); +static bool openXmlFile(QDomDocument &doc, const FilePath &fileName); +static bool openManifest(const Target *target, QDomDocument &doc); static int parseMinSdk(const QDomElement &manifestElem); -static const ProjectNode *currentProjectNode(Target *target) +static const ProjectNode *currentProjectNode(const Target *target) { if (RunConfiguration *rc = target->activeRunConfiguration()) return target->project()->findNodeForBuildKey(rc->buildKey()); return nullptr; } -QString AndroidManager::packageName(ProjectExplorer::Target *target) +QString AndroidManager::packageName(const Target *target) { QDomDocument doc; if (!openManifest(target, doc)) @@ -133,7 +129,7 @@ QString AndroidManager::packageName(ProjectExplorer::Target *target) return manifestElem.attribute(QLatin1String("package")); } -QString AndroidManager::packageName(const Utils::FilePath &manifestFile) +QString AndroidManager::packageName(const FilePath &manifestFile) { QDomDocument doc; if (!openXmlFile(doc, manifestFile)) @@ -178,10 +174,10 @@ int AndroidManager::packageVersionCode(const QString &deviceSerial, return -1; } -void AndroidManager::apkInfo(const Utils::FilePath &apkPath, - QString *packageName, - int *version, - QString *activityPath) +void AndroidManager::apkInfo(const FilePath &apkPath, + QString *packageName, + int *version, + QString *activityPath) { SdkToolResult result; result = runAaptCommand({"dump", "badging", apkPath.toString()}); @@ -205,7 +201,7 @@ void AndroidManager::apkInfo(const Utils::FilePath &apkPath, } } -QString AndroidManager::activityName(ProjectExplorer::Target *target) +QString AndroidManager::activityName(const Target *target) { QDomDocument doc; if (!openManifest(target, doc)) @@ -219,7 +215,7 @@ QString AndroidManager::activityName(ProjectExplorer::Target *target) of the kit is returned if the manifest file of the APK cannot be found or parsed. */ -int AndroidManager::minimumSDK(ProjectExplorer::Target *target) +int AndroidManager::minimumSDK(const Target *target) { QDomDocument doc; if (!openXmlFile(doc, AndroidManager::manifestSourcePath(target))) @@ -231,12 +227,12 @@ int AndroidManager::minimumSDK(ProjectExplorer::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 ProjectExplorer::Kit *kit) +int AndroidManager::minimumSDK(const Kit *kit) { int minSDKVersion = -1; QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(kit); if (version && version->targetDeviceTypes().contains(Constants::ANDROID_DEVICE_TYPE)) { - Utils::FilePath stockManifestFilePath = Utils::FilePath::fromUserInput( + FilePath stockManifestFilePath = FilePath::fromUserInput( version->prefix().toString() + "/src/android/templates/AndroidManifest.xml"); QDomDocument doc; if (openXmlFile(doc, stockManifestFilePath)) { @@ -246,7 +242,7 @@ int AndroidManager::minimumSDK(const ProjectExplorer::Kit *kit) return minSDKVersion; } -QString AndroidManager::buildTargetSDK(ProjectExplorer::Target *target) +QString AndroidManager::buildTargetSDK(const Target *target) { if (auto bc = target->activeBuildConfiguration()) { if (auto androidBuildApkStep = bc->buildSteps()->firstOfType<AndroidBuildApkStep>()) @@ -318,23 +314,23 @@ bool AndroidManager::isQtCreatorGenerated(const FilePath &deploymentFile) return QJsonDocument::fromJson(f.readAll()).object()["_description"].toString() == qtcSignature; } -Utils::FilePath AndroidManager::dirPath(const ProjectExplorer::Target *target) +FilePath AndroidManager::dirPath(const Target *target) { if (auto *bc = target->activeBuildConfiguration()) return bc->buildDirectory() / Constants::ANDROID_BUILDDIRECTORY; - return Utils::FilePath(); + return {}; } -Utils::FilePath AndroidManager::apkPath(const ProjectExplorer::Target *target) +FilePath AndroidManager::apkPath(const Target *target) { - QTC_ASSERT(target, return Utils::FilePath()); + QTC_ASSERT(target, return {}); auto bc = target->activeBuildConfiguration(); if (!bc) return {}; auto buildApkStep = bc->buildSteps()->firstOfType<AndroidBuildApkStep>(); if (!buildApkStep) - return Utils::FilePath(); + return {}; QString apkPath("build/outputs/apk/android-build-"); if (buildApkStep->signPackage()) @@ -398,7 +394,7 @@ Abi AndroidManager::androidAbi2Abi(const QString &androidAbi) } } -Utils::FilePath AndroidManager::manifestSourcePath(ProjectExplorer::Target *target) +FilePath AndroidManager::manifestSourcePath(const Target *target) { if (const ProjectNode *node = currentProjectNode(target)) { const QString packageSource @@ -412,7 +408,7 @@ Utils::FilePath AndroidManager::manifestSourcePath(ProjectExplorer::Target *targ return manifestPath(target); } -Utils::FilePath AndroidManager::manifestPath(ProjectExplorer::Target *target) +FilePath AndroidManager::manifestPath(const Target *target) { QVariant manifest = target->namedSettings(AndroidManifestName); if (manifest.isValid()) @@ -425,17 +421,17 @@ void AndroidManager::setManifestPath(Target *target, const FilePath &path) target->setNamedSettings(AndroidManifestName, QVariant::fromValue(path)); } -Utils::FilePath AndroidManager::defaultPropertiesPath(ProjectExplorer::Target *target) +FilePath AndroidManager::defaultPropertiesPath(const Target *target) { return dirPath(target).pathAppended(AndroidDefaultPropertiesName); } -QString AndroidManager::deviceSerialNumber(ProjectExplorer::Target *target) +QString AndroidManager::deviceSerialNumber(const Target *target) { return target->namedSettings(AndroidDeviceSn).toString(); } -void AndroidManager::setDeviceSerialNumber(ProjectExplorer::Target *target, const QString &deviceSerialNumber) +void AndroidManager::setDeviceSerialNumber(Target *target, const QString &deviceSerialNumber) { qCDebug(androidManagerLog) << "Device serial for the target changed" << target->displayName() << deviceSerialNumber; @@ -462,17 +458,17 @@ QString AndroidManager::apkDevicePreferredAbi(const Target *target) return preferredAbi(apkAbis, target); } -void AndroidManager::setDeviceAbis(ProjectExplorer::Target *target, const QStringList &deviceAbis) +void AndroidManager::setDeviceAbis(Target *target, const QStringList &deviceAbis) { target->setNamedSettings(AndroidDeviceAbis, deviceAbis); } -int AndroidManager::deviceApiLevel(ProjectExplorer::Target *target) +int AndroidManager::deviceApiLevel(const Target *target) { return target->namedSettings(ApiLevelKey).toInt(); } -void AndroidManager::setDeviceApiLevel(ProjectExplorer::Target *target, int level) +void AndroidManager::setDeviceApiLevel(Target *target, int level) { qCDebug(androidManagerLog) << "Device API level for the target changed" << target->displayName() << level; @@ -542,7 +538,7 @@ QString AndroidManager::androidNameForApiLevel(int x) case 30: return QLatin1String("Android 11"); default: - return tr("Unknown Android version. API Level: %1").arg(QString::number(x)); + return tr("Unknown Android version. API Level: %1").arg(x); } } @@ -551,7 +547,7 @@ static void raiseError(const QString &reason) QMessageBox::critical(nullptr, AndroidManager::tr("Error creating Android templates."), reason); } -static bool openXmlFile(QDomDocument &doc, const Utils::FilePath &fileName) +static bool openXmlFile(QDomDocument &doc, const FilePath &fileName) { QFile f(fileName.toString()); if (!f.open(QIODevice::ReadOnly)) @@ -564,7 +560,7 @@ static bool openXmlFile(QDomDocument &doc, const Utils::FilePath &fileName) return true; } -static bool openManifest(ProjectExplorer::Target *target, QDomDocument &doc) +static bool openManifest(const Target *target, QDomDocument &doc) { return openXmlFile(doc, AndroidManager::manifestPath(target)); } @@ -583,7 +579,7 @@ static int parseMinSdk(const QDomElement &manifestElem) return 0; } -void AndroidManager::installQASIPackage(ProjectExplorer::Target *target, const QString &packagePath) +void AndroidManager::installQASIPackage(Target *target, const QString &packagePath) { const QStringList appAbis = AndroidManager::applicationAbis(target); if (appAbis.isEmpty()) @@ -616,7 +612,7 @@ bool AndroidManager::checkKeystorePassword(const QString &keystorePath, const QS SynchronousProcess proc; proc.setTimeoutS(10); SynchronousProcessResponse response = proc.run(cmd); - return (response.result == Utils::SynchronousProcessResponse::Finished && response.exitCode == 0); + return (response.result == SynchronousProcessResponse::Finished && response.exitCode == 0); } bool AndroidManager::checkCertificatePassword(const QString &keystorePath, const QString &keystorePasswd, const QString &alias, const QString &certificatePasswd) @@ -712,7 +708,7 @@ static bool mergeGradleProperties(const QString &path, GradleProperties properti } -bool AndroidManager::updateGradleProperties(ProjectExplorer::Target *target, const QString &buildKey) +bool AndroidManager::updateGradleProperties(Target *target, const QString &buildKey) { QtSupport::BaseQtVersion *version = QtSupport::QtKitAspect::qtVersion(target->kit()); if (!version) @@ -770,10 +766,10 @@ bool AndroidManager::updateGradleProperties(ProjectExplorer::Target *target, con return mergeGradleProperties(gradlePropertiesPath, gradleProperties); } -int AndroidManager::findApiLevel(const Utils::FilePath &platformPath) +int AndroidManager::findApiLevel(const FilePath &platformPath) { int apiLevel = -1; - const Utils::FilePath propertiesPath = platformPath / "/source.properties"; + const FilePath propertiesPath = platformPath / "/source.properties"; if (propertiesPath.exists()) { QSettings sdkProperties(propertiesPath.toString(), QSettings::IniFormat); bool validInt = false; @@ -812,13 +808,13 @@ SdkToolResult AndroidManager::runCommand(const CommandLine &command, const QByteArray &writeData, int timeoutS) { Android::SdkToolResult cmdResult; - Utils::SynchronousProcess cmdProc; + SynchronousProcess cmdProc; cmdProc.setTimeoutS(timeoutS); qCDebug(androidManagerLog) << "Running command (sync):" << command.toUserOutput(); SynchronousProcessResponse response = cmdProc.run(command, writeData); cmdResult.m_stdOut = response.stdOut().trimmed(); cmdResult.m_stdErr = response.stdErr().trimmed(); - cmdResult.m_success = response.result == Utils::SynchronousProcessResponse::Finished; + cmdResult.m_success = response.result == SynchronousProcessResponse::Finished; qCDebug(androidManagerLog) << "Running command (sync) finshed:" << command.toUserOutput() << "Success:" << cmdResult.m_success << "Output:" << response.allRawOutput(); |