summaryrefslogtreecommitdiffstats
path: root/src/tools/androiddeployqt/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/androiddeployqt/main.cpp')
-rw-r--r--src/tools/androiddeployqt/main.cpp60
1 files changed, 42 insertions, 18 deletions
diff --git a/src/tools/androiddeployqt/main.cpp b/src/tools/androiddeployqt/main.cpp
index 2d660ff844..4a476cd065 100644
--- a/src/tools/androiddeployqt/main.cpp
+++ b/src/tools/androiddeployqt/main.cpp
@@ -2788,28 +2788,52 @@ bool signPackage(const Options &options)
}
}
- zipAlignTool = QLatin1String("%1%2 -f 4 %3 %4")
+ auto zipalignRunner = [](const QString &zipAlignCommandLine) {
+ FILE *zipAlignCommand = openProcess(zipAlignCommandLine);
+ if (zipAlignCommand == 0) {
+ fprintf(stderr, "Couldn't run zipalign.\n");
+ return false;
+ }
+
+ char buffer[512];
+ while (fgets(buffer, sizeof(buffer), zipAlignCommand) != 0)
+ fprintf(stdout, "%s", buffer);
+
+ return pclose(zipAlignCommand) == 0;
+ };
+
+ const QString verifyZipAlignCommandLine = QLatin1String("%1%2 -c 4 %3")
.arg(shellQuote(zipAlignTool),
options.verbose ? QLatin1String(" -v") : QLatin1String(),
- packagePath(options, UnsignedAPK),
- packagePath(options, SignedAPK));
+ packagePath(options, UnsignedAPK));
- FILE *zipAlignCommand = openProcess(zipAlignTool);
- if (zipAlignCommand == 0) {
- fprintf(stderr, "Couldn't run zipalign.\n");
- return false;
- }
+ if (zipalignRunner(verifyZipAlignCommandLine)) {
+ if (options.verbose)
+ fprintf(stdout, "APK already aligned, copying it for signing.\n");
- char buffer[512];
- while (fgets(buffer, sizeof(buffer), zipAlignCommand) != 0)
- fprintf(stdout, "%s", buffer);
+ if (QFile::exists(packagePath(options, SignedAPK)))
+ QFile::remove(packagePath(options, SignedAPK));
- int errorCode = pclose(zipAlignCommand);
- if (errorCode != 0) {
- fprintf(stderr, "zipalign command failed.\n");
- if (!options.verbose)
- fprintf(stderr, " -- Run with --verbose for more information.\n");
- return false;
+ if (!QFile::copy(packagePath(options, UnsignedAPK), packagePath(options, SignedAPK))) {
+ fprintf(stderr, "Could not copy unsigned APK.\n");
+ return false;
+ }
+ } else {
+ if (options.verbose)
+ fprintf(stdout, "APK not aligned, aligning it for signing.\n");
+
+ const QString zipAlignCommandLine = QLatin1String("%1%2 -f 4 %3 %4")
+ .arg(shellQuote(zipAlignTool),
+ options.verbose ? QLatin1String(" -v") : QLatin1String(),
+ packagePath(options, UnsignedAPK),
+ packagePath(options, SignedAPK));
+
+ if (!zipalignRunner(zipAlignCommandLine)) {
+ fprintf(stderr, "zipalign command failed.\n");
+ if (!options.verbose)
+ fprintf(stderr, " -- Run with --verbose for more information.\n");
+ return false;
+ }
}
QString apkSignerCommandLine = QLatin1String("%1 sign --ks %2")
@@ -2841,7 +2865,7 @@ bool signPackage(const Options &options)
while (fgets(buffer, sizeof(buffer), apkSignerCommand) != 0)
fprintf(stdout, "%s", buffer);
- errorCode = pclose(apkSignerCommand);
+ int errorCode = pclose(apkSignerCommand);
if (errorCode != 0) {
fprintf(stderr, "apksigner command failed.\n");
if (!options.verbose)