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