31 Commits

Author SHA1 Message Date
AndnixSH ee0fa89598 Implemented dark theme (#5)
Not really perfect, the tabs look quite ugly and the scrollbars still write, but 95% of the controls are dark. I will probably try to add custom tabcontrol and scrollbars. Why not :D
2023-05-09 17:51:38 +02:00
AndnixSH ab629c24f3 Added View APK info in context menu #9 2023-05-08 15:28:24 +02:00
AndnixSH a45b671961 Fixed attempting to install APK even it's disabled 2023-05-08 10:39:47 +02:00
AndnixSH 7725d3c28c Update changelog.txt 2023-03-27 10:44:34 +02:00
AndnixSH 041a70daa4 Remove libaapt2_jni.dll requirement 2023-03-27 10:24:21 +02:00
AndnixSH 6a00b05eb4 Update resources 2023-03-27 10:23:38 +02:00
AndnixSH 9a66346312 Update Image.png 2023-03-27 10:00:58 +02:00
AndnixSH cff11abfb3 Make log output read only 2023-03-27 09:58:25 +02:00
AndnixSH 3ba67d54dd Update changelog.txt 2023-03-27 09:52:06 +02:00
AndnixSH 835037d137 Update AssemblyInfo.cs 2023-03-27 09:47:14 +02:00
AndnixSH d1c583e5df Updated dependencies 2023-03-27 09:43:45 +02:00
AndnixSH 3f20b9c9ca Update issue template and README 2023-03-26 19:12:19 +02:00
AndnixSH 37c71f0d57 Update README.md 2023-03-23 16:00:37 +01:00
AndnixSH a193ababbc Update README.md 2023-03-23 15:54:13 +01:00
AndnixSH b89e192fe5 Update README.md 2023-03-23 15:51:16 +01:00
AndnixSH fb896c07d0 Update README.md 2023-03-23 15:50:40 +01:00
AndnixSH 91ac7c6c47 Add video 2023-03-23 15:49:10 +01:00
AndnixSH e965173b14 Merge pull request #7 from gidano/master
Update Hungarian language file
2023-03-23 15:35:34 +01:00
AndnixSH 99378f935e Merge pull request #8 from nibred/master
Update russian language file
2023-03-23 15:35:19 +01:00
AndnixSH b7f208aaff Remove FormMain.ru-RU.resx. I'll keep FormMain.ru.resx 2023-03-23 15:34:23 +01:00
AndnixSH 3e696f0da6 Update 2023-03-23 15:33:24 +01:00
AndnixSH 3440e4748f Delete apkaio.ico 2023-03-23 15:30:10 +01:00
AndnixSH 2fbc34af87 Update 2023-03-23 12:54:29 +01:00
AndnixSH 74ceb1267d Just testing language 2023-03-23 12:33:59 +01:00
AndnixSH 18f0d94f47 Update feature_request.yml 2023-03-23 11:54:59 +01:00
AndnixSH e81e7de8fe Force delete output path in temp folder 2023-03-23 11:53:58 +01:00
AndnixSH ee39be3fcc Finally, found a way to avoid slow down when outputting APKEditor progress 2023-03-23 11:51:09 +01:00
nibred 0c0b27c1a0 Update russian language file 2023-03-17 15:42:32 +01:00
gidano d6f4f3743b Update Hungarian language file 2023-03-16 15:43:26 +01:00
AndnixSH ddc3df3fec Revert "Update changelog.txt"
This reverts commit 4a63101537.
2023-03-13 17:26:11 +01:00
AndnixSH 4a63101537 Update changelog.txt 2023-03-13 16:49:33 +01:00
38 changed files with 1642 additions and 3034 deletions
+2
View File
@@ -17,6 +17,8 @@ body:
required: true
- label: I have tried to decompile and compile without changing anything.
required: true
- label: I have read the [FAQ](https://github.com/AndnixSH/APKToolGUI#faq)
required: true
- label: I have checked using [APKiD](https://github.com/rednaga/APKiD) and verified that the app does not have protection(s) like packer, obfuscation, anti-tamper, anti-cheats etc
required: false
+1 -1
View File
@@ -11,7 +11,7 @@ body:
required: true
- label: I performed a cursory search of the issue tracker on [APK Tool GUI](https://github.com/AndnixSH/APKToolGUI/issues?q=is%3Aissue) to avoid opening a duplicate issue
required: true
- label: This is not about an issue with APK Tool GUI
- label: I have read the [FAQ](https://github.com/AndnixSH/APKToolGUI#faq)
required: true
- type: textarea
+11 -4
View File
@@ -81,6 +81,9 @@
<HintPath>..\packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll</HintPath>
</Reference>
<Reference Include="CustomMarshalers" />
<Reference Include="DarkNet, Version=2.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\DarkNet.2.2.0\lib\net452\DarkNet.dll</HintPath>
</Reference>
<Reference Include="DotNetZip, Version=1.16.0.0, Culture=neutral, PublicKeyToken=6583c7c814667745, processorArchitecture=MSIL">
<HintPath>..\packages\DotNetZip.1.16.0\lib\net40\DotNetZip.dll</HintPath>
</Reference>
@@ -101,6 +104,9 @@
<Reference Include="Ookii.Dialogs.WinForms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=66aa232afad40158, processorArchitecture=MSIL">
<HintPath>..\packages\Ookii.Dialogs.WinForms.4.0.0\lib\net462\Ookii.Dialogs.WinForms.dll</HintPath>
</Reference>
<Reference Include="OSVersionExt, Version=2.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\OSVersionExt.2.0.0\lib\net462\OSVersionExt.dll</HintPath>
</Reference>
<Reference Include="PortableSettingsProvider, Version=0.2.4.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\PortableSettingsProvider.0.2.4\lib\net45\PortableSettingsProvider.dll</HintPath>
</Reference>
@@ -127,8 +133,8 @@
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Design" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=7.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.7.0.1\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
<Reference Include="System.Diagnostics.DiagnosticSource, Version=7.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.7.0.2\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
</Reference>
<Reference Include="System.Diagnostics.Tracing, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.Tracing.4.3.0\lib\net462\System.Diagnostics.Tracing.dll</HintPath>
@@ -317,6 +323,7 @@
<Compile Include="Handlers\SignControlEventHandlers.cs" />
<Compile Include="Handlers\SmaliControlEventHandlers.cs" />
<Compile Include="Handlers\ZipalignControlEventHandlers.cs" />
<Compile Include="Controls\DarkTheme.cs" />
<Compile Include="Utils\AdminUtils.cs" />
<Compile Include="Utils\BitmapUtils.cs" />
<Compile Include="Utils\CMD.cs" />
@@ -455,16 +462,16 @@
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets'))" />
<Error Condition="!Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets'))" />
<Error Condition="!Exists('..\packages\Fody.6.6.4\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.6.4\build\Fody.targets'))" />
<Error Condition="!Exists('..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props'))" />
<Error Condition="!Exists('..\packages\Fody.6.7.0\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.7.0\build\Fody.targets'))" />
</Target>
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.targets')" />
<Import Project="..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
<Import Project="..\packages\Fody.6.6.4\build\Fody.targets" Condition="Exists('..\packages\Fody.6.6.4\build\Fody.targets')" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<Import Project="..\packages\Fody.6.7.0\build\Fody.targets" Condition="Exists('..\packages\Fody.6.7.0\build\Fody.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
+2 -2
View File
@@ -16,7 +16,7 @@ namespace APKToolGUI
{
base.Exited += ApkEditor_Exited;
OutputDataReceived += ApkEditor_OutputDataReceived;
//ErrorDataReceived += ApkEditor_ErrorDataReceived; //Output makes process way slower
ErrorDataReceived += ApkEditor_ErrorDataReceived; //Output makes process way slower
}
ApkEditorDataReceivedEventHandler onApkEditorOutputDataRecieved;
@@ -84,7 +84,7 @@ namespace APKToolGUI
string inputFile = String.Format("-i \"{0}\"", input);
string keyOutputDir = String.Format("-o \"{0}\"", output);
string args = String.Format("m {0} {1}", inputFile, keyOutputDir);
string args = String.Format("m {0} {1} -f", inputFile, keyOutputDir);
Start(args);
+224
View File
@@ -0,0 +1,224 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls.Primitives;
using System.Windows.Forms;
namespace APKToolGUI.Controls
{
internal class DarkTheme
{
static Color bgColor = Color.FromArgb(32, 32, 32);
static Color txtBoxColor = Color.FromArgb(64, 64, 64);
static Color btnColor = Color.FromArgb(51, 51, 51);
static Color btnBorderColor = Color.FromArgb(155, 155, 155);
static Color tabBorderColor = Color.FromArgb(45, 45, 45);
static Color menuItemHoverColor = Color.FromArgb(51, 51, 51);
static Color menuItemSelectedColor = Color.FromArgb(41, 41, 41);
public static void SetTheme(Control.ControlCollection container, Form form)
{
form.BackColor = bgColor;
form.ForeColor = Color.White;
foreach (Control component in container)
{
Debug.WriteLine(component.GetType());
component.BackColor = bgColor;
component.ForeColor = Color.White;
SetThemeTabControl(component);
}
}
public static void SetThemeTabControl(Control component)
{
if (component is TabControl)
{
((TabControl)component).DrawMode = TabDrawMode.OwnerDrawFixed;
foreach (Control tabControl in component.Controls)
{
SetThemeTabControl(tabControl);
Debug.WriteLine("tabPage " + tabControl.GetType());
((TabControl)component).DrawItem += (sender, e) =>
{
// Set Border header
e.Graphics.FillRectangle(new SolidBrush(tabBorderColor), e.Bounds);
Rectangle paddedBounds = e.Bounds;
paddedBounds.Inflate(0, 0);
// Set the rectangle for the tab button
Rectangle tabRect = ((TabControl)component).GetTabRect(e.Index);
// Draw the border color
using (Pen borderPen = new Pen(tabBorderColor, 7))
{
e.Graphics.DrawRectangle(borderPen, tabRect);
}
StringFormat stringFlags = new StringFormat();
stringFlags.Alignment = StringAlignment.Center;
stringFlags.LineAlignment = StringAlignment.Center;
e.Graphics.DrawString(((TabControl)component).TabPages[e.Index].Text, FormMain.Instance.Font, SystemBrushes.HighlightText, tabRect, stringFlags);
//set Tabcontrol border
Graphics g = e.Graphics;
Pen p = new Pen(tabBorderColor, 8);
g.DrawRectangle(p, tabControl.Bounds.X, tabControl.Bounds.Y, tabControl.Bounds.Width, tabControl.Bounds.Height);
SolidBrush fillbrush = new SolidBrush(bgColor);
//draw rectangle behind the tabs
Rectangle lasttabrect = ((TabControl)component).GetTabRect(((TabControl)component).TabPages.Count - 1);
Rectangle background = new Rectangle();
background.Location = new Point(lasttabrect.Right, 0);
//pad the rectangle to cover the 1 pixel line between the top of the tabpage and the start of the tabs
background.Size = new Size(((TabControl)component).Right - background.Left, lasttabrect.Height + 1);
e.Graphics.FillRectangle(fillbrush, background);
};
foreach (Control tabPage in tabControl.Controls)
{
SetThemeTabControl(tabPage);
}
}
}
else if (component is Panel)
{
foreach (Control control in component.Controls)
{
SetThemeTabControl(control);
}
component.BackColor = bgColor;
component.ForeColor = Color.White;
}
if (component is MenuStrip menuStrip)
{
((MenuStrip)component).Renderer = new ToolStripProfessionalRenderer(new MenuItemColorTable());
foreach (ToolStripItem item in menuStrip.Items)
{
if (item is ToolStripMenuItem toolStripMenuItem)
{
foreach (ToolStripMenuItem dditem in toolStripMenuItem.DropDownItems)
{
dditem.BackColor = bgColor;
dditem.ForeColor = Color.White;
Debug.WriteLine(dditem.Text);
}
toolStripMenuItem.BackColor = bgColor;
toolStripMenuItem.ForeColor = Color.White;
}
}
}
else if (component is GroupBox)
{
foreach (Control control in component.Controls)
{
SetThemeTabControl(control);
}
component.BackColor = bgColor;
component.ForeColor = Color.White;
}
else if (component is ComboBox)
{
component.BackColor = bgColor;
component.ForeColor = Color.White;
((ComboBox)component).FlatStyle = FlatStyle.Flat;
}
else if (component is Button)
{
component.BackColor = btnColor;
component.ForeColor = Color.White;
((Button)component).FlatStyle = FlatStyle.Flat;
((Button)component).FlatAppearance.BorderColor = btnBorderColor;
}
else if (component is TextBox)
{
foreach (Control panel in component.Controls)
{
SetThemeTabControl(panel);
}
component.BackColor = txtBoxColor;
component.ForeColor = Color.White;
((TextBox)component).BorderStyle = BorderStyle.FixedSingle;
}
else if (component is RichTextBox)
{
((RichTextBox)component).BorderStyle = BorderStyle.None;
component.BackColor = bgColor;
component.ForeColor = Color.White;
}
else
{
component.BackColor = bgColor;
component.ForeColor = Color.White;
}
}
public class MenuItemColorTable : ProfessionalColorTable
{
public override Color ImageMarginGradientBegin
{
get { return bgColor; }
}
public override Color ImageMarginGradientEnd
{
get { return bgColor; }
}
public override Color ToolStripDropDownBackground
{
get { return bgColor; }
}
public override Color MenuItemSelected
{
get { return menuItemHoverColor; }
}
public override Color MenuBorder
{
get { return menuItemHoverColor; }
}
public override Color MenuItemBorder
{
get { return menuItemHoverColor; }
}
public override Color MenuItemSelectedGradientBegin
{
get { return menuItemSelectedColor; }
}
public override Color MenuItemSelectedGradientEnd
{
get { return menuItemSelectedColor; }
}
public override Color MenuItemPressedGradientBegin
{
get { return menuItemSelectedColor; }
}
public override Color MenuItemPressedGradientEnd
{
get { return menuItemSelectedColor; }
}
}
}
}
+1
View File
@@ -90,6 +90,7 @@
// linkLabel1
//
resources.ApplyResources(this.linkLabel1, "linkLabel1");
this.linkLabel1.LinkColor = System.Drawing.Color.DodgerBlue;
this.linkLabel1.Name = "linkLabel1";
this.linkLabel1.TabStop = true;
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
+6 -1
View File
@@ -1,4 +1,5 @@
using System;
using APKToolGUI.Controls;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
@@ -13,6 +14,10 @@ namespace APKToolGUI
public FormAboutBox()
{
InitializeComponent();
if (Program.IsDarkTheme())
DarkTheme.SetTheme(Controls, this);
this.Text = String.Format("{0} {1}", this.Text, AssemblyTitle);
this.labelProductName.Text = AssemblyProduct;
this.labelVersion.Text = String.Format("{0} {1}", labelVersion.Text, AssemblyVersion);
+13 -11
View File
@@ -235,7 +235,7 @@
this.statusStrip1 = new System.Windows.Forms.StatusStrip();
this.toolStripStatusLabelStateImage = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripStatusLabelStateText = new System.Windows.Forms.ToolStripStatusLabel();
this.toolStripProgressBar1 = new System.Windows.Forms.ToolStripProgressBar();
this.progressBar = new System.Windows.Forms.ToolStripProgressBar();
this.contextMenuStripLog = new System.Windows.Forms.ContextMenuStrip(this.components);
this.copyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.clearLogToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -302,6 +302,7 @@
this.tabControlMain.Controls.Add(this.tabPageAdb);
this.tabControlMain.Name = "tabControlMain";
this.tabControlMain.SelectedIndex = 0;
this.tabControlMain.SelectedIndexChanged += new System.EventHandler(this.tabControlMain_SelectedIndexChanged);
//
// tabPageMain
//
@@ -1863,7 +1864,7 @@
this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.toolStripStatusLabelStateImage,
this.toolStripStatusLabelStateText,
this.toolStripProgressBar1});
this.progressBar});
resources.ApplyResources(this.statusStrip1, "statusStrip1");
this.statusStrip1.Name = "statusStrip1";
this.statusStrip1.SizingGrip = false;
@@ -1883,14 +1884,14 @@
this.toolStripStatusLabelStateText.Spring = true;
this.toolStripStatusLabelStateText.Click += new System.EventHandler(this.toolStripStatusLabelStateText_Click);
//
// toolStripProgressBar1
// progressBar
//
this.toolStripProgressBar1.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
resources.ApplyResources(this.toolStripProgressBar1, "toolStripProgressBar1");
this.toolStripProgressBar1.MarqueeAnimationSpeed = 30;
this.toolStripProgressBar1.Name = "toolStripProgressBar1";
this.toolStripProgressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
this.toolStripProgressBar1.Click += new System.EventHandler(this.toolStripProgressBar1_Click);
this.progressBar.Alignment = System.Windows.Forms.ToolStripItemAlignment.Right;
resources.ApplyResources(this.progressBar, "progressBar");
this.progressBar.MarqueeAnimationSpeed = 30;
this.progressBar.Name = "progressBar";
this.progressBar.Style = System.Windows.Forms.ProgressBarStyle.Continuous;
this.progressBar.Click += new System.EventHandler(this.toolStripProgressBar1_Click);
//
// contextMenuStripLog
//
@@ -1915,9 +1916,10 @@
//
this.logTxtBox.ContextMenuStrip = this.contextMenuStripLog;
resources.ApplyResources(this.logTxtBox, "logTxtBox");
this.logTxtBox.HideSelection = false;
this.logTxtBox.Name = "logTxtBox";
this.logTxtBox.ReadOnly = true;
this.logTxtBox.TabStop = false;
this.logTxtBox.TextChanged += new System.EventHandler(this.logTxtBox_TextChanged);
//
// menuStrip1
//
@@ -2076,7 +2078,7 @@
internal System.Windows.Forms.TabPage tabPageZipAlign;
internal System.Windows.Forms.StatusStrip statusStrip1;
internal System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateText;
internal System.Windows.Forms.ToolStripProgressBar toolStripProgressBar1;
internal System.Windows.Forms.ToolStripProgressBar progressBar;
internal System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabelStateImage;
internal System.Windows.Forms.ContextMenuStrip contextMenuStripLog;
internal System.Windows.Forms.ToolStripMenuItem clearLogToolStripMenuItem;
+73 -43
View File
@@ -19,6 +19,9 @@ using Ionic.Zip;
using System.Linq;
using System.Windows.Interop;
using System.Security.Cryptography;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using APKToolGUI.Controls;
using Dark.Net;
namespace APKToolGUI
{
@@ -52,6 +55,9 @@ namespace APKToolGUI
InitializeComponent();
if (Program.IsDarkTheme())
DarkTheme.SetTheme(Controls, this);
Text += " - v" + ProductVersion;
Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
@@ -152,13 +158,8 @@ namespace APKToolGUI
if (updateInterval.Days > 0 && Settings.Default.CheckForUpdateAtStartup)
updateCheker.CheckAsync(true);
});
ToStatus(Language.Done, Resources.done);
string decApkPath = Settings.Default.Decode_InputAppPath;
await GetApkInfo(decApkPath);
RunCmdArgs();
await ListDevices();
@@ -217,11 +218,11 @@ namespace APKToolGUI
if (await Smali(file) == 0)
Close();
break;
case "apkinfo":
await GetApkInfo(file);
case "viewinfo":
tabControlMain.SelectedIndex = 1;
await GetApkInfo(file);
break;
default: //Fix when running app as Release from Visual studio
default:
IgnoreOutputDirContextMenu = false;
break;
}
@@ -388,7 +389,7 @@ namespace APKToolGUI
{
BeginInvoke(new MethodInvoker(delegate
{
toolStripStatusLabelStateText.Text = message;
toolStripStatusLabelStateText.Text = message.Replace("\n", "").Replace("\r", "");
toolStripStatusLabelStateImage.Image = statusImage;
}));
}
@@ -413,33 +414,48 @@ namespace APKToolGUI
internal void ToLog(ApktoolEventType eventType, string message)
{
if (String.IsNullOrWhiteSpace(message))
if (String.IsNullOrWhiteSpace(message) || message.Contains("_JAVA_OPTIONS"))
return;
Color color = Color.Black;
switch (eventType)
{
case ApktoolEventType.None:
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.Black);
if (Program.IsDarkTheme())
color = Color.White;
break;
case ApktoolEventType.Success:
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.DarkGreen);
if (Program.IsDarkTheme())
color = Color.LightGreen;
else
color = Color.DarkGreen;
break;
case ApktoolEventType.Infomation:
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.Blue);
if (Program.IsDarkTheme())
color = Color.LightBlue;
else
color = Color.Blue;
break;
case ApktoolEventType.Error:
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.Red);
if (Program.IsDarkTheme())
color = Color.LightPink;
else
color = Color.Red;
break;
case ApktoolEventType.Warning:
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.DarkOrange);
if (Program.IsDarkTheme())
color = Color.DarkOrange;
else
color = Color.Orange;
break;
case ApktoolEventType.Unknown:
ToLog(DateTime.Now.ToString("[HH:mm:ss]"), message, Color.Red);
break;
default:
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, Color.Blue);
if (Program.IsDarkTheme())
color = Color.White;
break;
}
ToLog(DateTime.Now.ToString("[dd.MM.yyyy HH:mm:ss]"), message, color);
}
internal void Running(string msg)
@@ -447,7 +463,8 @@ namespace APKToolGUI
Invoke(new Action(delegate ()
{
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Indeterminate, Handle);
toolStripProgressBar1.Style = ProgressBarStyle.Marquee;
progressBar.Style = ProgressBarStyle.Marquee;
progressBar.Visible = true;
ActionButtonsEnabled = false;
ClearLog();
}));
@@ -479,16 +496,21 @@ namespace APKToolGUI
TaskbarManager.Instance.SetProgressValue(1, 1);
if (statusStrip1.InvokeRequired)
statusStrip1.BeginInvoke(new Action(delegate { toolStripProgressBar1.Style = ProgressBarStyle.Continuous; }));
statusStrip1.BeginInvoke(new Action(delegate { progressBar.Style = ProgressBarStyle.Continuous; }));
else
toolStripProgressBar1.Style = ProgressBarStyle.Continuous;
progressBar.Style = ProgressBarStyle.Continuous;
Invoke(new Action(delegate ()
{
progressBar.Visible = false;
}));
ActionButtonsEnabled = true;
ToStatus(Language.Done, Resources.done);
}
internal void Error(string msg)
internal void Error(string msg, string status = null)
{
isRunning = false;
@@ -505,13 +527,21 @@ namespace APKToolGUI
TaskbarManager.Instance.SetProgressValue(1, 1);
if (statusStrip1.InvokeRequired)
statusStrip1.BeginInvoke(new Action(delegate { toolStripProgressBar1.Style = ProgressBarStyle.Continuous; }));
statusStrip1.BeginInvoke(new Action(delegate { progressBar.Style = ProgressBarStyle.Continuous; }));
else
toolStripProgressBar1.Style = ProgressBarStyle.Continuous;
progressBar.Style = ProgressBarStyle.Continuous;
Invoke(new Action(delegate ()
{
progressBar.Visible = false;
}));
ActionButtonsEnabled = true;
ToStatus(msg, Resources.error);
if (status == null)
ToStatus(msg, Resources.error);
else
ToStatus(status, Resources.error);
}
internal void ClearLog()
@@ -877,7 +907,7 @@ namespace APKToolGUI
catch (Exception ex)
{
code = 1;
Error(ex.ToString());
Error(ex.ToString(), Language.ErrorDecompiling);
}
return code;
@@ -1001,18 +1031,21 @@ namespace APKToolGUI
}
string device = selAdbDeviceLbl.Text;
if (!String.IsNullOrEmpty(device) && Settings.Default.Sign_InstallApkAfterSign)
if (Settings.Default.Sign_InstallApkAfterSign)
{
ToStatus(Language.InstallingApk, Resources.waiting);
ToLog(ApktoolEventType.Infomation, "=====[ " + Language.InstallingApk + " ]=====");
if (!String.IsNullOrEmpty(device))
{
ToStatus(Language.InstallingApk, Resources.waiting);
ToLog(ApktoolEventType.Infomation, "=====[ " + Language.InstallingApk + " ]=====");
if (adb.Install(device, outputFile) == 0)
ToLog(ApktoolEventType.None, Language.InstallApkSuccessful);
if (adb.Install(device, outputFile) == 0)
ToLog(ApktoolEventType.None, Language.InstallApkSuccessful);
else
ToLog(ApktoolEventType.Error, Language.InstallApkFailed);
}
else
ToLog(ApktoolEventType.Error, Language.InstallApkFailed); ;
ToLog(ApktoolEventType.Error, String.Format(Language.DeviceNotSelected, outputFile));
}
else
ToLog(ApktoolEventType.Error, String.Format(Language.DeviceNotSelected, outputFile));
}
else
ToLog(ApktoolEventType.Error, Language.ErrorSigning);
@@ -1420,15 +1453,13 @@ namespace APKToolGUI
}
#endregion
#region Main menu event handlers
#endregion
#region Form handlers
private void logTxtBox_TextChanged(object sender, EventArgs e)
private async void tabControlMain_SelectedIndexChanged(object sender, EventArgs e)
{
logTxtBox.SelectionStart = logTxtBox.Text.Length;
logTxtBox.ScrollToCaret();
if (tabControlMain.SelectedIndex == 1 && String.IsNullOrEmpty(appTxtBox.Text) && Environment.GetCommandLineArgs().Length == 1)
{
await GetApkInfo(Settings.Default.Decode_InputAppPath);
}
}
private void FormMain_Activated(object sender, EventArgs e)
@@ -1569,6 +1600,5 @@ namespace APKToolGUI
}
}
#endregion
}
}
File diff suppressed because it is too large Load Diff
+21
View File
@@ -55,6 +55,8 @@
this.buttonRemoveContextMenu = new System.Windows.Forms.Button();
this.buttonCancel = new System.Windows.Forms.Button();
this.buttonОК = new System.Windows.Forms.Button();
this.label1 = new System.Windows.Forms.Label();
this.themeComboBox = new System.Windows.Forms.ComboBox();
this.tabControl1.SuspendLayout();
this.tabPage1.SuspendLayout();
this.groupBox1.SuspendLayout();
@@ -81,6 +83,8 @@
// groupBox1
//
resources.ApplyResources(this.groupBox1, "groupBox1");
this.groupBox1.Controls.Add(this.themeComboBox);
this.groupBox1.Controls.Add(this.label1);
this.groupBox1.Controls.Add(this.customApkToolTxtBox);
this.groupBox1.Controls.Add(this.customApktoolBtn);
this.groupBox1.Controls.Add(this.useCustomApktoolChk);
@@ -272,6 +276,21 @@
this.buttonОК.UseVisualStyleBackColor = true;
this.buttonОК.Click += new System.EventHandler(this.buttonОК_Click);
//
// label1
//
resources.ApplyResources(this.label1, "label1");
this.label1.Name = "label1";
//
// themeComboBox
//
this.themeComboBox.FormattingEnabled = true;
this.themeComboBox.Items.AddRange(new object[] {
resources.GetString("themeComboBox.Items"),
resources.GetString("themeComboBox.Items1"),
resources.GetString("themeComboBox.Items2")});
resources.ApplyResources(this.themeComboBox, "themeComboBox");
this.themeComboBox.Name = "themeComboBox";
//
// FormSettings
//
resources.ApplyResources(this, "$this");
@@ -323,5 +342,7 @@
private System.Windows.Forms.TextBox customApkToolTxtBox;
private System.Windows.Forms.Button customApktoolBtn;
private System.Windows.Forms.CheckBox useCustomApktoolChk;
private System.Windows.Forms.ComboBox themeComboBox;
private System.Windows.Forms.Label label1;
}
}
+17 -6
View File
@@ -10,6 +10,8 @@ using System.Reflection;
using System.Collections.Generic;
using System.Windows.Shapes;
using static APKToolGUI.UpdateChecker;
using APKToolGUI.Properties;
using APKToolGUI.Controls;
namespace APKToolGUI
{
@@ -18,11 +20,15 @@ namespace APKToolGUI
string currentLanguage;
bool currentUseApktoolChk;
string currentApktoolPath;
int currentTheme;
public FormSettings()
{
InitializeComponent();
if (Program.IsDarkTheme())
DarkTheme.SetTheme(Controls, this);
currentUseApktoolChk = useCustomApktoolChk.Checked;
currentApktoolPath = customApkToolTxtBox.Text;
@@ -31,6 +37,10 @@ namespace APKToolGUI
SetButtonShield(buttonAddContextMenu, true);
SetButtonShield(buttonRemoveContextMenu, true);
}
int themeInt = (themeComboBox.Items.Count + 1 > Settings.Default.Theme) ? Settings.Default.Theme : 0;
themeComboBox.SelectedIndex = themeInt;
currentTheme = themeInt;
}
#region GUI
@@ -115,13 +125,15 @@ namespace APKToolGUI
private void SaveSettings()
{
if (Language.SystemLanguage.Equals(comboBox1.SelectedItem.ToString()))
Properties.Settings.Default.Culture = "Auto";
Settings.Default.Culture = "Auto";
else
Properties.Settings.Default.Culture = StringExt.Regex(@"(?<=\[)(.*?)(?=\])", comboBox1.SelectedItem.ToString());
Properties.Settings.Default.Save();
Settings.Default.Culture = StringExt.Regex(@"(?<=\[)(.*?)(?=\])", comboBox1.SelectedItem.ToString());
if (!comboBox1.SelectedItem.ToString().Contains(currentLanguage))
if (MessageBox.Show(Language.SetLanguageRestartApplication, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Settings.Default.Theme = themeComboBox.SelectedIndex;
Settings.Default.Save();
if (!comboBox1.SelectedItem.ToString().Contains(currentLanguage) || themeComboBox.SelectedIndex != currentTheme)
if (MessageBox.Show(Language.RestartApplicationPrompt, Application.ProductName, MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
Application.Restart();
if (currentUseApktoolChk != useCustomApktoolChk.Checked || currentApktoolPath != customApkToolTxtBox.Text)
@@ -172,7 +184,6 @@ namespace APKToolGUI
DirectoryUtils.Delete(Program.TEMP_PATH);
//Create new temp folder
Program.TEMP_PATH = Program.TempDirectory();
Directory.CreateDirectory(Program.TEMP_PATH);
}
+81 -24
View File
@@ -124,17 +124,74 @@
<data name="groupBox1.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<data name="themeComboBox.Items" xml:space="preserve">
<value>Auto</value>
</data>
<data name="themeComboBox.Items1" xml:space="preserve">
<value>Light</value>
</data>
<data name="themeComboBox.Items2" xml:space="preserve">
<value>Dark</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="themeComboBox.Location" type="System.Drawing.Point, System.Drawing">
<value>128, 213</value>
</data>
<data name="themeComboBox.Size" type="System.Drawing.Size, System.Drawing">
<value>121, 21</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="themeComboBox.TabIndex" type="System.Int32, mscorlib">
<value>17</value>
</data>
<data name="&gt;&gt;themeComboBox.Name" xml:space="preserve">
<value>themeComboBox</value>
</data>
<data name="&gt;&gt;themeComboBox.Type" xml:space="preserve">
<value>System.Windows.Forms.ComboBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;themeComboBox.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;themeComboBox.ZOrder" xml:space="preserve">
<value>0</value>
</data>
<data name="label1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 216</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>41, 13</value>
</data>
<data name="label1.TabIndex" type="System.Int32, mscorlib">
<value>16</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Theme</value>
</data>
<data name="&gt;&gt;label1.Name" xml:space="preserve">
<value>label1</value>
</data>
<data name="&gt;&gt;label1.Type" xml:space="preserve">
<value>System.Windows.Forms.Label, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</data>
<data name="&gt;&gt;label1.Parent" xml:space="preserve">
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label1.ZOrder" xml:space="preserve">
<value>1</value>
</data>
<data name="customApkToolTxtBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="customApkToolTxtBox.Location" type="System.Drawing.Point, System.Drawing">
<value>203, 180</value>
</data>
<data name="customApkToolTxtBox.Size" type="System.Drawing.Size, System.Drawing">
<value>215, 22</value>
</data>
<assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="customApkToolTxtBox.TabIndex" type="System.Int32, mscorlib">
<value>15</value>
</data>
@@ -151,7 +208,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;customApkToolTxtBox.ZOrder" xml:space="preserve">
<value>0</value>
<value>2</value>
</data>
<data name="customApktoolBtn.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -184,7 +241,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;customApktoolBtn.ZOrder" xml:space="preserve">
<value>1</value>
<value>3</value>
</data>
<data name="useCustomApktoolChk.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -214,7 +271,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;useCustomApktoolChk.ZOrder" xml:space="preserve">
<value>2</value>
<value>4</value>
</data>
<data name="label6.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -244,7 +301,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;label6.ZOrder" xml:space="preserve">
<value>3</value>
<value>5</value>
</data>
<data name="checkBox5.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -274,7 +331,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;checkBox5.ZOrder" xml:space="preserve">
<value>4</value>
<value>6</value>
</data>
<data name="checkBox4.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -304,7 +361,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;checkBox4.ZOrder" xml:space="preserve">
<value>5</value>
<value>7</value>
</data>
<data name="customTempLocationTxtBox.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
@@ -331,7 +388,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;customTempLocationTxtBox.ZOrder" xml:space="preserve">
<value>6</value>
<value>8</value>
</data>
<data name="textBoxCustomJavaLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Left, Right</value>
@@ -358,7 +415,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;textBoxCustomJavaLocation.ZOrder" xml:space="preserve">
<value>7</value>
<value>9</value>
</data>
<data name="buttonCustomTempLocation.AccessibleName" xml:space="preserve">
<value>buttonCustomTempLocation</value>
@@ -394,7 +451,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;buttonCustomTempLocation.ZOrder" xml:space="preserve">
<value>8</value>
<value>10</value>
</data>
<data name="checkBox3.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -424,7 +481,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;checkBox3.ZOrder" xml:space="preserve">
<value>9</value>
<value>11</value>
</data>
<data name="buttonCustomJavaLocation.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Right</value>
@@ -457,7 +514,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;buttonCustomJavaLocation.ZOrder" xml:space="preserve">
<value>10</value>
<value>12</value>
</data>
<data name="checkBox2.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -487,7 +544,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;checkBox2.ZOrder" xml:space="preserve">
<value>11</value>
<value>13</value>
</data>
<data name="checkBox1.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -517,7 +574,7 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;checkBox1.ZOrder" xml:space="preserve">
<value>12</value>
<value>14</value>
</data>
<data name="checkBoxCheckUpdateStartup.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
@@ -547,13 +604,13 @@
<value>groupBox1</value>
</data>
<data name="&gt;&gt;checkBoxCheckUpdateStartup.ZOrder" xml:space="preserve">
<value>13</value>
<value>15</value>
</data>
<data name="groupBox1.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 6</value>
</data>
<data name="groupBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>454, 217</value>
<value>454, 251</value>
</data>
<data name="groupBox1.TabIndex" type="System.Int32, mscorlib">
<value>12</value>
@@ -604,7 +661,7 @@
<value>0</value>
</data>
<data name="groupBoxLanguage.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 229</value>
<value>8, 263</value>
</data>
<data name="groupBoxLanguage.Size" type="System.Drawing.Size, System.Drawing">
<value>454, 47</value>
@@ -766,7 +823,7 @@
<value>3</value>
</data>
<data name="groupBoxContextMenu.Location" type="System.Drawing.Point, System.Drawing">
<value>8, 282</value>
<value>8, 316</value>
</data>
<data name="groupBoxContextMenu.Size" type="System.Drawing.Size, System.Drawing">
<value>454, 74</value>
@@ -796,7 +853,7 @@
<value>3, 3, 3, 3</value>
</data>
<data name="tabPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>466, 360</value>
<value>466, 396</value>
</data>
<data name="tabPage1.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
@@ -823,7 +880,7 @@
<value>0, 1</value>
</data>
<data name="tabControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>474, 386</value>
<value>474, 422</value>
</data>
<data name="tabControl1.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
@@ -850,7 +907,7 @@
<value>NoControl</value>
</data>
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
<value>392, 393</value>
<value>392, 429</value>
</data>
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
@@ -883,7 +940,7 @@
<value>NoControl</value>
</data>
<data name="buttonОК.Location" type="System.Drawing.Point, System.Drawing">
<value>311, 393</value>
<value>311, 429</value>
</data>
<data name="buttonОК.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
@@ -913,7 +970,7 @@
<value>6, 13</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
<value>473, 421</value>
<value>473, 457</value>
</data>
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
<value>CenterParent</value>
+17
View File
@@ -1,4 +1,6 @@
using APKToolGUI.Languages;
using APKToolGUI.Properties;
using Dark.Net;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -44,7 +46,15 @@ namespace APKToolGUI.Handlers
private void menuItemSettings_Click(object sender, EventArgs e)
{
Theme theme = (Theme)Settings.Default.Theme;
if (Program.IsWin10OrAbove())
DarkNet.Instance.SetCurrentProcessTheme(theme);
FormSettings frm = new FormSettings();
if (Program.IsWin10OrAbove())
DarkNet.Instance.SetWindowThemeForms(frm, theme);
frm.ShowDialog();
}
@@ -66,7 +76,14 @@ namespace APKToolGUI.Handlers
private void menuItemAbout_Click(object sender, EventArgs e)
{
Theme theme = (Theme)Settings.Default.Theme;
if (Program.IsWin10OrAbove())
DarkNet.Instance.SetCurrentProcessTheme(theme);
FormAboutBox frm = new FormAboutBox();
if (Program.IsWin10OrAbove())
DarkNet.Instance.SetWindowThemeForms(frm, theme);
frm.ShowDialog();
}
+4 -4
View File
@@ -781,7 +781,7 @@ namespace APKToolGUI.Languages {
}
/// <summary>
/// Looks up a localized string similar to Get APK Info.
/// Looks up a localized string similar to View APK Info.
/// </summary>
internal static string GetApkInfo {
get {
@@ -1033,11 +1033,11 @@ namespace APKToolGUI.Languages {
}
/// <summary>
/// Looks up a localized string similar to The language is set. Do you want to restart the application?.
/// Looks up a localized string similar to Restart is required to apply changes. Do you want to restart the application?.
/// </summary>
internal static string SetLanguageRestartApplication {
internal static string RestartApplicationPrompt {
get {
return ResourceManager.GetString("SetLanguageRestartApplication", resourceCulture);
return ResourceManager.GetString("RestartApplicationPrompt", resourceCulture);
}
}
+104 -14
View File
@@ -142,7 +142,7 @@
<value>Beállítások</value>
</data>
<data name="ErrorJavaDetect" xml:space="preserve">
<value>Java nincs vagy rosszul van telepítve. Telepítse a Javát, vagy adja meg az egyéni helyét a Beállításokban</value>
<value>Java nincs vagy rosszul van telepítve. Telepítse a Javát vagy adja meg az egyéni helyét a Beállításokban</value>
</data>
<data name="ErrorReadSettings" xml:space="preserve">
<value>Hiba a beállítások olvasásakor!</value>
@@ -249,18 +249,6 @@
<data name="SignInputFileNotFound" xml:space="preserve">
<value>A bemeneti fájl nem található.</value>
</data>
<data name="Decoding" xml:space="preserve">
<value>Dekódolás</value>
</data>
<data name="DecodeDesDirExists" xml:space="preserve">
<value>"{0}" célkönyvtár már létezik. Ha felül kívánja írni a célkönyvtárat, kapcsolja be a "Célkönyvtár törlésének kikényszerítése" opciót.</value>
</data>
<data name="MoveTempApkFileToOutput" xml:space="preserve">
<value>"{0}" ideiglenes mappa áthelyezése "{1}" kimeneti könyvtárba.</value>
</data>
<data name="MoveTempApkToOutput" xml:space="preserve">
<value>"{0}" ideiglenes apk fájl áthelyezése "{1}" kimeneti könyvtárba.</value>
</data>
<data name="SignPrivateKeyNotFound" xml:space="preserve">
<value>Privát kulcs nem található.</value>
</data>
@@ -279,6 +267,9 @@
<data name="DecodeSelectedFrameworkNotExist" xml:space="preserve">
<value>A kiválasztott keretkönyvtár nem létezik.</value>
</data>
<data name="Decoding" xml:space="preserve">
<value>Dekódolás</value>
</data>
<data name="ErrorDecompiling" xml:space="preserve">
<value>A dekompilálás sikertelen</value>
</data>
@@ -391,7 +382,7 @@
<value>Ez a mappa nem dekompilált DEX</value>
</data>
<data name="RequiredFilesMissing" xml:space="preserve">
<value>A szükséges fájlok hiányoznak</value>
<value>Szükséges fájlok hiányoznak</value>
</data>
<data name="SignApk" xml:space="preserve">
<value>APK aláírása</value>
@@ -426,4 +417,103 @@
<data name="CopyFolderToTemp" xml:space="preserve">
<value>Dekompilált apk mappa "{0}" másolása "{1}" ideiglenes könyvtárba.</value>
</data>
<data name="DecodeDesDirExists" xml:space="preserve">
<value>A "{0}" célkönyvtár már létezik. Ha felül szeretné írni, engedélyezze a "Célkönyvtár kényszerített törlésének" beállítását.</value>
</data>
<data name="MoveTempApkFileToOutput" xml:space="preserve">
<value>A "{0}" ideiglenes mappa áthelyezése a "{1}" kimeneti könyvtárba</value>
</data>
<data name="MoveTempApkToOutput" xml:space="preserve">
<value>A(z) "{0}" ideiglenes apk áthelyezése a "{1}" kimeneti könyvtárba</value>
</data>
<data name="ParsingApkInfo" xml:space="preserve">
<value>APK információk elemzése...</value>
</data>
<data name="SetLanguageRestartApplication" xml:space="preserve">
<value>A nyelv be van állítva. Újra akarja indítani az alkalmazást?</value>
</data>
<data name="DecompilingAllApkFiles" xml:space="preserve">
<value>Az összes APK fájl visszafejtése</value>
</data>
<data name="DetectedAsBase" xml:space="preserve">
<value>{0} bázisként észlelve</value>
</data>
<data name="DetectedAsSplit" xml:space="preserve">
<value>{0} részeként észlelve</value>
</data>
<data name="ExtractingAllApkFiles" xml:space="preserve">
<value>Az összes APK fájl kicsomagolása</value>
</data>
<data name="MergeFinishedMoveDir" xml:space="preserve">
<value>Egyesítés kész. Könyvtár áthelyezése ide: "{0}"</value>
</data>
<data name="MergingApk" xml:space="preserve">
<value>APK egyesítése</value>
</data>
<data name="MovingBasedirectory" xml:space="preserve">
<value>Bázis könyvtár áthelyezése ide: "{0}"</value>
</data>
<data name="DirNotExist" xml:space="preserve">
<value>A(z) "{0}" könyvtár nem létezik</value>
</data>
<data name="TempDirectory" xml:space="preserve">
<value>Temp könyvtár: "{0}"</value>
</data>
<data name="ErrorMerging" xml:space="preserve">
<value>Az ˘egyesítés nem sikerült</value>
</data>
<data name="ExtractOrigSignature" xml:space="preserve">
<value>Az eredeti aláírás kibontása</value>
</data>
<data name="MergingApkEditor" xml:space="preserve">
<value>APK egyesítése az APKEditor.jar használatával</value>
</data>
<data name="Aborted" xml:space="preserve">
<value>Megszakítva</value>
</data>
<data name="CancelProcess" xml:space="preserve">
<value>Biztosan megszakítja a folyamatot?</value>
</data>
<data name="GettingDevices" xml:space="preserve">
<value>Eszközök keresése...</value>
</data>
<data name="PleaseWait" xml:space="preserve">
<value>Kis türelmet...</value>
</data>
<data name="ConfirmKillingAdbServer" xml:space="preserve">
<value>Biztosan leállítja az ADB szervert? Lehet, hogy újra kell csatlakoztatnia az eszközt, vagy újra kell indítania az emulátort</value>
</data>
<data name="DeviceNotSelected" xml:space="preserve">
<value>Az eszköz nincs kiválasztva</value>
</data>
<data name="DeviceSelected" xml:space="preserve">
<value>Kiválasztott eszköz: "{0}"</value>
</data>
<data name="DevicesFound" xml:space="preserve">
<value>{0} eszköz található</value>
</data>
<data name="InstallApkFailed" xml:space="preserve">
<value>Az APK telepítése nem sikerült</value>
</data>
<data name="InstallApkSuccessful" xml:space="preserve">
<value>Az APK telepítése sikeres volt</value>
</data>
<data name="InstallingApk" xml:space="preserve">
<value>APK telepítése</value>
</data>
<data name="InstallingApkPath" xml:space="preserve">
<value>"{0}" APK telepítése</value>
</data>
<data name="NoDevicesFound" xml:space="preserve">
<value>Nem találhatók eszközök. Győződjön meg róla, hogy eszközén be van kapcsolva az adb hibakeresés. Ha emulátort használ, indítsa újra és várja meg amíg elindul</value>
</data>
<data name="TimeEnded" xml:space="preserve">
<value>Befejezve: {0}</value>
</data>
<data name="TimeStarted" xml:space="preserve">
<value>Elkezdve: {0}</value>
</data>
<data name="ClearFrameworkPrompt" xml:space="preserve">
<value>A váratlan hibák elkerülése érdekében az Apktool verziójának módosítása után törölni kell a framework gyorsítótárát. Szeretné most törölni?</value>
</data>
</root>
+3 -3
View File
@@ -373,7 +373,7 @@
<value>Disassemble DEX</value>
</data>
<data name="GetApkInfo" xml:space="preserve">
<value>Get APK Info</value>
<value>View APK Info</value>
</data>
<data name="NotDecompiledApk" xml:space="preserve">
<value>This folder is not a decompiled APK</value>
@@ -429,8 +429,8 @@
<data name="ParsingApkInfo" xml:space="preserve">
<value>Parsing APK Info...</value>
</data>
<data name="SetLanguageRestartApplication" xml:space="preserve">
<value>The language is set. Do you want to restart the application?</value>
<data name="RestartApplicationPrompt" xml:space="preserve">
<value>Restart is required to apply changes. Do you want to restart the application?</value>
</data>
<data name="DecompilingAllApkFiles" xml:space="preserve">
<value>Decompiling all APK files</value>
+383 -11
View File
@@ -117,26 +117,83 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="SystemLanguage" xml:space="preserve">
<value>Язык системы</value>
<data name="About" xml:space="preserve">
<value>О программе</value>
</data>
<data name="UpdateNewVersion" xml:space="preserve">
<value>Доступна новая версия. Выполнить обновление?</value>
<data name="APKToolVersion" xml:space="preserve">
<value>Версия Apktool</value>
</data>
<data name="Done" xml:space="preserve">
<value>Готово</value>
<data name="CheckForUpdate" xml:space="preserve">
<value>Проверить обновления</value>
</data>
<data name="DebugMode" xml:space="preserve">
<value>Режим Debug</value>
</data>
<data name="Exit" xml:space="preserve">
<value>Выход</value>
</data>
<data name="File" xml:space="preserve">
<value>Файл</value>
</data>
<data name="Help" xml:space="preserve">
<value>Помощь</value>
</data>
<data name="Settings" xml:space="preserve">
<value>Настройки</value>
</data>
<data name="ErrorJavaDetect" xml:space="preserve">
<value>Java не установлена или установлена не корректно. Программа будет закрыта.</value>
<value>Java не установлена или установлена некорректно. Пожалуйста, установите Java или укажите путь в настройках</value>
</data>
<data name="ErrorReadSettings" xml:space="preserve">
<value>Ошибка при чтении файла настроек!</value>
</data>
<data name="UpdateNewVersion" xml:space="preserve">
<value>Доступна новая версия. Загрузить обновление?</value>
</data>
<data name="UpdateNoUpdates" xml:space="preserve">
<value>Нет доступных обновлений.</value>
<value>Нет обновлений.</value>
</data>
<data name="DoYouWantToSelectJavaLocation" xml:space="preserve">
<value>Java не найдена. Хотите указать расположение вручную?</value>
<data name="WarningDecodingFolderNotSelected" xml:space="preserve">
<value>Папка для декодирования не выбрана!</value>
</data>
<data name="WarningFileForDecodingNotSelected" xml:space="preserve">
<value>Файл для декодирования не выбран!</value>
</data>
<data name="WarningFileForSigningNotSelected" xml:space="preserve">
<value>Файл для подписи не выбран!</value>
</data>
<data name="WarningFrameworkNotSelected" xml:space="preserve">
<value>Фреймворк не выбран!</value>
<value>Не выбраны необходимые компоненты!</value>
</data>
<data name="ErrorSaveSettings" xml:space="preserve">
<value>Ошибка при сохранении файла настроек!</value>
</data>
<data name="NeedRestart" xml:space="preserve">
<value>Для завершения обновления необходим перезапуск. Перезапустить сейчас?</value>
</data>
<data name="FileNotFound" xml:space="preserve">
<value>Файл не найден</value>
</data>
<data name="FolderNotExist" xml:space="preserve">
<value>Папка не найдена</value>
</data>
<data name="Error" xml:space="preserve">
<value>Ошибка</value>
</data>
<data name="Build" xml:space="preserve">
<value>Build</value>
</data>
<data name="Decode" xml:space="preserve">
<value>Декодирование</value>
</data>
<data name="InstallFramework" xml:space="preserve">
<value>Установка</value>
</data>
<data name="Sign" xml:space="preserve">
<value>Подпись</value>
</data>
<data name="SystemLanguage" xml:space="preserve">
<value>Язык системы</value>
</data>
<data name="DoYouRealyWantToInstallCM" xml:space="preserve">
<value>Вы действительно хотите установить контекстное меню?</value>
@@ -144,4 +201,319 @@
<data name="DoYouRealyWantToRemoveCM" xml:space="preserve">
<value>Вы действительно хотите удалить контекстное меню?</value>
</data>
<data name="Done" xml:space="preserve">
<value>Готово</value>
</data>
<data name="CantDetectApktoolVersion" xml:space="preserve">
<value>Не определена версия apktool.</value>
</data>
<data name="DecompilingSuccessfullyCompleted" xml:space="preserve">
<value>Декомпиляция успешно завершена. Выходная директория "{0}".</value>
</data>
<data name="ErrorUpdateChecking" xml:space="preserve">
<value>Ошибка при проверке обновлений:</value>
</data>
<data name="SignSuccessfullyCompleted" xml:space="preserve">
<value>Операция успешно завершена. Файл сохранен в "{0}".</value>
</data>
<data name="Aligning" xml:space="preserve">
<value>Aligning</value>
</data>
<data name="ErrorCompiling" xml:space="preserve">
<value>Ошибка при компиляции</value>
</data>
<data name="ErrorEnteringFrameworkTag" xml:space="preserve">
<value>Ошибка ввода тегов</value>
</data>
<data name="ErrorSelectedFileNotExist" xml:space="preserve">
<value>Выбранный файл не существует.</value>
</data>
<data name="ErrorSelectingFrameworkDirectory" xml:space="preserve">
<value>Ошибка при выборе папки.</value>
</data>
<data name="ErrorSelectingFrameworkFile" xml:space="preserve">
<value>Ошибка при выборе файла. Файл не существует.</value>
</data>
<data name="ErrorSigning" xml:space="preserve">
<value>Sign: ошибка</value>
</data>
<data name="FrameworkInstallationNotStarted" xml:space="preserve">
<value>Ошибка. Установка не запущена.</value>
</data>
<data name="InstallingFramework" xml:space="preserve">
<value>Установка</value>
</data>
<data name="Signing" xml:space="preserve">
<value>Подписывание</value>
</data>
<data name="SignInputFileNotFound" xml:space="preserve">
<value>Входной файл не найден.</value>
</data>
<data name="SignPrivateKeyNotFound" xml:space="preserve">
<value>Приватный ключ не найден.</value>
</data>
<data name="SignPublicKeyNotFound" xml:space="preserve">
<value>Публичный ключ не найден.</value>
</data>
<data name="ZIPArchives" xml:space="preserve">
<value>ZIP архивы</value>
</data>
<data name="DecodeCouldNotCreate" xml:space="preserve">
<value>Выбранная директория содержит недопустимые символы и не может быть создана.</value>
</data>
<data name="DecodeDirNotSelected" xml:space="preserve">
<value>Папка для декомпиляции не выбрана.</value>
</data>
<data name="DecodeSelectedFrameworkNotExist" xml:space="preserve">
<value>Выбранная папка не существует</value>
</data>
<data name="Decoding" xml:space="preserve">
<value>Декодирование</value>
</data>
<data name="ErrorDecompiling" xml:space="preserve">
<value>Ошибка при декодировании</value>
</data>
<data name="ExecutableFile" xml:space="preserve">
<value>Исполняемый файл</value>
</data>
<data name="ChangedTargetSdkTo29" xml:space="preserve">
<value>Изменена версия SDK на 29</value>
</data>
<data name="ErrorVersionParsing" xml:space="preserve">
<value>Ошибка при считывании версии</value>
</data>
<data name="FixAndroidManifest" xml:space="preserve">
<value>Измененный AndroidManifest.xml</value>
</data>
<data name="RemoveApkToolDummies" xml:space="preserve">
<value>Удалены все дополнения для ApkTool</value>
</data>
<data name="APKSelected" xml:space="preserve">
<value>Выбранный APK:</value>
</data>
<data name="ErrorSelectedFolderNotExist" xml:space="preserve">
<value>Выбранная папка не существует.</value>
</data>
<data name="AndroidManifestNotExist" xml:space="preserve">
<value>AndroidManifest.xml не найден</value>
</data>
<data name="DecompiledAPKNotExist" xml:space="preserve">
<value>Декомпилированный каталог APK не существует</value>
</data>
<data name="MainActivityFound" xml:space="preserve">
<value>MainActivity найден в "{0}"</value>
</data>
<data name="MainActivityNotFoundPleaseFindManually" xml:space="preserve">
<value>Не найден MainActivity. Попробуйте выполнить поиск вручную</value>
</data>
<data name="ClearingFramework" xml:space="preserve">
<value>Очистка</value>
</data>
<data name="CompilingSuccessfullyCompleted" xml:space="preserve">
<value>Компиляция успешно завершена. Выходная папка "{0}"</value>
</data>
<data name="ErrorZipalign" xml:space="preserve">
<value>Zipalign: ошибка</value>
</data>
<data name="ZipalignFileSavedTo" xml:space="preserve">
<value>Zipalign: успешно завершено. Файл сохранен в "{0}"</value>
</data>
<data name="ErrorClearingFw" xml:space="preserve">
<value>Ошибка при очистке</value>
</data>
<data name="FrameworkCacheCleared" xml:space="preserve">
<value>Кеш очищен</value>
</data>
<data name="AllDone" xml:space="preserve">
<value>Завершено!</value>
</data>
<data name="FrameworkInstalled" xml:space="preserve">
<value>Успешно установлено</value>
</data>
<data name="FrameworkDirNotExist" xml:space="preserve">
<value>Папка не существует</value>
</data>
<data name="DecompilingDex" xml:space="preserve">
<value>Декомпиляция DEX</value>
</data>
<data name="ErrorSelectedOutputFolderNotExist" xml:space="preserve">
<value>Выбранная выходная папка не существует.</value>
</data>
<data name="CompilingDex" xml:space="preserve">
<value>Компиляция DEX</value>
</data>
<data name="DragDropNotSupported" xml:space="preserve">
<value>Программа запущена в режиме администратора. Drag &amp; drop не поддерживается</value>
</data>
<data name="DragDropSupported" xml:space="preserve">
<value>Drag &amp; drop поддерживается</value>
</data>
<data name="ErrorNotAnApk" xml:space="preserve">
<value>Эта папка не является пакетом Android</value>
</data>
<data name="Baksmali" xml:space="preserve">
<value>Baksmali</value>
</data>
<data name="Smali" xml:space="preserve">
<value>Smali</value>
</data>
<data name="Zipalign" xml:space="preserve">
<value>Zipalign</value>
</data>
<data name="CompileApk" xml:space="preserve">
<value>Компиляция APK</value>
</data>
<data name="CompileDex" xml:space="preserve">
<value>Assemble DEX</value>
</data>
<data name="DecompileApk" xml:space="preserve">
<value>Декомпиляция APK</value>
</data>
<data name="DecompileDex" xml:space="preserve">
<value>Дизассемблирование DEX</value>
</data>
<data name="GetApkInfo" xml:space="preserve">
<value>Информация о APK</value>
</data>
<data name="NotDecompiledApk" xml:space="preserve">
<value>Эта папка не является декомпилированным АРК</value>
</data>
<data name="NotDecompiledDex" xml:space="preserve">
<value>Эта папка не является декомпилированным DEX</value>
</data>
<data name="RequiredFilesMissing" xml:space="preserve">
<value>Отсутствуют необходимые файлы</value>
</data>
<data name="SignApk" xml:space="preserve">
<value>Подпись APK</value>
</data>
<data name="TextFile" xml:space="preserve">
<value>Текстовый файл</value>
</data>
<data name="ZipalignApk" xml:space="preserve">
<value>Zipalign APK</value>
</data>
<data name="CreateUnsignedApk" xml:space="preserve">
<value>Создание APK (unsigned)</value>
</data>
<data name="MetainfNotExist" xml:space="preserve">
<value>Папка META-INF не существует.</value>
</data>
<data name="ErrorGettingApkInfo" xml:space="preserve">
<value>Ошибка при получении информации о APK</value>
</data>
<data name="InputDirectory" xml:space="preserve">
<value>Входная папка: {0}</value>
</data>
<data name="InputFile" xml:space="preserve">
<value>Входной файл: {0}</value>
</data>
<data name="DeleteFile" xml:space="preserve">
<value>Удален файл "{0}"</value>
</data>
<data name="CopyFileToTemp" xml:space="preserve">
<value>Файл "{0}" скопирован во временную папку "{1}"</value>
</data>
<data name="CopyFolderToTemp" xml:space="preserve">
<value>Копирование декомпилированного АРК "{0}" во временную папку "{1}"</value>
</data>
<data name="DecodeDesDirExists" xml:space="preserve">
<value>Целевая папка "{0}" уже существует. Используйте опцию принудительного удаления, если вы хотите ее перезаписать.</value>
</data>
<data name="MoveTempApkFileToOutput" xml:space="preserve">
<value>Перемещение временной папки "{0}" в выходной каталог "{1}"</value>
</data>
<data name="MoveTempApkToOutput" xml:space="preserve">
<value>Перемещение временного АРК "{0}" в выходной каталог "{1}"</value>
</data>
<data name="ParsingApkInfo" xml:space="preserve">
<value>Чтение информации о APK...</value>
</data>
<data name="SetLanguageRestartApplication" xml:space="preserve">
<value>Язык установлен. Хотите перезапустить программу?</value>
</data>
<data name="DecompilingAllApkFiles" xml:space="preserve">
<value>Декомпиляция всех APK файлов</value>
</data>
<data name="DetectedAsBase" xml:space="preserve">
<value>{0} определен как базовый</value>
</data>
<data name="DetectedAsSplit" xml:space="preserve">
<value>{0} определен как split</value>
</data>
<data name="ExtractingAllApkFiles" xml:space="preserve">
<value>Извлечение всех APK файлов</value>
</data>
<data name="MergeFinishedMoveDir" xml:space="preserve">
<value>Слияние завершено. Перемещение каталога в "{0}"</value>
</data>
<data name="MergingApk" xml:space="preserve">
<value>Слияние APK</value>
</data>
<data name="MovingBasedirectory" xml:space="preserve">
<value>Перемещение базового каталога в "{0}"</value>
</data>
<data name="DirNotExist" xml:space="preserve">
<value>Папка "{0}" не существует</value>
</data>
<data name="TempDirectory" xml:space="preserve">
<value>Временная папка: "{0}"</value>
</data>
<data name="ErrorMerging" xml:space="preserve">
<value>Ошибка при слиянии</value>
</data>
<data name="ExtractOrigSignature" xml:space="preserve">
<value>Извлечение оригинальной подписи</value>
</data>
<data name="MergingApkEditor" xml:space="preserve">
<value>Слияние APK с помощью APKEditor.jar</value>
</data>
<data name="Aborted" xml:space="preserve">
<value>Отменено</value>
</data>
<data name="CancelProcess" xml:space="preserve">
<value>Вы действительно хотите прервать процесс?</value>
</data>
<data name="GettingDevices" xml:space="preserve">
<value>Получение устройств...</value>
</data>
<data name="PleaseWait" xml:space="preserve">
<value>Пожалуйста, подождите...</value>
</data>
<data name="ConfirmKillingAdbServer" xml:space="preserve">
<value>Вы действительно хотите завершить работу ADB сервера? После завершения работы необходимо переподключить устройство или перезапустить эмулятор</value>
</data>
<data name="DeviceNotSelected" xml:space="preserve">
<value>Устройство не выбрано</value>
</data>
<data name="DeviceSelected" xml:space="preserve">
<value>Выбрано устройство "{0}"</value>
</data>
<data name="DevicesFound" xml:space="preserve">
<value>Найдено {0} устройств</value>
</data>
<data name="InstallApkFailed" xml:space="preserve">
<value>Ошибка при установке АРК</value>
</data>
<data name="InstallApkSuccessful" xml:space="preserve">
<value>Установка АРК успешно завершена</value>
</data>
<data name="InstallingApk" xml:space="preserve">
<value>Установка APK</value>
</data>
<data name="InstallingApkPath" xml:space="preserve">
<value>Установлено APK "{0}"</value>
</data>
<data name="NoDevicesFound" xml:space="preserve">
<value>Устройств не обнаружено. Убедитесь, что ваше устройство подключено к компьютеру с включенной отладкой ADB. Если вы используете эмулятор, перезапустите его и дождитесь завершения загрузки</value>
</data>
<data name="TimeEnded" xml:space="preserve">
<value>Время завершения: {0}</value>
</data>
<data name="TimeStarted" xml:space="preserve">
<value>Время начала: {0}</value>
</data>
<data name="ClearFrameworkPrompt" xml:space="preserve">
<value>После изменения версии Apktool необходимо очистить кеш. Вы хотите очистить его сейчас?</value>
</data>
</root>
+38 -6
View File
@@ -2,6 +2,8 @@
using APKToolGUI.Properties;
using APKToolGUI.Utils;
using Bluegrams.Application;
using Dark.Net;
using OSVersionExtension;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -28,14 +30,14 @@ namespace APKToolGUI
{
try
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (Environment.OSVersion.Version.Major == 6)
{
SetProcessDPIAware();
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
if (arg.Length == 1)
{
switch (arg[0])
@@ -71,7 +73,16 @@ namespace APKToolGUI
TEMP_PATH = TempDirectory();
Directory.CreateDirectory(TEMP_PATH);
Application.Run(new FormMain());
Theme theme = (Theme)Settings.Default.Theme;
if (IsWin10OrAbove())
DarkNet.Instance.SetCurrentProcessTheme(theme);
Form mainForm = new FormMain();
if (IsWin10OrAbove())
DarkNet.Instance.SetWindowThemeForms(mainForm, theme);
Application.Run(mainForm);
}
}
}
@@ -82,6 +93,29 @@ namespace APKToolGUI
}
}
public static bool IsWin10OrAbove()
{
// Check if the operating system is Windows 10 or above
if (OSVersion.GetOSVersion().Version.Major >= 10 && OSVersion.GetOSVersion().Version.Minor >= 0)
{
return true;
}
else
{
return false;
}
}
public static bool IsDarkTheme()
{
if (IsWin10OrAbove())
return DarkNet.Instance.EffectiveCurrentProcessThemeIsDark;
else if (Settings.Default.Theme == 2)
return true;
return false;
}
public static void SetLanguage()
{
String settingsCulture = Settings.Default.Culture;
@@ -137,7 +171,6 @@ namespace APKToolGUI
AAPT2_PATH,
SIGNAPK_KEYPRIVATE,
SIGNAPK_KEYPUBLIC,
AAPT2JNI_PATH,
APKEDITOR_PATH,
ADB_PATH,
ADBWINAPI_PATH,
@@ -208,7 +241,6 @@ namespace APKToolGUI
public static string ZIPALIGN_PATH { get { return Path.Combine(RES_PATH, "zipalign.exe"); } }
public static string AAPT_PATH { get { return Path.Combine(RES_PATH, "aapt.exe"); } }
public static string AAPT2_PATH { get { return Path.Combine(RES_PATH, "aapt2.exe"); } }
public static string AAPT2JNI_PATH { get { return Path.Combine(RES_PATH, "libaapt2_jni.dll"); } }
public static string APKEDITOR_PATH { get { return Path.Combine(RES_PATH, "apkeditor.jar"); } }
public static string ADB_PATH { get { return Path.Combine(RES_PATH, "adb.exe"); } }
public static string ADBWINAPI_PATH { get { return Path.Combine(RES_PATH, "AdbWinApi.dll"); } }
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// Можно задать все значения или принять номер построения и номер редакции по умолчанию,
// используя "*", как показано ниже:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.2.0.0")]
[assembly: AssemblyFileVersion("3.2.0.0")]
[assembly: AssemblyVersion("3.2.1.0")]
[assembly: AssemblyFileVersion("3.2.1.0")]
+12
View File
@@ -1179,5 +1179,17 @@ namespace APKToolGUI.Properties {
this["ApktoolPath"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public int Theme {
get {
return ((int)(this["Theme"]));
}
set {
this["Theme"] = value;
}
}
}
}
+3
View File
@@ -257,5 +257,8 @@
<Setting Name="ApktoolPath" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="Theme" Type="System.Int32" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
</Settings>
</SettingsFile>
+5 -5
View File
@@ -28,19 +28,19 @@
and Windows will automatically select the most compatible environment. -->
<!-- Windows Vista -->
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
<!-- Windows 7 -->
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
<!-- Windows 8 -->
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
<!-- Windows 8.1 -->
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
<!-- Windows 10 -->
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
</application>
</compatibility>
+2 -2
View File
@@ -30,7 +30,7 @@ namespace APKToolGUI
apkToolGUIFolderShell.SetValue("SubCommands", "APKToolGUI.Build;APKToolGUI.Smali");
apkToolGUIFolderShell.Close();
CreateFileAssociationsSubKey(executablePath, ".apk", "APKToolGUI.Decompile;APKToolGUI.Sign;APKToolGUI.Zipalign");
CreateFileAssociationsSubKey(executablePath, ".apk", "APKToolGUI.Apkinfo;APKToolGUI.Decompile;APKToolGUI.Sign;APKToolGUI.Zipalign");
CreateFileAssociationsSubKey(executablePath, ".xapk", "APKToolGUI.Decompile");
CreateFileAssociationsSubKey(executablePath, ".apks", "APKToolGUI.Decompile");
CreateFileAssociationsSubKey(executablePath, ".zip", "APKToolGUI.Decompile");
@@ -85,7 +85,7 @@ namespace APKToolGUI
RegistryKey apkinfo = shell.CreateSubKey("APKToolGUI.Apkinfo", RegistryKeyPermissionCheck.ReadWriteSubTree);
apkinfo.SetValue("", Language.GetApkInfo, RegistryValueKind.String);
apkinfo.SetValue("Icon", executablePath, RegistryValueKind.String);
apkinfo.CreateSubKey("command").SetValue("", "\"" + executablePath + "\" \"apkinfo\" \"%1\"", RegistryValueKind.String);
apkinfo.CreateSubKey("command").SetValue("", "\"" + executablePath + "\" \"viewinfo\" \"%1\"", RegistryValueKind.String);
apkinfo.Close();
shell.Close();
+3
View File
@@ -262,6 +262,9 @@
<setting name="ApktoolPath" serializeAs="String">
<value />
</setting>
<setting name="Theme" serializeAs="String">
<value>0</value>
</setting>
</APKToolGUI.Properties.Settings>
</userSettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /></startup>
+5 -3
View File
@@ -1,14 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Costura.Fody" version="5.7.0" targetFramework="net48" developmentDependency="true" />
<package id="DarkNet" version="2.2.0" targetFramework="net48" />
<package id="DotNetZip" version="1.16.0" targetFramework="net48" />
<package id="Fody" version="6.6.4" targetFramework="net48" developmentDependency="true" />
<package id="Microsoft.NETCore.Platforms" version="7.0.0" targetFramework="net48" />
<package id="Fody" version="6.7.0" targetFramework="net48" developmentDependency="true" />
<package id="Microsoft.NETCore.Platforms" version="7.0.2" targetFramework="net48" />
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net48" />
<package id="Microsoft-WindowsAPICodePack-Core" version="1.1.4" targetFramework="net48" />
<package id="Microsoft-WindowsAPICodePack-Shell" version="1.1.4" targetFramework="net48" />
<package id="NETStandard.Library" version="2.0.3" targetFramework="net48" />
<package id="Ookii.Dialogs.WinForms" version="4.0.0" targetFramework="net48" />
<package id="OSVersionExt" version="2.0.0" targetFramework="net48" />
<package id="PortableSettingsProvider" version="0.2.4" targetFramework="net48" />
<package id="Resource.Embedder" version="2.2.0" targetFramework="net48" />
<package id="ResourceLoader" version="3.2.4" targetFramework="net48" />
@@ -18,7 +20,7 @@
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net48" />
<package id="System.Console" version="4.3.1" targetFramework="net48" />
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net48" />
<package id="System.Diagnostics.DiagnosticSource" version="7.0.1" targetFramework="net48" />
<package id="System.Diagnostics.DiagnosticSource" version="7.0.2" targetFramework="net48" />
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net48" />
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net48" />
<package id="System.Globalization" version="4.3.0" targetFramework="net48" />
BIN
View File
Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.
BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

+15 -6
View File
@@ -1,5 +1,5 @@
# APK Tool GUI
![](Image.png)
![](Assets/Image.png)
[![](https://img.shields.io/github/downloads/AndnixSH/APKToolGUI/total?style=for-the-badge)](https://github.com/AndnixSH/APKToolGUI/releases) [![](https://img.shields.io/github/v/release/andnixsh/APKToolGUI?style=for-the-badge)](https://github.com/AndnixSH/APKToolGUI/releases)
@@ -42,13 +42,19 @@ https://github.com/AndnixSH/APKToolGUI/releases
- Chinese Simplified (Incomplete)
### Translation
If you like to help translate with your native language, use Visual Studio 2022
If you like to help translate with your native language, I recommend using Visual Studio 2022. You don't need any programming knowledge, you just edit the GUI and the `.resx` files
- Create new resx file under Languages folder within Visual Studio.
Create new `.resx` file under `Languages` folder, and `Forms/FormXXX.cs/`. To create a new `.resx` under `Forms/FormXXX.cs/`, open the form and select the form to show the properties. In the properties, scroll down until you see Language, and select any language you would like to translate.
- Open any forms. Under properties, scroll down until you see Language, and select any language you would like to translate. It will create new resx file inside cs file
<details>
If you can't use Visual Studio, you can use translator tools like [resxtranslator](https://github.com/HakanL/resxtranslator) or [RESX Translator automat](https://www.utilstudio.com/en/resx-translator/), but make sure the .resx file is added to [APKToolGUI.csproj](https://github.com/AndnixSH/APKToolGUI/blob/master/APKToolGUI/APKToolGUI.csproj), otherwise Visual Studio would not compile it
<summary>Video tutorial</summary>
https://user-images.githubusercontent.com/40742924/227244601-6f796141-ac2d-4c60-b5cd-7f6872604cd7.mp4
</details>
If you can't use Visual Studio, you can use translator tools like [resxtranslator](https://github.com/HakanL/resxtranslator) or [RESX Translator automat](https://www.utilstudio.com/en/resx-translator/), but make sure the `.resx` file is added to [APKToolGUI.csproj](https://github.com/AndnixSH/APKToolGUI/blob/master/APKToolGUI/APKToolGUI.csproj), otherwise Visual Studio would not be able to detect it
Make pull request when you are done
@@ -80,6 +86,9 @@ A: It just a false positive, anti-virus always flag tools/softwares like this as
##### Q: Can you make an automatic APK injecting tool?
A: No, that's out of scope of this tool, and I'm not interested.
##### Q: Can you implement to convert APK to AAB?
A: No, apktool is about recompiling, not about converting to other formats. AAB is only used for distributing an application to Play Store. It is not directly installable.
##### Q: Can you implement an option to protect/pack/obfuscate APK?
A: No, APK protection is beyond the scope of this tool
@@ -105,4 +114,4 @@ Use Visual Studio 2019 and above. NET Framework 4.8 SDK is required
- shadow578 ([ApksMerger](https://github.com/shadow578/ApksMerger))
# Disclaimer
Same as Apktool by iBotPeaches, It is NOT intended for piracy and other non-legal uses. It could be used for localizing, adding some features or support for custom platforms and other GOOD purposes. Just try to be fair with authors of an app, that you use and probably like.
Same as Apktool by iBotPeaches, It is NOT intended for piracy and other non-legal uses. It could be used for localizing, adding some features or support for custom platforms and other GOOD purposes. Just try to be fair with authors of an app, that you use and probably like.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+9
View File
@@ -1,3 +1,12 @@
3.2.1.0
- Fixed an error when decompiling split APK for the second time
- Updated Russian language
- Updated Hungarian language
- Updated dependencies
- Make log output read only
- Updated resources: aapt.exe, aapt2.exe, apksigner.jar, zipalign.exe, adb.exe
- Removed libaapt2_jni.dll
3.2.0.0
- Added split APK merging (Build-in and APKEditor.jar) for decompilation. APKEditor.jar is set to default
- Added incompleted Hungarian translation