forked from qt-creator/qt-creator
Android: FilePath-ify certificate handling
Change-Id: Ic7bf25567ac74555926d105c03cdac5a9e49b5a6 Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io> Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
@@ -629,12 +629,12 @@ bool AndroidBuildApkStep::verifyKeystorePassword()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AndroidManager::checkKeystorePassword(m_keystorePath.toString(), m_keystorePasswd))
|
if (AndroidManager::checkKeystorePassword(m_keystorePath, m_keystorePasswd))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
bool success = false;
|
bool success = false;
|
||||||
auto verifyCallback = std::bind(&AndroidManager::checkKeystorePassword,
|
auto verifyCallback = std::bind(&AndroidManager::checkKeystorePassword,
|
||||||
m_keystorePath.toString(), std::placeholders::_1);
|
m_keystorePath, std::placeholders::_1);
|
||||||
m_keystorePasswd = PasswordInputDialog::getPassword(PasswordInputDialog::KeystorePassword,
|
m_keystorePasswd = PasswordInputDialog::getPassword(PasswordInputDialog::KeystorePassword,
|
||||||
verifyCallback, "", &success);
|
verifyCallback, "", &success);
|
||||||
return success;
|
return success;
|
||||||
@@ -642,21 +642,21 @@ bool AndroidBuildApkStep::verifyKeystorePassword()
|
|||||||
|
|
||||||
bool AndroidBuildApkStep::verifyCertificatePassword()
|
bool AndroidBuildApkStep::verifyCertificatePassword()
|
||||||
{
|
{
|
||||||
if (!AndroidManager::checkCertificateExists(m_keystorePath.toString(), m_keystorePasswd,
|
if (!AndroidManager::checkCertificateExists(m_keystorePath, m_keystorePasswd,
|
||||||
m_certificateAlias)) {
|
m_certificateAlias)) {
|
||||||
reportWarningOrError(Tr::tr("Cannot sign the package. Certificate alias %1 does not exist.")
|
reportWarningOrError(Tr::tr("Cannot sign the package. Certificate alias %1 does not exist.")
|
||||||
.arg(m_certificateAlias), Task::Error);
|
.arg(m_certificateAlias), Task::Error);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (AndroidManager::checkCertificatePassword(m_keystorePath.toString(), m_keystorePasswd,
|
if (AndroidManager::checkCertificatePassword(m_keystorePath, m_keystorePasswd,
|
||||||
m_certificateAlias, m_certificatePasswd)) {
|
m_certificateAlias, m_certificatePasswd)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool success = false;
|
bool success = false;
|
||||||
auto verifyCallback = std::bind(&AndroidManager::checkCertificatePassword,
|
auto verifyCallback = std::bind(&AndroidManager::checkCertificatePassword,
|
||||||
m_keystorePath.toString(), m_keystorePasswd,
|
m_keystorePath, m_keystorePasswd,
|
||||||
m_certificateAlias, std::placeholders::_1);
|
m_certificateAlias, std::placeholders::_1);
|
||||||
|
|
||||||
m_certificatePasswd = PasswordInputDialog::getPassword(PasswordInputDialog::CertificatePassword,
|
m_certificatePasswd = PasswordInputDialog::getPassword(PasswordInputDialog::CertificatePassword,
|
||||||
@@ -867,7 +867,7 @@ QVariantMap AndroidBuildApkStep::toMap() const
|
|||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
Utils::FilePath AndroidBuildApkStep::keystorePath()
|
Utils::FilePath AndroidBuildApkStep::keystorePath() const
|
||||||
{
|
{
|
||||||
return m_keystorePath;
|
return m_keystorePath;
|
||||||
}
|
}
|
||||||
|
@@ -26,7 +26,7 @@ public:
|
|||||||
QVariantMap toMap() const override;
|
QVariantMap toMap() const override;
|
||||||
|
|
||||||
// signing
|
// signing
|
||||||
Utils::FilePath keystorePath();
|
Utils::FilePath keystorePath() const;
|
||||||
void setKeystorePath(const Utils::FilePath &path);
|
void setKeystorePath(const Utils::FilePath &path);
|
||||||
void setKeystorePassword(const QString &pwd);
|
void setKeystorePassword(const QString &pwd);
|
||||||
void setCertificateAlias(const QString &alias);
|
void setCertificateAlias(const QString &alias);
|
||||||
|
@@ -570,12 +570,14 @@ void AndroidManager::installQASIPackage(Target *target, const FilePath &packageP
|
|||||||
Tr::tr("Android package installation failed.\n%1").arg(error));
|
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())
|
if (keystorePasswd.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
const CommandLine cmd(AndroidConfigurations::currentConfig().keytoolPath(),
|
const CommandLine cmd(AndroidConfigurations::currentConfig().keytoolPath(),
|
||||||
{"-list", "-keystore", keystorePath, "--storepass", keystorePasswd});
|
{"-list", "-keystore", keystorePath.toUserOutput(),
|
||||||
|
"--storepass", keystorePasswd});
|
||||||
QtcProcess proc;
|
QtcProcess proc;
|
||||||
proc.setTimeoutS(10);
|
proc.setTimeoutS(10);
|
||||||
proc.setCommand(cmd);
|
proc.setCommand(cmd);
|
||||||
@@ -583,10 +585,13 @@ bool AndroidManager::checkKeystorePassword(const QString &keystorePath, const QS
|
|||||||
return proc.result() == ProcessResult::FinishedWithSuccess;
|
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
|
// assumes that the keystore password is correct
|
||||||
QStringList arguments = {"-certreq", "-keystore", keystorePath,
|
QStringList arguments = {"-certreq", "-keystore", keystorePath.toUserOutput(),
|
||||||
"--storepass", keystorePasswd, "-alias", alias, "-keypass"};
|
"--storepass", keystorePasswd, "-alias", alias, "-keypass"};
|
||||||
if (certificatePasswd.isEmpty())
|
if (certificatePasswd.isEmpty())
|
||||||
arguments << keystorePasswd;
|
arguments << keystorePasswd;
|
||||||
@@ -600,11 +605,11 @@ bool AndroidManager::checkCertificatePassword(const QString &keystorePath, const
|
|||||||
return proc.result() == ProcessResult::FinishedWithSuccess;
|
return proc.result() == ProcessResult::FinishedWithSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AndroidManager::checkCertificateExists(const QString &keystorePath,
|
bool AndroidManager::checkCertificateExists(const FilePath &keystorePath,
|
||||||
const QString &keystorePasswd, const QString &alias)
|
const QString &keystorePasswd, const QString &alias)
|
||||||
{
|
{
|
||||||
// assumes that the keystore password is correct
|
// assumes that the keystore password is correct
|
||||||
QStringList arguments = { "-list", "-keystore", keystorePath,
|
QStringList arguments = { "-list", "-keystore", keystorePath.toUserOutput(),
|
||||||
"--storepass", keystorePasswd, "-alias", alias };
|
"--storepass", keystorePasswd, "-alias", alias };
|
||||||
|
|
||||||
QtcProcess proc;
|
QtcProcess proc;
|
||||||
|
@@ -87,11 +87,13 @@ public:
|
|||||||
|
|
||||||
static void installQASIPackage(ProjectExplorer::Target *target, const Utils::FilePath &packagePath);
|
static void installQASIPackage(ProjectExplorer::Target *target, const Utils::FilePath &packagePath);
|
||||||
|
|
||||||
static bool checkKeystorePassword(const QString &keystorePath, const QString &keystorePasswd);
|
static bool checkKeystorePassword(const Utils::FilePath &keystorePath,
|
||||||
static bool checkCertificatePassword(const QString &keystorePath, const QString &keystorePasswd,
|
const QString &keystorePasswd);
|
||||||
|
static bool checkCertificatePassword(const Utils::FilePath &keystorePath,
|
||||||
|
const QString &keystorePasswd,
|
||||||
const QString &alias, const QString &certificatePasswd);
|
const QString &alias, const QString &certificatePasswd);
|
||||||
static bool checkCertificateExists(const QString &keystorePath, const QString &keystorePasswd,
|
static bool checkCertificateExists(const Utils::FilePath &keystorePath,
|
||||||
const QString &alias);
|
const QString &keystorePasswd, const QString &alias);
|
||||||
static bool updateGradleProperties(ProjectExplorer::Target *target, const QString &buildKey);
|
static bool updateGradleProperties(ProjectExplorer::Target *target, const QString &buildKey);
|
||||||
|
|
||||||
static QProcess *runAdbCommandDetached(const QStringList &args, QString *err = nullptr,
|
static QProcess *runAdbCommandDetached(const QStringList &args, QString *err = nullptr,
|
||||||
|
Reference in New Issue
Block a user