From 096c4db896797c5ceb65ba5721b595ad4765ad91 Mon Sep 17 00:00:00 2001 From: BogDan Vatra Date: Sat, 23 Jun 2012 13:18:01 +0300 Subject: [PATCH] Run zipalign tool after android packges is created and signed. Change-Id: Idaeb93490723085b8f5f7cae356fbaee40636f89 Reviewed-by: Daniel Teske --- src/plugins/android/androidconfigurations.cpp | 6 ++++++ src/plugins/android/androidconfigurations.h | 1 + src/plugins/android/androidpackagecreationstep.cpp | 10 ++++++++-- src/plugins/android/androidpackagecreationstep.h | 1 + 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/plugins/android/androidconfigurations.cpp b/src/plugins/android/androidconfigurations.cpp index 633e54daa03..f82eeadf938 100644 --- a/src/plugins/android/androidconfigurations.cpp +++ b/src/plugins/android/androidconfigurations.cpp @@ -390,6 +390,12 @@ Utils::FileName AndroidConfigurations::jarsignerPath() const return openJDKBinPath().appendPath(jarsignerName); } +Utils::FileName AndroidConfigurations::zipalignPath() const +{ + Utils::FileName path = m_config.sdkLocation; + return path.appendPath(QLatin1String("tools/zipalign" ANDROID_EXE_SUFFIX)); +} + QString AndroidConfigurations::getDeployDeviceSerialNumber(int *apiLevel) const { QVector devices = connectedDevices(); diff --git a/src/plugins/android/androidconfigurations.h b/src/plugins/android/androidconfigurations.h index fd5c327face..2f5b8042aba 100644 --- a/src/plugins/android/androidconfigurations.h +++ b/src/plugins/android/androidconfigurations.h @@ -107,6 +107,7 @@ public: Utils::FileName openJDKPath() const; Utils::FileName keytoolPath() const; Utils::FileName jarsignerPath() const; + Utils::FileName zipalignPath() const; Utils::FileName stripPath(ProjectExplorer::Abi::Architecture architecture) const; Utils::FileName readelfPath(ProjectExplorer::Abi::Architecture architecture) const; QString getDeployDeviceSerialNumber(int *apiLevel) const; diff --git a/src/plugins/android/androidpackagecreationstep.cpp b/src/plugins/android/androidpackagecreationstep.cpp index 1d4ba4c30e4..4b8c0087997 100644 --- a/src/plugins/android/androidpackagecreationstep.cpp +++ b/src/plugins/android/androidpackagecreationstep.cpp @@ -175,6 +175,7 @@ bool AndroidPackageCreationStep::init() m_keystorePathForRun = m_keystorePath; m_certificatePasswdForRun = m_certificatePasswd; m_jarSigner = AndroidConfigurations::instance().jarsignerPath(); + m_zipAligner = AndroidConfigurations::instance().zipalignPath(); initCheckRequiredLibrariesForRun(); return true; } @@ -425,7 +426,7 @@ bool AndroidPackageCreationStep::createPackage() << QLatin1String("-storepass") << m_keystorePasswd << m_apkPathUnsigned.toUserOutput() << m_certificateAlias; - buildProc->start(m_jarSigner.toString(), build); //TODO + buildProc->start(m_jarSigner.toString(), build); if (!buildProc->waitForStarted()) { disconnect(buildProc, 0, this, 0); buildProc->deleteLater(); @@ -442,7 +443,12 @@ bool AndroidPackageCreationStep::createPackage() emit addOutput(tr("Failed, try again"), ErrorMessageOutput); m_certificatePasswdForRun.clear(); } - if (QFile::rename(m_apkPathUnsigned.toString(), m_apkPathSigned.toString())) { + build.clear(); + build << QLatin1String("-f") << QLatin1String("-v") << QLatin1String("4") << m_apkPathUnsigned.toString() << m_apkPathSigned.toString(); + buildProc->start(m_zipAligner.toString(), build); + buildProc->waitForFinished(); + if (!buildProc->exitCode()) { + QFile::remove(m_apkPathUnsigned.toString()); emit addOutput(tr("Release signed package created to %1") .arg(m_apkPathSigned.toUserOutput()) , MessageOutput); diff --git a/src/plugins/android/androidpackagecreationstep.h b/src/plugins/android/androidpackagecreationstep.h index 4c530c53af7..4d887ea53e4 100644 --- a/src/plugins/android/androidpackagecreationstep.h +++ b/src/plugins/android/androidpackagecreationstep.h @@ -125,6 +125,7 @@ private: Utils::FileName m_keystorePathForRun; QString m_certificatePasswdForRun; Utils::FileName m_jarSigner; + Utils::FileName m_zipAligner; // more for checkLibraries Utils::FileName m_appPath; Utils::FileName m_readElf;