From 79e8cd2ef9d1b0442c7861b8ffa0c2467b9f4c13 Mon Sep 17 00:00:00 2001 From: AndnixSH <40742924+AndnixSH@users.noreply.github.com> Date: Sun, 3 May 2026 11:56:56 +0200 Subject: [PATCH] Refactor + Add Apktool version checks --- APKToolGUI/ApkTool/Apktool.cs | 250 ++- APKToolGUI/Forms/FormMain.Designer.cs | 5 +- APKToolGUI/Forms/FormMain.cs | 22 +- APKToolGUI/Forms/FormMain.resx | 2704 +++++++++++++------------ 4 files changed, 1547 insertions(+), 1434 deletions(-) diff --git a/APKToolGUI/ApkTool/Apktool.cs b/APKToolGUI/ApkTool/Apktool.cs index b119a3f..9378306 100644 --- a/APKToolGUI/ApkTool/Apktool.cs +++ b/APKToolGUI/ApkTool/Apktool.cs @@ -14,55 +14,118 @@ namespace APKToolGUI public class Apktool : JarProcess, IDisposable { private bool disposed = false; + private static readonly Regex ApktoolVersionRegex = new Regex(@"v?(?\d+\.\d+\.\d+)", RegexOptions.Compiled | RegexOptions.IgnoreCase); + public Version ParsedVersion { get; private set; } + public string Version { get; private set; } - enum ApktoolActionType + public Apktool(string javaPath, string jarPath) : base(javaPath, jarPath) { - Decompile, - Build, - InstallFramework, - ClearFramework, - Null + Exited += Apktool_Exited; + OutputDataReceived += Apktool_OutputDataReceived; + ErrorDataReceived += Apktool_ErrorDataReceived; + + string apktoolVersion = GetVersion(); + string apktoolVersionOld = GetVersionOld(); + if (!String.IsNullOrWhiteSpace(apktoolVersion) && !Regex.IsMatch(apktoolVersion, @"\r\n?|\n")) + Version = apktoolVersion; + else if (!String.IsNullOrWhiteSpace(apktoolVersionOld) && !Regex.IsMatch(apktoolVersionOld, @"\r\n?|\n")) + Version = apktoolVersionOld; + + ParsedVersion = ParseVersion(Version); + + Debug.WriteLine($"[Apktool] Parsed version: {ParsedVersion}"); } static class DecompileKeys { - public const string NoSource = " -s"; //Do not decode sources. - public const string NoResource = " -r"; //Do not decode resources. - public const string NoDebugInfo = " -b"; //don't write out debug info (.local, .param, .line, etc.) - public const string Force = " -f"; //Skip changes detection and build all files. - public const string FrameworkPath = " -p"; //Uses framework files located in . - public const string KeepBrokenResource = " -k"; //Use if there was an error and some resources were dropped - public const string MatchOriginal = " -m"; //Keeps files to closest to original as possible. Prevents rebuild. - public const string OutputDir = " -o"; //The name of folder that gets written. Default is apk.out - public const string OnlyMainClasses = " -only-main-classes"; //Only disassemble the main dex classes (classes[0-9]*.dex) in the root. - public const string ApiLevel = " -api"; //The numeric api-level of the file to generate, e.g. 14 for ICS. - public const string Jobs = " -j"; // Sets the number of threads to use. + //Do not decode sources. + public const string NoSource = " -s"; + + //Do not decode resources. + public const string NoResource = " -r"; + + //don't write out debug info (.local, .param, .line, etc.) + //The -b flag has been removed from APKtool 3.0.1 and later versions, + //but the --no-debug-info flag is supported in all versions. + public const string NoDebugInfo = " --no-debug-info"; + + //Skip changes detection and build all files. + public const string Force = " -f"; + + //Uses framework files located in . + public const string FrameworkPath = " -p"; + + //Use if there was an error and some resources were dropped + public const string KeepBrokenResource = " -k"; + + //Keeps files to closest to original as possible. Prevents rebuild. + public const string MatchOriginal = " -m"; + + //The name of folder that gets written. Default is apk.out + public const string OutputDir = " -o"; + + //Only disassemble the main dex classes (classes[0-9]*.dex) in the root. + public const string OnlyMainClasses = " --only-main-classes"; + + //The numeric api-level of the file to generate, e.g. 14 for ICS. + public const string ApiLevel = " -api"; + + // Sets the number of threads to use. + public const string Jobs = " -j"; } static class BuildKeys { - public const string ForceAll = " -f"; //Skip changes detection and build all files. - public const string CopyOriginal = " -c"; //opies original AndroidManifest.xml and META-INF. See project page for more info. - public const string Aapt = " -a"; //Loads aapt from specified location. - public const string FrameworkPath = " -p"; //Uses framework files located in . - public const string OutputAppPath = " -o"; // The name of apk that gets written. Default is dist/name.apk - public const string NoCrunch = " -nc"; // Disable crunching of resource files during the build step. - public const string ApiLevel = " -api"; //The numeric api-level of the file to generate, e.g. 14 for ICS. - public const string UseAapt2 = " --use-aapt2"; //Upgrades apktool to use experimental aapt2 binary. - public const string NetSecConf = " --net-sec-conf"; //Add a generic Network Security Configuration file in the output APK - public const string Jobs = " -j"; // Sets the number of threads to use. + //Skip changes detection and build all files. + public const string ForceAll = " -f"; + + //opies original AndroidManifest.xml and META-INF. See project page for more info. + public const string CopyOriginal = " -c"; + + //Loads aapt from specified location. + public const string Aapt = " -a"; + + //Uses framework files located in . + public const string FrameworkPath = " -p"; + + // The name of apk that gets written. Default is dist/name.apk + public const string OutputAppPath = " -o"; + + // Disable crunching of resource files during the build step. + public const string NoCrunch = " -nc"; + + //The numeric api-level of the file to generate, e.g. 14 for ICS. + public const string ApiLevel = " -api"; + + //Upgrades apktool to use experimental aapt2 binary. + public const string UseAapt2 = " --use-aapt2"; + + //Add a generic Network Security Configuration file in the output APK + public const string NetSecConf = " --net-sec-conf"; + + // Sets the number of threads to use. + public const string Jobs = " -j"; } static class InstallFrameworkKeys { - public const string FrameDir = " -p"; //Stores framework files into . - public const string Tag = " -t"; //Tag frameworks using . + //Stores framework files into . + public const string FrameDir = " -p"; + + //Tag frameworks using . + public const string Tag = " -t"; } static class EmptyFrameworkKeys { - public const string FrameDir = " -p"; //Stores framework files into . - public const string ForceDelete = " -f"; //Force delete destination directory. + //Stores framework files into . + public const string FrameDir = " -p"; + + //Force delete destination directory. + public const string ForceDelete = " -f"; + + //Include all framework files regardless of tag. (3.0.1+) + public const string All = " -a"; } ApktoolDataReceivedEventHandler onApktoolOutputDataRecieved; @@ -91,15 +154,6 @@ namespace APKToolGUI } } - string _jarPath; - public Apktool(string javaPath, string jarPath) : base(javaPath, jarPath) - { - _jarPath = jarPath; - Exited += Apktool_Exited; - OutputDataReceived += Apktool_OutputDataReceived; - ErrorDataReceived += Apktool_ErrorDataReceived; - } - private void Apktool_ErrorDataReceived(object sender, DataReceivedEventArgs e) { if (onApktoolErrorDataRecieved != null && e.Data != null) @@ -132,7 +186,7 @@ namespace APKToolGUI keyKeepBrokenRes = DecompileKeys.KeepBrokenResource; if (Settings.Default.Decode_MatchOriginal) keyMatchOriginal = DecompileKeys.MatchOriginal; - if (Settings.Default.Decode_OnlyMainClasses && !Settings.Default.Decode_NoSrc) + if (Settings.Default.Decode_OnlyMainClasses && !Settings.Default.Decode_NoSrc && IsVersionAtMost("2.12.1")) onlyMainClasses = DecompileKeys.OnlyMainClasses; if (Settings.Default.Decode_NoDebugInfo) noDebugInfo = DecompileKeys.NoDebugInfo; @@ -148,7 +202,7 @@ namespace APKToolGUI string args = String.Format($"d{keyNoSrc}{keyNoRes}{keyForce}{onlyMainClasses}{noDebugInfo}{keyMatchOriginal}{keyFramePath}{keyKeepBrokenRes}{apiLevel}{jobs}{keyOutputDir} \"{inputPath}\""); - Log.d("Apktool CMD: " + _jarPath + " " + args); + Log.d("Apktool CMD: " + JarPath + " " + args); Start(args); BeginOutputReadLine(); @@ -157,36 +211,6 @@ namespace APKToolGUI return ExitCode; } - public void Cancel() - { - try - { - foreach (var process in Process.GetProcessesByName("java")) - { - using (process) - { - if (process.Id == Id) - { - ProcessUtils.KillAllProcessesSpawnedBy((uint)Id); - process.Kill(); - } - } - } - } - catch (InvalidOperationException ex) - { - Debug.WriteLine($"[Apktool] Process already exited: {ex.Message}"); - } - catch (System.ComponentModel.Win32Exception ex) - { - Debug.WriteLine($"[Apktool] Failed to access process: {ex.Message}"); - } - catch (Exception ex) - { - Debug.WriteLine($"[Apktool] Failed to cancel process: {ex.Message}"); - } - } - public int Build(string inputFolder, string outputFile) { string keyForceAll = null, keyAapt = null, keyCopyOriginal = null, noCrunch = null, keyFramePath = null, keyOutputAppPath = null, apiLevel = null, jobs = null, useAapt2 = null, netSecConf = null; @@ -215,7 +239,7 @@ namespace APKToolGUI string args = String.Format($"b{keyForceAll}{keyAapt}{keyCopyOriginal}{noCrunch}{keyFramePath}{apiLevel}{jobs}{useAapt2}{netSecConf}{keyOutputAppPath} \"{inputFolder}\""); - Log.d("Apktool CMD: " + _jarPath + " " + args); + Log.d("Apktool CMD: " + JarPath + " " + args); Start(args); BeginOutputReadLine(); @@ -236,7 +260,7 @@ namespace APKToolGUI string args = String.Format($"if{keyFrameDir}{keyTag} \"{inputPath}\""); - Log.d("Apktool CMD: " + _jarPath + " " + args); + Log.d("Apktool CMD: " + JarPath + " " + args); Start(args); BeginOutputReadLine(); @@ -254,8 +278,10 @@ namespace APKToolGUI keyFramePath = String.Format("{0} \"{1}\"", DecompileKeys.FrameworkPath, Program.STANDALONE_FRAMEWORK_DIR); string args = String.Format($"empty-framework-dir {EmptyFrameworkKeys.ForceDelete} {keyFramePath}"); + if (IsVersionAtLeast("3.0.1")) + args = String.Format($"clean-frameworks {EmptyFrameworkKeys.All} {keyFramePath}"); - Log.d("Apktool CMD: " + _jarPath + " " + args); + Log.d("Apktool CMD: " + JarPath + " " + args); Start(args); BeginOutputReadLine(); @@ -264,6 +290,41 @@ namespace APKToolGUI return ExitCode; } + public bool IsVersionAtLeast(string minimumVersion) + { + if (String.IsNullOrWhiteSpace(minimumVersion)) + throw new ArgumentException("Minimum version cannot be null or empty.", nameof(minimumVersion)); + + return ParsedVersion.CompareTo(new Version(minimumVersion)) >= 0; + } + + public bool IsVersionAtMost(string maximumVersion) + { + if (String.IsNullOrWhiteSpace(maximumVersion)) + throw new ArgumentException("Maximum version cannot be null or empty.", nameof(maximumVersion)); + + return ParsedVersion.CompareTo(new Version(maximumVersion)) <= 0; + } + + private static Version ParseVersion(string rawVersion) + { + if (String.IsNullOrWhiteSpace(rawVersion)) + return null; + + Match match = ApktoolVersionRegex.Match(rawVersion.Trim()); + if (!match.Success) + return null; + + try + { + return new Version(match.Groups["version"].Value); + } + catch (Exception) + { + return null; + } + } + public string GetVersion() { using (JarProcess apktoolJar = new JarProcess(JavaPath, JarPath)) @@ -288,6 +349,36 @@ namespace APKToolGUI } } + public void Cancel() + { + try + { + foreach (var process in Process.GetProcessesByName("java")) + { + using (process) + { + if (process.Id == Id) + { + ProcessUtils.KillAllProcessesSpawnedBy((uint)Id); + process.Kill(); + } + } + } + } + catch (InvalidOperationException ex) + { + Debug.WriteLine($"[Apktool] Process already exited: {ex.Message}"); + } + catch (System.ComponentModel.Win32Exception ex) + { + Debug.WriteLine($"[Apktool] Failed to access process: {ex.Message}"); + } + catch (Exception ex) + { + Debug.WriteLine($"[Apktool] Failed to cancel process: {ex.Message}"); + } + } + public new void Dispose() { Dispose(true); @@ -401,4 +492,13 @@ namespace APKToolGUI Error, Unknown } + + enum ApktoolActionType + { + Decompile, + Build, + InstallFramework, + ClearFramework, + Null + } } diff --git a/APKToolGUI/Forms/FormMain.Designer.cs b/APKToolGUI/Forms/FormMain.Designer.cs index e983b9b..d833bc9 100644 --- a/APKToolGUI/Forms/FormMain.Designer.cs +++ b/APKToolGUI/Forms/FormMain.Designer.cs @@ -28,6 +28,7 @@ /// private void InitializeComponent() { + this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormMain)); this.tabControlMain = new System.Windows.Forms.TabControl(); this.tabPageMain = new System.Windows.Forms.TabPage(); @@ -242,7 +243,7 @@ this.toolStripStatusLabelStateImage = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStripStatusLabelStateText = new System.Windows.Forms.ToolStripStatusLabel(); this.progressBar = new System.Windows.Forms.ToolStripProgressBar(); - this.contextMenuStripLog = new System.Windows.Forms.ContextMenuStrip(); + this.contextMenuStripLog = new System.Windows.Forms.ContextMenuStrip(this.components); this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.clearLogToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.logTxtBox = new System.Windows.Forms.RichTextBox(); @@ -264,7 +265,7 @@ this.apktoolIssuesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.baksmaliIssuesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolTip1 = new System.Windows.Forms.ToolTip(); + this.toolTip1 = new System.Windows.Forms.ToolTip(this.components); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.tabControlMain.SuspendLayout(); this.tabPageMain.SuspendLayout(); diff --git a/APKToolGUI/Forms/FormMain.cs b/APKToolGUI/Forms/FormMain.cs index 3e278d9..495ef56 100644 --- a/APKToolGUI/Forms/FormMain.cs +++ b/APKToolGUI/Forms/FormMain.cs @@ -704,18 +704,10 @@ namespace APKToolGUI #region Apktool public async void SetApktoolPath() { - apktool.JarPath = Program.APKTOOL_PATH; - if (Settings.Default.UseCustomApktool) - { - apktool.JarPath = Settings.Default.ApktoolPath; - } + InitializeAPKTool(); - string apktoolVersion = apktool.GetVersion(); - string apktoolVersionOld = apktool.GetVersionOld(); - if (!String.IsNullOrWhiteSpace(apktoolVersion) && !Regex.IsMatch(apktoolVersion, @"\r\n?|\n")) - ToLog(ApktoolEventType.None, $"{Language.APKToolVersion} \"{apktoolVersion}\""); - else if (!String.IsNullOrWhiteSpace(apktoolVersionOld) && !Regex.IsMatch(apktoolVersionOld, @"\r\n?|\n")) - ToLog(ApktoolEventType.None, $"{Language.APKToolVersion} \"{apktoolVersionOld}\""); + if (!String.IsNullOrWhiteSpace(apktool.Version)) + ToLog(ApktoolEventType.None, $"{Language.APKToolVersion} \"{apktool.Version}\""); else ToLog(ApktoolEventType.Error, Language.CantDetectApktoolVersion); @@ -1438,13 +1430,9 @@ namespace APKToolGUI if (javaVersion != null) { ToLog(ApktoolEventType.None, javaVersion); - string apktoolVersion = apktool.GetVersion(); - string apktoolVersionOld = apktool.GetVersionOld(); - if (!String.IsNullOrWhiteSpace(apktoolVersion) && !Regex.IsMatch(apktoolVersion, @"\r\n?|\n")) - ToLog(ApktoolEventType.None, $"{Language.APKToolVersion} {apktoolVersion}"); - else if (!String.IsNullOrWhiteSpace(apktoolVersionOld) && !Regex.IsMatch(apktoolVersionOld, @"\r\n?|\n")) - ToLog(ApktoolEventType.None, $"{Language.APKToolVersion} {apktoolVersionOld}"); + if (!String.IsNullOrWhiteSpace(apktool.Version) && !Regex.IsMatch(apktool.Version, @"\r\n?|\n")) + ToLog(ApktoolEventType.None, $"{Language.APKToolVersion} {apktool.Version}"); else ToLog(ApktoolEventType.Error, Language.CantDetectApktoolVersion); diff --git a/APKToolGUI/Forms/FormMain.resx b/APKToolGUI/Forms/FormMain.resx index c464836..2911ce1 100644 --- a/APKToolGUI/Forms/FormMain.resx +++ b/APKToolGUI/Forms/FormMain.resx @@ -350,6 +350,586 @@ True + + 491, 319 + + + 60, 22 + + + 22 + + + decJobsLvlUpDown + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 0 + + + True + + + + NoControl + + + 8, 321 + + + 199, 17 + + + 21 + + + Set the number of threads to use. + + + checkBox3 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 1 + + + True + + + NoControl + + + 8, 295 + + + 320, 17 + + + 20 + + + Don't parse APK info when selecting APK for decompiling + + + checkBox7 + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 2 + + + 491, 18 + + + 60, 22 + + + 14 + + + decApiLvlUpDown + + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 3 + + + True + + + NoControl + + + 8, 20 + + + 283, 17 + + + 13 + + + Set API level of the file to generate, e.g. 14 for ICS. + + + decSetApiLvlChkBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 4 + + + 454, 16 + + + True + + + NoControl + + + 8, 246 + + + 200, 17 + + + 9 + + + Fix ApkTool errors after decompile + + + It will remove extractNativeLibs, useEmbeddedDex, APKTOOL_DUMMY, split related attributes and set sparseResources to false + + + checkBox_DECODE_FixError + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 5 + + + True + + + NoControl + + + 8, 221 + + + 422, 17 + + + 8 + + + Only disassemble the main dex classes (classes[0-9]*.dex) in the root. (<2.12.1) + + + 454, 16 + + + Enable to fix strange ApkTool error + + + checkBox_DECODE_OnlyMainClasses + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 6 + + + Top, Left, Right + + + 282, 165 + + + 1, 1, 1, 1 + + + 236, 22 + + + 5 + + + textBox_DECODE_FrameDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 7 + + + Top, Right + + + NoControl + + + 522, 190 + + + 1, 0, 1, 1 + + + 40, 24 + + + 7 + + + ... + + + button_DECODE_BrowseOutputDirectory + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 8 + + + True + + + NoControl + + + 8, 170 + + + 189, 17 + + + 3 + + + Uses framework files located in: + + + checkBox_DECODE_UseFramework + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 9 + + + Top, Right + + + NoControl + + + 522, 164 + + + 1, 0, 1, 1 + + + 40, 24 + + + 6 + + + ... + + + button_DECODE_BrowseFrameDir + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 10 + + + True + + + NoControl + + + 8, 145 + + + 341, 17 + + + 6 + + + Keeps files to closest to original as possible. Prevents rebuild. + + + checkBox_DECODE_MatchOriginal + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 11 + + + True + + + NoControl + + + 8, 196 + + + 115, 17 + + + 3 + + + Output directory: + + + checkBox_DECODE_OutputDirectory + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 12 + + + Top, Left, Right + + + 282, 191 + + + 1, 1, 1, 1 + + + 236, 22 + + + 4 + + + textBox_DECODE_OutputDirectory + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 13 + + + True + + + NoControl + + + 8, 120 + + + 141, 17 + + + 5 + + + Keep broken resource. + + + checkBox_DECODE_KeepBrokenRes + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 14 + + + True + + + NoControl + + + 8, 45 + + + 148, 17 + + + 2 + + + Do not decode sources. + + + checkBox_DECODE_NoSrc + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 15 + + + True + + + NoControl + + + 8, 95 + + + 202, 17 + + + 4 + + + Force delete destination directory. + + + checkBox_DECODE_Force + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 16 + + + True + + + NoControl + + + 8, 70 + + + 158, 17 + + + 3 + + + Do not decode resources. + + + checkBox_DECODE_NoRes + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 17 + + + True + + + NoControl + + + 8, 270 + + + 295, 17 + + + 12 + + + Don't write out debug info (.local, .param, .line, etc.) + + + checkBox_DECODE_NoDebugInfo + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_DECODE_Options + + + 18 + + + Top + + + 3, 3 + + + 571, 379 + + + 6 + + + Options + groupBox_DECODE_Options @@ -365,7 +945,6 @@ 4, 27 - 3, 3, 3, 3 @@ -393,639 +972,6 @@ True - - 491, 321 - - - 60, 22 - - - 24 - - - comJobsLvlUpDown - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 0 - - - True - - - NoControl - - - 8, 323 - - - 199, 17 - - - 23 - - - Set the number of threads to use. - - - checkBox4 - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 1 - - - True - - - NoControl - - - 8, 172 - - - 376, 17 - - - 20 - - - Add a generic Network Security Configuration file in the output APK - - - checkBox_BUILD_NetSecConf - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 2 - - - True - - - NoControl - - - 8, 273 - - - 403, 17 - - - 19 - - - Use aapt2 (Upgrades apktool to use experimental aapt2 binary.) (< 2.11.1) - - - useAapt2ChkBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 3 - - - 492, 17 - - - 60, 22 - - - 18 - - - buildApiLvlUpDown - - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 4 - - - True - - - NoControl - - - 8, 20 - - - 283, 17 - - - 17 - - - Set API level of the file to generate, e.g. 14 for ICS. - - - buildSetApiLvlChkBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 5 - - - True - - - NoControl - - - 8, 247 - - - 311, 17 - - - 15 - - - Create unsigned APK with original signature after build - - - Only compatible with Core Patch module. Rooted device is required. - - - createUnsignApkChkBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 6 - - - True - - - NoControl - - - 8, 222 - - - 157, 17 - - - 10 - - - Sign after build / zipalign - - - signAfterBuildChkBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 7 - - - True - - - NoControl - - - 8, 197 - - - 125, 17 - - - 10 - - - Zipalign after build - - - zipalignAfterBuildChkBox - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 8 - - - True - - - NoControl - - - 8, 147 - - - 320, 17 - - - 8 - - - Disable crunching of resource files during the build step. - - - checkBox_BUILD_NoCrunch - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 9 - - - Top, Right - - - NoControl - - - 524, 118 - - - 1, 0, 1, 1 - - - 40, 24 - - - 7 - - - ... - - - button_BUILD_BrowseOutputAppPath - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 10 - - - True - - - NoControl - - - 8, 45 - - - 241, 17 - - - 2 - - - Skip changes detection and build all files. - - - checkBox_BUILD_ForceAll - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 11 - - - Top, Right - - - NoControl - - - 524, 92 - - - 1, 0, 1, 1 - - - 40, 24 - - - 7 - - - ... - - - button_BUILD_BrowseFrameDir - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 12 - - - Top, Right - - - NoControl - - - 524, 66 - - - 1, 0, 1, 1 - - - 40, 24 - - - 6 - - - ... - - - button_BUILD_BrowseAaptPath - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 13 - - - True - - - NoControl - - - 8, 122 - - - 135, 17 - - - 3 - - - APK output directory: - - - Output directory will be used for Zipalign and Signing too after compile - - - checkBox_BUILD_OutputAppPath - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 14 - - - True - - - NoControl - - - 8, 298 - - - 313, 17 - - - 3 - - - Copy original AndroidManifest.xml and META-INF folder - - - checkBox_BUILD_CopyOriginal - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 15 - - - Top, Left, Right - - - 287, 119 - - - 1, 1, 1, 1 - - - 232, 22 - - - 4 - - - textBox_BUILD_OutputAppPath - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 16 - - - True - - - NoControl - - - 8, 69 - - - 153, 17 - - - 3 - - - Uses aapt.exe located in: - - - checkBox_BUILD_UseAapt - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 17 - - - Top, Left, Right - - - 287, 67 - - - 1, 1, 1, 1 - - - 232, 22 - - - 5 - - - textBox_BUILD_AaptPath - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 18 - - - Top, Left, Right - - - 287, 93 - - - 1, 1, 1, 1 - - - 232, 22 - - - 4 - - - textBox_BUILD_FrameDir - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 19 - - - True - - - NoControl - - - 8, 96 - - - 189, 17 - - - 3 - - - Uses framework files located in: - - - checkBox_BUILD_UseFramework - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_BUILD_Options - - - 20 - - - Top - - - 0, 0 - - - 577, 358 - - - 9 - - - Options - groupBox_BUILD_Options @@ -4242,822 +4188,903 @@ 0 - - decJobsLvlUpDown + + comJobsLvlUpDown - + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - + 0 - - checkBox3 + + checkBox4 - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - + 1 - - checkBox7 + + checkBox_BUILD_NetSecConf - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - + 2 - - decApiLvlUpDown + + useAapt2ChkBox - - System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - + 3 - - decSetApiLvlChkBox + + buildApiLvlUpDown - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 4 - - - checkBox_DECODE_FixError - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 5 - - - checkBox_DECODE_OnlyMainClasses - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 6 - - - textBox_DECODE_FrameDir - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 7 - - - button_DECODE_BrowseOutputDirectory - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 8 - - - checkBox_DECODE_UseFramework - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 9 - - - button_DECODE_BrowseFrameDir - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 10 - - - checkBox_DECODE_MatchOriginal - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 11 - - - checkBox_DECODE_OutputDirectory - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 12 - - - textBox_DECODE_OutputDirectory - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 13 - - - checkBox_DECODE_KeepBrokenRes - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 14 - - - checkBox_DECODE_NoSrc - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 15 - - - checkBox_DECODE_Force - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 16 - - - checkBox_DECODE_NoRes - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 17 - - - checkBox_DECODE_NoDebugInfo - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 18 - - - Top - - - 3, 3 - - - 571, 379 - - - 6 - - - Options - - - groupBox_DECODE_Options - - - System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - tabPageDecode - - - 0 - - - 491, 319 - - - 60, 22 - - - 22 - - - decJobsLvlUpDown - - + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - - 0 + + 4 - - True + + buildSetApiLvlChkBox - - NoControl - - - 8, 321 - - - 199, 17 - - - 21 - - - Set the number of threads to use. - - - checkBox3 - - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - - 1 + + 5 - - True + + createUnsignApkChkBox - - NoControl + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - 8, 295 + + groupBox_BUILD_Options - - 320, 17 + + 6 - + + signAfterBuildChkBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 7 + + + zipalignAfterBuildChkBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 8 + + + checkBox_BUILD_NoCrunch + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 9 + + + button_BUILD_BrowseOutputAppPath + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 10 + + + checkBox_BUILD_ForceAll + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 11 + + + button_BUILD_BrowseFrameDir + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 12 + + + button_BUILD_BrowseAaptPath + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 13 + + + checkBox_BUILD_OutputAppPath + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 14 + + + checkBox_BUILD_CopyOriginal + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 15 + + + textBox_BUILD_OutputAppPath + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 16 + + + checkBox_BUILD_UseAapt + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 17 + + + textBox_BUILD_AaptPath + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 18 + + + textBox_BUILD_FrameDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 19 + + + checkBox_BUILD_UseFramework + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + 20 - - Don't parse APK info when selecting APK for decompiling + + Top - - checkBox7 + + 0, 0 - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 577, 358 - - groupBox_DECODE_Options + + 9 - - 2 + + Options - - 491, 18 + + groupBox_BUILD_Options - + + System.Windows.Forms.GroupBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + tabPageBuild + + + 0 + + + 491, 321 + + 60, 22 - - 14 + + 24 - - decApiLvlUpDown + + comJobsLvlUpDown - + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - - 3 + + 0 - + True - + NoControl - - 8, 20 + + 8, 323 - - 283, 17 + + 199, 17 - - 13 + + 23 - - Set API level of the file to generate, e.g. 14 for ICS. + + Set the number of threads to use. - - decSetApiLvlChkBox + + checkBox4 - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - - 4 + + 1 - - 454, 16 - - + True - + NoControl - - 8, 246 + + 8, 172 - - 200, 17 + + 376, 17 - - 9 + + 20 - - Fix ApkTool errors after decompile + + Add a generic Network Security Configuration file in the output APK - - It will remove extractNativeLibs, useEmbeddedDex, APKTOOL_DUMMY, split related attributes and set sparseResources to false + + checkBox_BUILD_NetSecConf - - checkBox_DECODE_FixError - - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - - 5 - - - True - - - NoControl - - - 8, 221 - - - 375, 17 - - - 8 - - - Only disassemble the main dex classes (classes[0-9]*.dex) in the root. - - - Enable to fix strange ApkTool error - - - checkBox_DECODE_OnlyMainClasses - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 6 - - - Top, Left, Right - - - 282, 165 - - - 1, 1, 1, 1 - - - 236, 22 - - - 5 - - - textBox_DECODE_FrameDir - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 7 - - - Top, Right - - - NoControl - - - 522, 190 - - - 1, 0, 1, 1 - - - 40, 24 - - - 7 - - - ... - - - button_DECODE_BrowseOutputDirectory - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 8 - - - True - - - NoControl - - - 8, 170 - - - 189, 17 - - - 3 - - - Uses framework files located in: - - - checkBox_DECODE_UseFramework - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 9 - - - Top, Right - - - NoControl - - - 522, 164 - - - 1, 0, 1, 1 - - - 40, 24 - - - 6 - - - ... - - - button_DECODE_BrowseFrameDir - - - System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 10 - - - True - - - NoControl - - - 8, 145 - - - 341, 17 - - - 6 - - - Keeps files to closest to original as possible. Prevents rebuild. - - - checkBox_DECODE_MatchOriginal - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 11 - - - True - - - NoControl - - - 8, 196 - - - 115, 17 - - - 3 - - - Output directory: - - - checkBox_DECODE_OutputDirectory - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 12 - - - Top, Left, Right - - - 282, 191 - - - 1, 1, 1, 1 - - - 236, 22 - - - 4 - - - textBox_DECODE_OutputDirectory - - - System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 13 - - - True - - - NoControl - - - 8, 120 - - - 141, 17 - - - 5 - - - Keep broken resource. - - - checkBox_DECODE_KeepBrokenRes - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 14 - - - True - - - NoControl - - - 8, 45 - - - 148, 17 - - + 2 - - Do not decode sources. - - - checkBox_DECODE_NoSrc - - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - groupBox_DECODE_Options - - - 15 - - + True - + NoControl - - 8, 95 + + 8, 273 - - 202, 17 + + 403, 17 - - 4 + + 19 - - Force delete destination directory. + + Use aapt2 (Upgrades apktool to use experimental aapt2 binary.) (< 2.11.1) - - checkBox_DECODE_Force + + useAapt2ChkBox - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - - 16 - - - True - - - NoControl - - - 8, 70 - - - 158, 17 - - + 3 - - Do not decode resources. + + 492, 17 - - checkBox_DECODE_NoRes + + 60, 22 - - System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + 18 - - groupBox_DECODE_Options + + buildApiLvlUpDown - - 17 + + System.Windows.Forms.NumericUpDown, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + + groupBox_BUILD_Options + + + 4 + + True - + NoControl - - 8, 270 + + 8, 20 - - 295, 17 + + 283, 17 - - 12 + + 17 - - Don't write out debug info (.local, .param, .line, etc.) + + Set API level of the file to generate, e.g. 14 for ICS. - - checkBox_DECODE_NoDebugInfo + + buildSetApiLvlChkBox - + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - groupBox_DECODE_Options + + groupBox_BUILD_Options - + + 5 + + + True + + + NoControl + + + 8, 247 + + + 311, 17 + + + 15 + + + Create unsigned APK with original signature after build + + + Only compatible with Core Patch module. Rooted device is required. + + + createUnsignApkChkBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 6 + + + True + + + NoControl + + + 8, 222 + + + 157, 17 + + + 10 + + + Sign after build / zipalign + + + signAfterBuildChkBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 7 + + + True + + + NoControl + + + 8, 197 + + + 125, 17 + + + 10 + + + Zipalign after build + + + zipalignAfterBuildChkBox + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 8 + + + True + + + NoControl + + + 8, 147 + + + 320, 17 + + + 8 + + + Disable crunching of resource files during the build step. + + + checkBox_BUILD_NoCrunch + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 9 + + + Top, Right + + + NoControl + + + 524, 118 + + + 1, 0, 1, 1 + + + 40, 24 + + + 7 + + + ... + + + button_BUILD_BrowseOutputAppPath + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 10 + + + True + + + NoControl + + + 8, 45 + + + 241, 17 + + + 2 + + + Skip changes detection and build all files. + + + checkBox_BUILD_ForceAll + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 11 + + + Top, Right + + + NoControl + + + 524, 92 + + + 1, 0, 1, 1 + + + 40, 24 + + + 7 + + + ... + + + button_BUILD_BrowseFrameDir + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 12 + + + Top, Right + + + NoControl + + + 524, 66 + + + 1, 0, 1, 1 + + + 40, 24 + + + 6 + + + ... + + + button_BUILD_BrowseAaptPath + + + System.Windows.Forms.Button, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 13 + + + True + + + NoControl + + + 8, 122 + + + 135, 17 + + + 3 + + + APK output directory: + + + Output directory will be used for Zipalign and Signing too after compile + + + checkBox_BUILD_OutputAppPath + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 14 + + + True + + + NoControl + + + 8, 298 + + + 313, 17 + + + 3 + + + Copy original AndroidManifest.xml and META-INF folder + + + checkBox_BUILD_CopyOriginal + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 15 + + + Top, Left, Right + + + 287, 119 + + + 1, 1, 1, 1 + + + 232, 22 + + + 4 + + + textBox_BUILD_OutputAppPath + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 16 + + + True + + + NoControl + + + 8, 69 + + + 153, 17 + + + 3 + + + Uses aapt.exe located in: + + + checkBox_BUILD_UseAapt + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 17 + + + Top, Left, Right + + + 287, 67 + + + 1, 1, 1, 1 + + + 232, 22 + + + 5 + + + textBox_BUILD_AaptPath + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + 18 + + Top, Left, Right + + + 287, 93 + + + 1, 1, 1, 1 + + + 232, 22 + + + 4 + + + textBox_BUILD_FrameDir + + + System.Windows.Forms.TextBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 19 + + + True + + + NoControl + + + 8, 96 + + + 189, 17 + + + 3 + + + Uses framework files located in: + + + checkBox_BUILD_UseFramework + + + System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + groupBox_BUILD_Options + + + 20 + checkBox2 @@ -8730,9 +8757,6 @@ About - - 454, 16 - Fill