diff options
author | Alessandro Portale <alessandro.portale@qt.io> | 2022-11-23 19:42:36 +0100 |
---|---|---|
committer | Alessandro Portale <alessandro.portale@qt.io> | 2022-11-30 10:29:29 +0000 |
commit | 65f27c765a49288d144d177e1a43d7aaed4d347e (patch) | |
tree | 2a2bc48f5eddc2718a6096feb193a13017cf103b | |
parent | d743770493878114c5fe986a8c600f88f3a5c81d (diff) |
Android: FilePath-ify certificate handling
Change-Id: Ic7bf25567ac74555926d105c03cdac5a9e49b5a6
Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
-rw-r--r-- | src/plugins/android/androidbuildapkstep.cpp | 14 | ||||
-rw-r--r-- | src/plugins/android/androidbuildapkstep.h | 2 | ||||
-rw-r--r-- | src/plugins/android/androidmanager.cpp | 17 | ||||
-rw-r--r-- | src/plugins/android/androidmanager.h | 10 |
4 files changed, 25 insertions, 18 deletions
diff --git a/src/plugins/android/androidbuildapkstep.cpp b/src/plugins/android/androidbuildapkstep.cpp index 1cd180efb9..139e35baba 100644 --- a/src/plugins/android/androidbuildapkstep.cpp +++ b/src/plugins/android/androidbuildapkstep.cpp @@ -629,12 +629,12 @@ bool AndroidBuildApkStep::verifyKeystorePassword() return false; } - if (AndroidManager::checkKeystorePassword(m_keystorePath.toString(), m_keystorePasswd)) + if (AndroidManager::checkKeystorePassword(m_keystorePath, m_keystorePasswd)) return true; bool success = false; auto verifyCallback = std::bind(&AndroidManager::checkKeystorePassword, - m_keystorePath.toString(), std::placeholders::_1); + m_keystorePath, std::placeholders::_1); m_keystorePasswd = PasswordInputDialog::getPassword(PasswordInputDialog::KeystorePassword, verifyCallback, "", &success); return success; @@ -642,21 +642,21 @@ bool AndroidBuildApkStep::verifyKeystorePassword() bool AndroidBuildApkStep::verifyCertificatePassword() { - if (!AndroidManager::checkCertificateExists(m_keystorePath.toString(), m_keystorePasswd, - m_certificateAlias)) { + if (!AndroidManager::checkCertificateExists(m_keystorePath, m_keystorePasswd, + m_certificateAlias)) { reportWarningOrError(Tr::tr("Cannot sign the package. Certificate alias %1 does not exist.") .arg(m_certificateAlias), Task::Error); return false; } - if (AndroidManager::checkCertificatePassword(m_keystorePath.toString(), m_keystorePasswd, + if (AndroidManager::checkCertificatePassword(m_keystorePath, m_keystorePasswd, m_certificateAlias, m_certificatePasswd)) { return true; } bool success = false; auto verifyCallback = std::bind(&AndroidManager::checkCertificatePassword, - m_keystorePath.toString(), m_keystorePasswd, + m_keystorePath, m_keystorePasswd, m_certificateAlias, std::placeholders::_1); m_certificatePasswd = PasswordInputDialog::getPassword(PasswordInputDialog::CertificatePassword, @@ -867,7 +867,7 @@ QVariantMap AndroidBuildApkStep::toMap() const return map; } -Utils::FilePath AndroidBuildApkStep::keystorePath() +Utils::FilePath AndroidBuildApkStep::keystorePath() const { return m_keystorePath; } diff --git a/src/plugins/android/androidbuildapkstep.h b/src/plugins/android/androidbuildapkstep.h index c1f4f19efa..1df17d4200 100644 --- a/src/plugins/android/androidbuildapkstep.h +++ b/src/plugins/android/androidbuildapkstep.h @@ -26,7 +26,7 @@ public: QVariantMap toMap() const override; // signing - Utils::FilePath keystorePath(); + Utils::FilePath keystorePath() const; void setKeystorePath(const Utils::FilePath &path); void setKeystorePassword(const QString &pwd); void setCertificateAlias(const QString &alias); diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 9fb2834e1a..35d71e5858 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -570,12 +570,14 @@ void AndroidManager::installQASIPackage(Target *target, const FilePath &packageP Tr::tr("Android package installation failed.\n%1").arg(error)); } -bool AndroidManager::checkKeystorePassword(const QString &keystorePath, const QString &keystorePasswd) +bool AndroidManager::checkKeystorePassword(const FilePath &keystorePath, + const QString &keystorePasswd) { if (keystorePasswd.isEmpty()) return false; const CommandLine cmd(AndroidConfigurations::currentConfig().keytoolPath(), - {"-list", "-keystore", keystorePath, "--storepass", keystorePasswd}); + {"-list", "-keystore", keystorePath.toUserOutput(), + "--storepass", keystorePasswd}); QtcProcess proc; proc.setTimeoutS(10); proc.setCommand(cmd); @@ -583,10 +585,13 @@ bool AndroidManager::checkKeystorePassword(const QString &keystorePath, const QS return proc.result() == ProcessResult::FinishedWithSuccess; } -bool AndroidManager::checkCertificatePassword(const QString &keystorePath, const QString &keystorePasswd, const QString &alias, const QString &certificatePasswd) +bool AndroidManager::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, + QStringList arguments = {"-certreq", "-keystore", keystorePath.toUserOutput(), "--storepass", keystorePasswd, "-alias", alias, "-keypass"}; if (certificatePasswd.isEmpty()) arguments << keystorePasswd; @@ -600,11 +605,11 @@ bool AndroidManager::checkCertificatePassword(const QString &keystorePath, const return proc.result() == ProcessResult::FinishedWithSuccess; } -bool AndroidManager::checkCertificateExists(const QString &keystorePath, +bool AndroidManager::checkCertificateExists(const FilePath &keystorePath, const QString &keystorePasswd, const QString &alias) { // assumes that the keystore password is correct - QStringList arguments = { "-list", "-keystore", keystorePath, + QStringList arguments = { "-list", "-keystore", keystorePath.toUserOutput(), "--storepass", keystorePasswd, "-alias", alias }; QtcProcess proc; diff --git a/src/plugins/android/androidmanager.h b/src/plugins/android/androidmanager.h index 6cbe2c0cf5..ff795ae385 100644 --- a/src/plugins/android/androidmanager.h +++ b/src/plugins/android/androidmanager.h @@ -87,11 +87,13 @@ public: static void installQASIPackage(ProjectExplorer::Target *target, const Utils::FilePath &packagePath); - static bool checkKeystorePassword(const QString &keystorePath, const QString &keystorePasswd); - static bool checkCertificatePassword(const QString &keystorePath, const QString &keystorePasswd, + 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 QString &keystorePath, const QString &keystorePasswd, - const QString &alias); + static bool checkCertificateExists(const Utils::FilePath &keystorePath, + const QString &keystorePasswd, const QString &alias); static bool updateGradleProperties(ProjectExplorer::Target *target, const QString &buildKey); static QProcess *runAdbCommandDetached(const QStringList &args, QString *err = nullptr, |