aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/android/androidmanager.cpp
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2020-05-18 16:38:18 +0200
committerhjk <hjk@qt.io>2020-05-19 13:25:48 +0000
commit5b2b8446b239815fae99b055d1a322beef7216e0 (patch)
treef08518b662e363834dee3647a790d9b71bd6caa9 /src/plugins/android/androidmanager.cpp
parentf0fd6282d2c0bc6dd3ad354be5515f585bdce5aa (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.cpp130
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 &regEx) {
- 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 &regEx)
+{
+ 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();