From 4408a0d06de2ccd712edea064eb0634c00559e37 Mon Sep 17 00:00:00 2001 From: q3b5q3 <40742924+AndnixSH@users.noreply.github.com> Date: Wed, 15 Feb 2023 21:45:59 +0100 Subject: [PATCH] Improve aapt logic, and logs Fix freezing when parsing APK Don't print timer when not necessary --- APKToolGUI/ApkTool/AaptParser.cs | 2 + APKToolGUI/Forms/FormMain.cs | 42 ++++++++++++------- APKToolGUI/Handlers/DragDropHandlers.cs | 4 +- .../Handlers/FrameworkControlEventHandlers.cs | 2 +- .../Handlers/SignControlEventHandlers.cs | 2 +- .../Handlers/ZipalignControlEventHandlers.cs | 2 +- APKToolGUI/Languages/Language.Designer.cs | 9 ++++ APKToolGUI/Languages/Language.resx | 3 ++ 8 files changed, 46 insertions(+), 20 deletions(-) diff --git a/APKToolGUI/ApkTool/AaptParser.cs b/APKToolGUI/ApkTool/AaptParser.cs index fa217d2..c5e2c80 100644 --- a/APKToolGUI/ApkTool/AaptParser.cs +++ b/APKToolGUI/ApkTool/AaptParser.cs @@ -139,6 +139,8 @@ namespace APKToolGUI.Utils result = true; } + else + result = false; return result; } diff --git a/APKToolGUI/Forms/FormMain.cs b/APKToolGUI/Forms/FormMain.cs index 6122003..215a298 100644 --- a/APKToolGUI/Forms/FormMain.cs +++ b/APKToolGUI/Forms/FormMain.cs @@ -195,7 +195,7 @@ namespace APKToolGUI ToLog(ApktoolEventType.Error, Language.ErrorZipalign); }); - Done(); + Done(printTimer: true); break; case "baksmali": if (await Baksmali(file) == 0) @@ -227,17 +227,19 @@ namespace APKToolGUI { if (File.Exists(file)) { + ToLog(ApktoolEventType.None, Language.ParsingApkInfo); + ToStatus(Language.ParsingApkInfo, Resources.waiting); + try { - bool result = false; + bool parsed = false; await Task.Factory.StartNew(() => { aapt = new AaptParser(); - result = aapt.Parse(file); - + parsed = aapt.Parse(file); }); - if (aapt.Parse(file)) + if (parsed) { if (apkIconPicBox.Image != null) { @@ -261,7 +263,10 @@ namespace APKToolGUI if (aapt.AppIcon != null) { - ZipUtils.ExtractFile(file, aapt.AppIcon, Path.Combine(Program.TEMP_PATH, aapt.PackageName)); + await Task.Factory.StartNew(() => + { + ZipUtils.ExtractFile(file, aapt.AppIcon, Path.Combine(Program.TEMP_PATH, aapt.PackageName)); + }); string icon = Path.Combine(Program.TEMP_PATH, aapt.PackageName, Path.GetFileName(aapt.AppIcon)); if (File.Exists(icon)) { @@ -278,6 +283,9 @@ namespace APKToolGUI ToLog(ApktoolEventType.Warning, Language.ErrorGettingApkInfo); #endif } + + ToLog(ApktoolEventType.Done, Language.Done); + Done(); } } #endregion @@ -392,14 +400,18 @@ namespace APKToolGUI })); } - internal void Done() + internal void Done(bool printTimer = false) { isRunning = false; stopwatch.Stop(); TimeSpan ts = stopwatch.Elapsed; - ToLog(ApktoolEventType.None, "Time started: " + lastStartedDate); - ToLog(ApktoolEventType.None, "Time elapsed: " + ts.ToString("mm\\:ss")); + + if (printTimer) + { + ToLog(ApktoolEventType.None, "Time started: " + lastStartedDate); + ToLog(ApktoolEventType.None, "Time elapsed: " + ts.ToString("mm\\:ss")); + } if (Settings.Default.PlaySoundWhenDone) SystemSounds.Beep.Play(); @@ -532,7 +544,7 @@ namespace APKToolGUI ToLog(ApktoolEventType.Error, ex.ToString()); } - Done(); + Done(printTimer: true); return code; } @@ -603,7 +615,7 @@ namespace APKToolGUI if (zipalign.Align(outputFile, outputFile) != 0) { ToLog(ApktoolEventType.Error, Language.ErrorZipalign); - Done(); + Done(printTimer: true); return; } else @@ -645,7 +657,7 @@ namespace APKToolGUI else { ToLog(ApktoolEventType.Error, Language.ErrorSigning); - Done(); + Done(printTimer: true); return; } } @@ -667,7 +679,7 @@ namespace APKToolGUI code = 1; ToLog(ApktoolEventType.Error, ex.Message); } - Done(); + Done(printTimer: true); return code; } @@ -720,7 +732,7 @@ namespace APKToolGUI else ToLog(ApktoolEventType.Error, Language.ErrorDecompiling); }); - Done(); + Done(printTimer: true); } catch (Exception ex) { @@ -772,7 +784,7 @@ namespace APKToolGUI else ToLog(ApktoolEventType.Error, Language.ErrorCompiling); }); - Done(); + Done(printTimer: true); } catch (Exception ex) { diff --git a/APKToolGUI/Handlers/DragDropHandlers.cs b/APKToolGUI/Handlers/DragDropHandlers.cs index fab90ba..7efeaec 100644 --- a/APKToolGUI/Handlers/DragDropHandlers.cs +++ b/APKToolGUI/Handlers/DragDropHandlers.cs @@ -124,7 +124,7 @@ namespace APKToolGUI.Handlers { main.ToLog(ApktoolEventType.Error, ex.Message); } - main.Done(); + main.Done(printTimer: true); } } @@ -170,7 +170,7 @@ namespace APKToolGUI.Handlers { main.ToLog(ApktoolEventType.Error, ex.Message); } - main.Done(); + main.Done(printTimer: true); } } diff --git a/APKToolGUI/Handlers/FrameworkControlEventHandlers.cs b/APKToolGUI/Handlers/FrameworkControlEventHandlers.cs index 3cd90fb..c36a5ce 100644 --- a/APKToolGUI/Handlers/FrameworkControlEventHandlers.cs +++ b/APKToolGUI/Handlers/FrameworkControlEventHandlers.cs @@ -89,7 +89,7 @@ namespace APKToolGUI.Handlers else main.ToLog(ApktoolEventType.Error, Language.FrameworkInstallationNotStarted); }); - main.Done(); + main.Done(printTimer: true); } internal async void clearFwBtn_Click(object sender, EventArgs e) diff --git a/APKToolGUI/Handlers/SignControlEventHandlers.cs b/APKToolGUI/Handlers/SignControlEventHandlers.cs index eaa418b..0b55113 100644 --- a/APKToolGUI/Handlers/SignControlEventHandlers.cs +++ b/APKToolGUI/Handlers/SignControlEventHandlers.cs @@ -149,7 +149,7 @@ namespace APKToolGUI.Handlers { main.ToLog(ApktoolEventType.Error, ex.Message); } - main.Done(); + main.Done(printTimer: true); } internal void selectKeyStoreFileBtn_Click(object sender, EventArgs e) diff --git a/APKToolGUI/Handlers/ZipalignControlEventHandlers.cs b/APKToolGUI/Handlers/ZipalignControlEventHandlers.cs index a857b26..c7f9241 100644 --- a/APKToolGUI/Handlers/ZipalignControlEventHandlers.cs +++ b/APKToolGUI/Handlers/ZipalignControlEventHandlers.cs @@ -108,7 +108,7 @@ namespace APKToolGUI.Handlers { main.ToLog(ApktoolEventType.Error, ex.Message); } - main.Done(); + main.Done(printTimer: true); } internal void alignApkOpenDirBtn_Click(object sender, EventArgs e) diff --git a/APKToolGUI/Languages/Language.Designer.cs b/APKToolGUI/Languages/Language.Designer.cs index 01beabd..832f2cd 100644 --- a/APKToolGUI/Languages/Language.Designer.cs +++ b/APKToolGUI/Languages/Language.Designer.cs @@ -780,6 +780,15 @@ namespace APKToolGUI.Languages { } } + /// + /// Looks up a localized string similar to Parsing APK Info.... + /// + internal static string ParsingApkInfo { + get { + return ResourceManager.GetString("ParsingApkInfo", resourceCulture); + } + } + /// /// Looks up a localized string similar to Removed all ApkTool dummies. /// diff --git a/APKToolGUI/Languages/Language.resx b/APKToolGUI/Languages/Language.resx index 5543ff0..fec0a4c 100644 --- a/APKToolGUI/Languages/Language.resx +++ b/APKToolGUI/Languages/Language.resx @@ -426,4 +426,7 @@ Move temp apk "{0}" to output directory "{1}" + + Parsing APK Info... + \ No newline at end of file