38 Commits

Author SHA1 Message Date
AndnixSH 210390718c Update FormMain.resx 2025-08-02 12:18:17 +02:00
AndnixSH 5704df951e Update config.yml 2025-08-02 12:12:19 +02:00
AndnixSH 9e73936f6d Update config.yml 2025-08-02 12:09:58 +02:00
AndnixSH ddd24ecbd6 Update issue template 2025-08-02 12:06:51 +02:00
AndnixSH e50b8a8658 Fixed issue #40 2025-08-02 11:59:15 +02:00
AndnixSH 5f242bca2f Fixed apktool version output 2025-08-02 10:30:43 +02:00
AndnixSH e2784ce65e Updated tools 2025-08-02 10:29:56 +02:00
AndnixSH 93fc85fc33 Include Language.tr.resx in project 2025-07-30 19:12:09 +02:00
AndnixSH 4c389d58fb Merge branch 'pr/37' 2025-07-30 19:10:04 +02:00
AndnixSH 63e08f4f77 Remove invalid Turkish resx files 2025-07-30 19:09:43 +02:00
AndnixSH 556d01ed74 Remove flickering fix due to tabs flickering #38 2025-07-29 21:54:38 +02:00
AndnixSH eb670e7cd5 Merge branch 'pr/33' 2025-07-29 20:19:35 +02:00
AndnixSH 584df30992 Include Japanese in project 2025-07-29 20:19:14 +02:00
AndnixSH e89522cfcb Merge branch 'pr/36' 2025-07-29 19:31:13 +02:00
AndnixSH 9ffedd3cbf Merge branch 'pr/39' 2025-07-29 18:31:20 +02:00
AndnixSH 7228e182cc Update changelog.txt 2025-07-29 18:28:37 +02:00
Renji Yuusei ecce2c8e18 Update FormSettings.vi-VN.resx 2025-06-16 00:33:12 +07:00
Renji Yuusei 5f83b05335 Update FormMain.vi-VN.resx 2025-06-16 00:31:14 +07:00
Renji Yuusei aa0f62bd58 Update FormAboutBox.vi-VN.resx 2025-06-16 00:26:38 +07:00
Renji Yuusei 13420455c7 Update Language.vi-VN.resx 2025-06-15 21:15:18 +07:00
𝗛𝗼𝗹𝗶 3b90881083 Add Turkish 2025-03-27 17:01:03 +03:00
Hen_Ry be7ed3a533 Update FormMain.de.resx 2025-03-22 18:31:59 +01:00
AndnixSH 4ed20cf3de Revert back to DotNetZip but using ProDotNetZip for fixed vulnerability 2025-03-19 17:14:12 +01:00
AndnixSH aca3de41b7 Update AssemblyInfo.cs 2025-03-18 19:35:39 +01:00
AndnixSH a5497c56da Update packages 2025-03-18 19:35:17 +01:00
AndnixSH 4d2a745b11 Reduced UI flickering 2025-03-18 19:17:07 +01:00
AndnixSH b25fd6451b Fixes
- Removed APK links that are no longer available
- Fixed icon not displaying. It will load icon from Play Store as a last resort
- Faster apk parsing
2025-03-17 17:33:47 +01:00
Re*Index. (ot_inc) 19bd457b65 Merge branch 'master' of https://github.com/reindex-ot/APKToolGUI 2025-02-17 07:41:11 +09:00
Re*Index. (ot_inc) 3e1fc75808 Update Language.ja.resx 2025-02-17 07:40:53 +09:00
Re*Index. (ot_inc) 846ef4f5f1 Update Language.ja.resx 2025-02-17 07:35:47 +09:00
Re*Index. (ot_inc) d87d8af361 Delete APKToolGUI/Languages/Language.ja-JP.resx 2025-02-17 07:28:56 +09:00
Re*Index. (ot_inc) 9d31e8c2c8 Add files via upload 2025-02-17 07:28:23 +09:00
Re*Index. (ot_inc) ecd8b45846 Add files via upload 2025-02-17 07:27:28 +09:00
AndnixSH 8834cbcec2 Update changelog.txt 2025-01-30 12:08:17 +01:00
AndnixSH 1ecbb13692 3.3.1.5 2025-01-30 12:08:05 +01:00
AndnixSH 8084d5288b Update deps 2025-01-30 11:43:30 +01:00
AndnixSH 41f3663d4a Added check if stamp-cert-sha256 exists 2025-01-30 11:37:40 +01:00
AndnixSH add093dd6e Updated Apktool and Apkeditor to latest version 2025-01-30 11:25:03 +01:00
39 changed files with 3349 additions and 4479 deletions
+1 -7
View File
@@ -11,16 +11,10 @@ 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: I performed a cursory search of the issue tracker on [Apktool] (https://github.com/iBotPeaches/Apktool/issues?q=is%3Aissue) and [Baksmali](https://github.com/JesusFreke/smali/issues?q=is%3Aissue) but did not found an answer
required: true
- label: I am running the latest version of [APK Tool GUI](https://github.com/AndnixSH/APKToolGUI/releases) and [Apktool.jar](https://github.com/iBotPeaches/Apktool/releases).
required: true
- label: I have tried to decompile and compile without changing anything.
- label: I am running the latest version of [APK Tool GUI](https://github.com/AndnixSH/APKToolGUI/releases).
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
- type: textarea
attributes:
+7 -13
View File
@@ -3,21 +3,15 @@ contact_links:
- name: Apktool Issues List
url: https://github.com/iBotPeaches/Apktool/issues?q=is%3Aissue
about: Check Apktool issues before reporting issue here. Your issue might already exists
- name: Baksmali Issues List
url: https://github.com/JesusFreke/smali/issues?q=is%3Aissue
about: Check Baksmali issues before reporting issue here. Your issue might already exists
- name: System apps modding support forum
url: https://forum.xda-developers.com/all-forums-by-manufacturer
about: For support, questions or help with modding system apps.
- name: Apktool forum
url: https://github.com/iBotPeaches/Apktool/discussions
about: For support, questions or help with Apktool, development and modding
- name: Smali Issues List
url: https://github.com/JesusFreke/smali/issues?q=is%3Aissue
about: Check Baksmali issues before reporting issue here. Your issue might already exists
- name: Smali Issues List 2
url: https://github.com/google/smali/issues?q=is%3Aissue
about: Check Baksmali issues before reporting issue here. Your issue might already exists
- name: Android development and modding support forum
url: https://forum.xda-developers.com/c/android-development-and-hacking.564/
about: For support, questions or help with development and modding
- name: Android development and modding support forum 2
url: https://androidforums.com/forums/android-development.28/
about: For support, questions or help with development and modding
- name: Android development and modding support forum 3
url: https://platinmods.com/forums/modding-questions-discussions.11/
about: For support, questions or help with development and modding
about: For support, questions or help with development and modding'
+43 -35
View File
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props')" />
<Import Project="..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props" Condition="Exists('..\packages\Resource.Embedder.2.2.0\build\Resource.Embedder.props')" />
<Import Project="..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props" Condition="Exists('..\packages\Costura.Fody.5.7.0\build\Costura.Fody.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
@@ -77,8 +77,8 @@
<PropertyGroup />
<PropertyGroup />
<ItemGroup>
<Reference Include="Costura, Version=5.7.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Costura.Fody.5.7.0\lib\netstandard1.0\Costura.dll</HintPath>
<Reference Include="Costura, Version=6.0.0.0, Culture=neutral, PublicKeyToken=9919ef960d84173d, processorArchitecture=MSIL">
<HintPath>..\packages\Costura.Fody.6.0.0\lib\netstandard2.0\Costura.dll</HintPath>
</Reference>
<Reference Include="CustomMarshalers" />
<Reference Include="DarkNet, Version=2.3.0.0, Culture=neutral, processorArchitecture=MSIL">
@@ -112,6 +112,9 @@
</Reference>
<Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" />
<Reference Include="ProDotNetZip, Version=1.20.0.0, Culture=neutral, PublicKeyToken=6583c7c814667745, processorArchitecture=MSIL">
<HintPath>..\packages\ProDotNetZip.1.20.0\lib\netstandard2.0\ProDotNetZip.dll</HintPath>
</Reference>
<Reference Include="ResourceLoader, Version=3.3.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\ResourceLoader.3.3.1\lib\netstandard2.0\ResourceLoader.dll</HintPath>
</Reference>
@@ -124,8 +127,8 @@
<Reference Include="System.Buffers, Version=4.0.4.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.6.0\lib\net462\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Collections.Immutable, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Collections.Immutable.9.0.0\lib\net462\System.Collections.Immutable.dll</HintPath>
<Reference Include="System.Collections.Immutable, Version=9.0.0.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Collections.Immutable.9.0.3\lib\net462\System.Collections.Immutable.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.configuration" />
@@ -135,17 +138,19 @@
<Private>True</Private>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Data.OracleClient" />
<Reference Include="System.Design" />
<Reference Include="System.Diagnostics.DiagnosticSource, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.9.0.0\lib\net462\System.Diagnostics.DiagnosticSource.dll</HintPath>
<Reference Include="System.Diagnostics.DiagnosticSource, Version=9.0.0.3, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.9.0.3\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>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Formats.Nrbf, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Formats.Nrbf.9.0.0\lib\net462\System.Formats.Nrbf.dll</HintPath>
<Reference Include="System.DirectoryServices" />
<Reference Include="System.Formats.Nrbf, Version=9.0.0.3, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Formats.Nrbf.9.0.3\lib\net462\System.Formats.Nrbf.dll</HintPath>
</Reference>
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
@@ -157,17 +162,7 @@
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.Compression.FileSystem" />
<Reference Include="System.IO.Compression.ZipFile, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.ZipFile.4.3.0\lib\net46\System.IO.Compression.ZipFile.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.IO.FileSystem, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.FileSystem.4.3.0\lib\net46\System.IO.FileSystem.dll</HintPath>
<Private>True</Private>
@@ -189,9 +184,10 @@
<Private>True</Private>
</Reference>
<Reference Include="System.Management" />
<Reference Include="System.Memory, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.6.0\lib\net462\System.Memory.dll</HintPath>
<Reference Include="System.Memory, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.6.1\lib\net462\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net" />
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
@@ -211,19 +207,19 @@
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Reflection.Metadata, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.Metadata.9.0.0\lib\net462\System.Reflection.Metadata.dll</HintPath>
<Reference Include="System.Reflection.Metadata, Version=9.0.0.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Reflection.Metadata.9.0.3\lib\net462\System.Reflection.Metadata.dll</HintPath>
</Reference>
<Reference Include="System.Resources.Extensions, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Resources.Extensions.9.0.0\lib\net462\System.Resources.Extensions.dll</HintPath>
<Reference Include="System.Resources.Extensions, Version=9.0.0.3, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Resources.Extensions.9.0.3\lib\net462\System.Resources.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Runtime, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.4.3.1\lib\net462\System.Runtime.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.0\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.1.1\lib\net462\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.Extensions, Version=4.1.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.Extensions.4.3.1\lib\net462\System.Runtime.Extensions.dll</HintPath>
@@ -241,6 +237,9 @@
<Private>True</Private>
</Reference>
<Reference Include="System.Security" />
<Reference Include="System.Security.AccessControl, Version=6.0.0.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.AccessControl.6.0.1\lib\net461\System.Security.AccessControl.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
<Private>True</Private>
@@ -261,14 +260,22 @@
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Permissions, Version=9.0.0.3, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Permissions.9.0.3\lib\net462\System.Security.Permissions.dll</HintPath>
</Reference>
<Reference Include="System.Security.Principal.Windows, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Principal.Windows.5.0.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
</Reference>
<Reference Include="System.ServiceProcess" />
<Reference Include="System.Text.Encoding.CodePages, Version=9.0.0.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encoding.CodePages.9.0.3\lib\net462\System.Text.Encoding.CodePages.dll</HintPath>
</Reference>
<Reference Include="System.Text.RegularExpressions, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.RegularExpressions.4.3.1\lib\net463\System.Text.RegularExpressions.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.Xaml" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
@@ -415,6 +422,7 @@
<EmbeddedResource Include="Languages\Language.hu.resx" />
<EmbeddedResource Include="Languages\Language.pt-BR.resx" />
<EmbeddedResource Include="Languages\Language.ru.resx" />
<EmbeddedResource Include="Languages\Language.tr.resx" />
<EmbeddedResource Include="Languages\Language.zh-CN.resx" />
<EmbeddedResource Include="Languages\Language.vi-VN.resx" />
<EmbeddedResource Include="Properties\Resources.resx">
@@ -486,19 +494,19 @@
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<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\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.9.0\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.9.0\build\Fody.targets'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.6.0.0\build\Costura.Fody.props'))" />
<Error Condition="!Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets'))" />
<Error Condition="!Exists('..\packages\Fody.6.9.2\build\Fody.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Fody.6.9.2\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')" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<Import Project="..\packages\Fody.6.9.0\build\Fody.targets" Condition="Exists('..\packages\Fody.6.9.0\build\Fody.targets')" />
<Import Project="..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets" Condition="Exists('..\packages\Costura.Fody.6.0.0\build\Costura.Fody.targets')" />
<Import Project="..\packages\Fody.6.9.2\build\Fody.targets" Condition="Exists('..\packages\Fody.6.9.2\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 -1
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PublishUrlHistory>publish\</PublishUrlHistory>
@@ -9,6 +9,7 @@
<ErrorReportUrlHistory />
<FallbackCulture>ru-RU</FallbackCulture>
<VerifyUploadedFiles>false</VerifyUploadedFiles>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
<PropertyGroup>
<EnableSecurityDebugging>false</EnableSecurityDebugging>
+89 -22
View File
@@ -1,4 +1,5 @@
using System;
using APKToolGUI.Web;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
@@ -66,10 +67,23 @@ namespace APKToolGUI.Utils
public string ApkDlLink;
public string AppIcon;
public string FullInfo;
internal string AppIcon = null;
internal string AppIcon120 = null;
internal string AppIcon160 = null;
internal string AppIcon240 = null;
internal string AppIcon320 = null;
internal string AppIcon480 = null;
internal string AppIcon640 = null;
internal string AppIcon65534 = null;
public bool Parse(string file)
{
@@ -110,9 +124,6 @@ namespace APKToolGUI.Utils
case "application-label":
AppName = StringExt.Regex(@"(?<=application-label:\')(.*?)(?=\')", line);
break;
case "application":
AppIcon = GetIcon(file, StringExt.Regex(@"(?<=icon=\')(.*?)(?=\')", line));
break;
case "launchable-activity":
LaunchableActivity = StringExt.Regex(@"(?<=name=\')(.*?)(?=\')", line);
break;
@@ -142,7 +153,17 @@ namespace APKToolGUI.Utils
PlayStoreLink = "https://play.google.com/store/apps/details?id=" + PackageName;
ApkComboLink = "https://apkcombo.com/a/" + PackageName;
ApkPureLink = "https://apkpure.com/a/" + PackageName;
ApkAioLink = "https://apkaio.com/app/" + PackageName;
ApkSupportLink = "https://apk.support/app/" + PackageName;
ApkMirrorLink = "https://www.apkmirror.com/?post_type=app_release&searchtype=apk&s=" + PackageName;
ApkGkLink = "https://apkgk.com/" + PackageName + "/download";
AppIcon120 = StringExt.Regex(@"(?<=application-icon-120:\')(.*?)(?=\')", FullInfo);
AppIcon160 = StringExt.Regex(@"(?<=application-icon-160:\')(.*?)(?=\')", FullInfo);
AppIcon240 = StringExt.Regex(@"(?<=application-icon-240:\')(.*?)(?=\')", FullInfo);
AppIcon320 = StringExt.Regex(@"(?<=application-icon-320:\')(.*?)(?=\')", FullInfo);
AppIcon480 = StringExt.Regex(@"(?<=application-icon-480:\')(.*?)(?=\')", FullInfo);
AppIcon640 = StringExt.Regex(@"(?<=application-icon-640:\')(.*?)(?=\')", FullInfo);
AppIcon65534 = StringExt.Regex(@"(?<=application-icon-65534:\')(.*?)(?=\')", FullInfo);
result = true;
}
@@ -170,31 +191,77 @@ namespace APKToolGUI.Utils
return apkinfo;
}
string[] iconFolder = { "mipmap-xxxhdpi-v4", "mipmap-xxhdpi-v4", "mipmap-xhdpi-v4", "mipmap-hdpi-v4", "mipmap-mdpi-v4", "mipmap-xhdpi", "mipmap-hdpi", "drawable-xxxhdpi-v4", "drawable-xxhdpi-v4", "drawable-xhdpi-v4", "drawable-hdpi-v4", "drawable-mdpi-v4" };
private string GetIcon(string apkPath, string iconPath)
public string GetIcon(string apkPath)
{
iconPath = iconPath.Replace(".xml", ".png");
string[] png = { "mipmap-xxxhdpi-v4", "mipmap-xxhdpi-v4", "mipmap-xhdpi-v4", "mipmap-hdpi-v4", "mipmap-mdpi-v4", "mipmap-xhdpi", "mipmap-hdpi", "drawable-xxxhdpi-v4", "drawable-xxhdpi-v4", "drawable-xhdpi-v4", "drawable-hdpi-v4", "drawable-mdpi-v4" };
string icon = "";
if (iconPath.Contains("anydpi-v26"))
if (!string.IsNullOrEmpty(AppIcon65534))
icon = AppIcon65534;
else if (!string.IsNullOrEmpty(AppIcon640))
icon = AppIcon640;
else if (!string.IsNullOrEmpty(AppIcon480))
icon = AppIcon480;
else if (!string.IsNullOrEmpty(AppIcon320))
icon = AppIcon320;
else if (!string.IsNullOrEmpty(AppIcon240))
icon = AppIcon240;
else if (!string.IsNullOrEmpty(AppIcon160))
icon = AppIcon160;
else if (!string.IsNullOrEmpty(AppIcon120))
icon = AppIcon120;
icon = icon.Replace(".xml", ".png");
Debug.WriteLine("Icon: " + icon);
string cacheDir = Path.Combine(Program.TEMP_PATH, PackageName);
string iconLocation = Path.Combine(cacheDir, Path.GetFileName(icon));
Directory.CreateDirectory(cacheDir);
if (icon.Contains("anydpi-v26"))
{
foreach (string folder in iconFolder)
foreach (string Png in png)
{
string icon = iconPath.Replace("mipmap-anydpi-v26", folder).Replace("drawable-anydpi-v26", folder);
if (ZipUtils.Exists(apkPath, icon))
string icon2 = icon.Replace("mipmap-anydpi-v26", Png).Replace("drawable-anydpi-v26", Png);
ZipUtils.ExtractFile(apkPath, icon2, cacheDir);
if (File.Exists(iconLocation))
{
Debug.WriteLine("Icon path " + icon);
return icon;
break;
}
}
return iconPath.Replace("mipmap-anydpi-v26", "mipmap-xhdpi").Replace(".xml", ".png");
}
else if (icon.Contains("v26"))
{
string icon2 = icon.Replace("v26", "v4");
ZipUtils.ExtractFile(apkPath, icon2, cacheDir);
icon2 = icon.Replace("-v26", "");
ZipUtils.ExtractFile(apkPath, icon2, cacheDir);
}
else
{
Debug.WriteLine("Icon path " + iconPath);
return iconPath;
ZipUtils.ExtractFile(apkPath, icon, cacheDir);
}
if (!File.Exists(iconLocation))
{
try
{
WebDownload w = new WebDownload();
string ps = w.DownloadString("https://play.google.com/store/apps/details?id=" + PackageName);
//File.WriteAllText("R:\\t.txt", ps);
string icondl = Path.Combine(cacheDir, "icon.png");
Directory.CreateDirectory(cacheDir);
w.DownloadFile(StringExt.Regex(@"(?<=\""image\"":\"")(.*?)(?=\"",\"")", ps), icondl);
iconLocation = icondl;
}
catch
{
}
}
return iconLocation;
}
//https://apilevels.com/
@@ -207,7 +274,7 @@ namespace APKToolGUI.Utils
case "34":
return sdk + ": Android 14";
case "33":
return sdk + ": Android 14";
return sdk + ": Android 13";
case "32":
return sdk + ": Android 12.0L";
case "31":
+12
View File
@@ -252,6 +252,18 @@ namespace APKToolGUI
}
public string GetVersion()
{
using (JarProcess apktoolJar = new JarProcess(JavaPath, JarPath))
{
apktoolJar.EnableRaisingEvents = false;
apktoolJar.Start("version");
string version = apktoolJar.StandardOutput.ReadToEnd();
apktoolJar.WaitForExit(3000);
return version.Replace("\r\n", "");
}
}
public string GetVersionOld()
{
using (JarProcess apktoolJar = new JarProcess(JavaPath, JarPath))
{
+39 -4
View File
@@ -29,12 +29,27 @@
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged32Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with line breaks.</xs:documentation>
<xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX86Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="Unmanaged64Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 64 bit assembly names to include, delimited with line breaks.</xs:documentation>
<xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinX64Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="UnmanagedWinArm64Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with line breaks.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element minOccurs="0" maxOccurs="1" name="PreloadOrder" type="xs:string">
@@ -73,6 +88,11 @@
<xs:documentation>As part of Costura, embedded assemblies are no longer included as part of the build. This cleanup can be turned off.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DisableEventSubscription" type="xs:boolean">
<xs:annotation>
<xs:documentation>The attach method no longer subscribes to the `AppDomain.AssemblyResolve` (.NET 4.x) and `AssemblyLoadContext.Resolving` (.NET 6.0+) events.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LoadAtModuleInit" type="xs:boolean">
<xs:annotation>
<xs:documentation>Costura by default will load as part of the module initialization. This flag disables that behavior. Make sure you call CosturaUtility.Initialize() somewhere in your code.</xs:documentation>
@@ -105,12 +125,27 @@
</xs:attribute>
<xs:attribute name="Unmanaged32Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 32 bit assembly names to include, delimited with |.</xs:documentation>
<xs:documentation>Obsolete, use UnmanagedWinX86Assemblies instead</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UnmanagedWinX86Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged X86 (32 bit) assembly names to include, delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Unmanaged64Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged 64 bit assembly names to include, delimited with |.</xs:documentation>
<xs:documentation>Obsolete, use UnmanagedWinX64Assemblies instead</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UnmanagedWinX64Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged X64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UnmanagedWinArm64Assemblies" type="xs:string">
<xs:annotation>
<xs:documentation>A list of unmanaged Arm64 (64 bit) assembly names to include, delimited with |.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="PreloadOrder" type="xs:string">
+35 -35
View File
@@ -1,63 +1,63 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Sơ đồ Microsoft ResX
Microsoft ResX Schema
Phiên bản 2.0
Version 2.0
Mục tiêu chính của định dạng này là cho phép một định dạng XML đơn giản
đọc được chủ yếu bằng tay. Việc tạo và phân tích cú pháp các
kiểu dữ liệu khác nhau được thực hiện thông qua các lớp TypeConverter
liên kết với các kiểu dữ liệu.
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Ví dụ:
Example:
... tiêu đề & sơ đồ ado.net/XML ...
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>đây là chuỗi dài của tôi</value><comment>đây là một bình luận</comment></data>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[đối tượng .NET Framework được tuần tự hóa mã hóa mime base64]</value>
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[chuỗi mã hóa mime base64 đại diện cho mảng byte của đối tượng .NET Framework]</value>
<comment>Đây là một bình luận</comment>
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
Có bất kỳ số lượng hàng "resheader" nào chứa đơn giản
các cặp tên/giá trị.
There are any number of "resheader" rows that contain simple
name/value pairs.
Mỗi hàng dữ liệu chứa một tên và giá trị. Hàng cũng chứa một
kiểu hoặc mimetype. Kiểu tương ứng với một lớp .NET hỗ trợ
chuyển đổi văn bản/giá trị thông qua kiến trúc TypeConverter.
Các lớp không hỗ trợ điều này được tuần tự hóa và lưu trữ với
mimetype được đặt.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
mimetype được sử dụng cho các đối tượng được tuần tự hóa và cho biết
ResXResourceReader cách khôi phục đối tượng. Hiện tại điều này không
có thể mở rộng. Đối với một mimetype nhất định, giá trị phải được đặt cho phù hợp:
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Lưu ý - application/x-microsoft.net.object.binary.base64 là định dạng
ResXResourceWriter sẽ tạo ra, tuy nhiên trình đọc có thể
đọc bất kỳ định dạng nào được liệt kê bên dưới.
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : Đối tượng phải được tuần tự hóa với
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: và sau đó được mã hóa bằng mã hóa base64.
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : Đối tượng phải được tuần tự hóa với
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: và sau đó được mã hóa bằng mã hóa base64.
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : Đối tượng phải được tuần tự hóa thành một mảng byte
: sử dụng System.ComponentModel.TypeConverter
: và sau đó được mã hóa bằng mã hóa base64.
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
@@ -130,9 +130,9 @@
<value>Mô tả</value>
</data>
<data name="linkLabel1.Text" xml:space="preserve">
<value>Phản hồi Github</value>
<value>Kho Github</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Giới thiệu</value>
</data>
</root>
</root>
-27
View File
@@ -75,8 +75,6 @@
this.label31 = new System.Windows.Forms.Label();
this.archSdkTxtBox = new System.Windows.Forms.TextBox();
this.label30 = new System.Windows.Forms.Label();
this.apkDlLinkBtn = new System.Windows.Forms.Button();
this.apkSosLinkBtn = new System.Windows.Forms.Button();
this.apkMirrorLinkBtn = new System.Windows.Forms.Button();
this.apkSupportLinkBtn = new System.Windows.Forms.Button();
this.apkGkLinkBtn = new System.Windows.Forms.Button();
@@ -91,7 +89,6 @@
this.fileTxtBox = new System.Windows.Forms.TextBox();
this.label14 = new System.Windows.Forms.Label();
this.densityTxtBox = new System.Windows.Forms.TextBox();
this.apkAioLinkBtn = new System.Windows.Forms.Button();
this.packNameTxtBox = new System.Windows.Forms.TextBox();
this.apkPureLinkBtn = new System.Windows.Forms.Button();
this.verTxtBox = new System.Windows.Forms.TextBox();
@@ -610,8 +607,6 @@
this.basicInfoTabPage.Controls.Add(this.label31);
this.basicInfoTabPage.Controls.Add(this.archSdkTxtBox);
this.basicInfoTabPage.Controls.Add(this.label30);
this.basicInfoTabPage.Controls.Add(this.apkDlLinkBtn);
this.basicInfoTabPage.Controls.Add(this.apkSosLinkBtn);
this.basicInfoTabPage.Controls.Add(this.apkMirrorLinkBtn);
this.basicInfoTabPage.Controls.Add(this.apkSupportLinkBtn);
this.basicInfoTabPage.Controls.Add(this.apkGkLinkBtn);
@@ -626,7 +621,6 @@
this.basicInfoTabPage.Controls.Add(this.fileTxtBox);
this.basicInfoTabPage.Controls.Add(this.label14);
this.basicInfoTabPage.Controls.Add(this.densityTxtBox);
this.basicInfoTabPage.Controls.Add(this.apkAioLinkBtn);
this.basicInfoTabPage.Controls.Add(this.packNameTxtBox);
this.basicInfoTabPage.Controls.Add(this.apkPureLinkBtn);
this.basicInfoTabPage.Controls.Add(this.verTxtBox);
@@ -680,18 +674,6 @@
resources.ApplyResources(this.label30, "label30");
this.label30.Name = "label30";
//
// apkDlLinkBtn
//
resources.ApplyResources(this.apkDlLinkBtn, "apkDlLinkBtn");
this.apkDlLinkBtn.Name = "apkDlLinkBtn";
this.apkDlLinkBtn.UseVisualStyleBackColor = true;
//
// apkSosLinkBtn
//
resources.ApplyResources(this.apkSosLinkBtn, "apkSosLinkBtn");
this.apkSosLinkBtn.Name = "apkSosLinkBtn";
this.apkSosLinkBtn.UseVisualStyleBackColor = true;
//
// apkMirrorLinkBtn
//
resources.ApplyResources(this.apkMirrorLinkBtn, "apkMirrorLinkBtn");
@@ -772,12 +754,6 @@
this.densityTxtBox.Name = "densityTxtBox";
this.densityTxtBox.ReadOnly = true;
//
// apkAioLinkBtn
//
resources.ApplyResources(this.apkAioLinkBtn, "apkAioLinkBtn");
this.apkAioLinkBtn.Name = "apkAioLinkBtn";
this.apkAioLinkBtn.UseVisualStyleBackColor = true;
//
// packNameTxtBox
//
resources.ApplyResources(this.packNameTxtBox, "packNameTxtBox");
@@ -2423,7 +2399,6 @@
internal System.Windows.Forms.Button baksmaliBrowseOutputBtn;
internal System.Windows.Forms.TextBox baksmaliBrowseOutputTxtBox;
internal System.Windows.Forms.Button openApktoolYmlBtn;
internal System.Windows.Forms.Button apkAioLinkBtn;
private System.Windows.Forms.Label label29;
private System.Windows.Forms.Label label28;
internal System.Windows.Forms.Button signApkOpenDirBtn;
@@ -2435,8 +2410,6 @@
private System.Windows.Forms.RichTextBox fullInfoTextBox;
internal System.Windows.Forms.TabPage basicInfoTabPage;
internal System.Windows.Forms.Button apkMirrorLinkBtn;
internal System.Windows.Forms.Button apkDlLinkBtn;
internal System.Windows.Forms.Button apkSosLinkBtn;
internal System.Windows.Forms.Button apkSupportLinkBtn;
internal System.Windows.Forms.Button apkGkLinkBtn;
internal System.Windows.Forms.TextBox archSdkTxtBox;
+104 -106
View File
@@ -10,18 +10,13 @@ using APKToolGUI.Properties;
using APKToolGUI.ApkTool;
using APKToolGUI.Utils;
using System.Threading.Tasks;
using System.Collections.Generic;
using APKToolGUI.Handlers;
using Microsoft.WindowsAPICodePack.Taskbar;
using System.Media;
using System.Linq;
using System.Windows.Interop;
using System.Security.Cryptography;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using APKToolGUI.Controls;
using Dark.Net;
using APKEasyTool;
using System.IO.Compression;
using Ionic.Zip;
using System.Text.RegularExpressions;
namespace APKToolGUI
{
@@ -112,72 +107,6 @@ namespace APKToolGUI
new TaskBarJumpList(Handle);
}
private async void FormMain_Shown(object sender, EventArgs e)
{
await Task.Factory.StartNew(() =>
{
InitializeUpdateChecker();
InitializeZipalign();
javaPath = JavaUtils.GetJavaPath();
if (javaPath != null)
{
InitializeBaksmali();
InitializeSmali();
InitializeAPKTool();
InitializeSignapk();
InitializeApkEditor();
string javaVersion = apktool.GetJavaVersion();
if (javaVersion != null)
{
ToLog(ApktoolEventType.None, javaVersion);
string apktoolVersion = apktool.GetVersion();
string apkeditorVersion = apkeditor.GetVersion();
if (!String.IsNullOrWhiteSpace(apktoolVersion))
ToLog(ApktoolEventType.None, String.Format(Language.APKToolVersion + " {0}", apktoolVersion));
else
ToLog(ApktoolEventType.Error, Language.CantDetectApktoolVersion);
if (!String.IsNullOrWhiteSpace(apkeditorVersion))
ToLog(ApktoolEventType.None, apkeditorVersion);
else
ToLog(ApktoolEventType.Error, Language.CantDetectApkeditorVersion);
}
else
ToLog(ApktoolEventType.Error, Language.ErrorJavaDetect);
}
else
{
ToLog(ApktoolEventType.Error, Language.ErrorJavaDetect);
BeginInvoke(new MethodInvoker(delegate
{
tabPageMain.Enabled = false;
tabPageBaksmali.Enabled = false;
tabPageInstallFramework.Enabled = false;
}));
}
InitializeAdb();
if (AdminUtils.IsAdministrator())
ToLog(ApktoolEventType.Warning, Language.DragDropNotSupported);
else
ToLog(ApktoolEventType.None, Language.DragDropSupported);
ToLog(ApktoolEventType.None, String.Format(Language.TempDirectory, Program.TEMP_PATH));
TimeSpan updateInterval = DateTime.Now - Settings.Default.LastUpdateCheck;
if (updateInterval.Days > 0 && Settings.Default.CheckForUpdateAtStartup)
updateCheker.CheckAsync(true);
});
ToStatus(Language.Done, Resources.done);
RunCmdArgs();
await ListDevices();
}
#region Context menu args
private async void RunCmdArgs()
{
@@ -253,6 +182,8 @@ namespace APKToolGUI
string splitPath = Path.Combine(Program.TEMP_PATH, "SplitInfo");
string arch = "";
bool parsed = false;
await Task.Factory.StartNew(() =>
{
DirectoryUtils.Delete(splitPath);
@@ -260,48 +191,42 @@ namespace APKToolGUI
{
Directory.CreateDirectory(splitPath);
using (ZipArchive archive = ZipFile.OpenRead(file))
using (ZipFile zipDest = ZipFile.Read(file))
{
bool mainApkFound = false;
foreach (ZipArchiveEntry entry in archive.Entries)
foreach (ZipEntry entry in zipDest.Entries)
{
if (!mainApkFound && !entry.FullName.Contains("config.") && entry.FullName.EndsWith(".apk"))
if (!mainApkFound && !entry.FileName.Contains("config.") && entry.FileName.EndsWith(".apk"))
{
Debug.WriteLine("Found main APK: " + entry.FullName);
string extractPath = Path.Combine(splitPath, entry.FullName);
Debug.WriteLine("Found main APK: " + entry.FileName);
string extractPath = Path.Combine(splitPath, entry.FileName);
Directory.CreateDirectory(Path.GetDirectoryName(extractPath));
entry.ExtractToFile(extractPath, true);
entry.Extract(splitPath, ExtractExistingFileAction.OverwriteSilently);
file = extractPath;
mainApkFound = true;
}
if (entry.FullName.Contains("lib/armeabi-v7a"))
if (entry.FileName.Contains("lib/armeabi-v7a"))
{
arch += "armeabi-v7a, ";
}
if (entry.FullName.Contains("lib/arm64-v8a"))
if (entry.FileName.Contains("lib/arm64-v8a"))
{
arch += "arm64-v8a, ";
}
if (entry.FullName.Contains("lib/x86"))
if (entry.FileName.Contains("lib/x86"))
{
arch += "x86, ";
}
if (entry.FullName.Contains("lib/x86_64"))
if (entry.FileName.Contains("lib/x86_64"))
{
arch += "x86_64, ";
}
}
}
}
});
bool parsed = false;
string signature = null;
await Task.Factory.StartNew(() =>
{
signature = signapk.GetSignature(file);
aapt = new AaptParser();
parsed = aapt.Parse(file);
});
@@ -313,7 +238,6 @@ namespace APKToolGUI
apkIconPicBox.Image.Dispose();
apkIconPicBox.Image = null;
}
sigTxtBox.Text = signature;
fileTxtBox.Text = aapt.ApkFile;
appTxtBox.Text = aapt.AppName;
packNameTxtBox.Text = aapt.PackageName;
@@ -332,20 +256,20 @@ namespace APKToolGUI
archSdkTxtBox.Text = arch.RemoveLast(", ");
launchActivityTxtBox.Text = aapt.LaunchableActivity;
if (aapt.AppIcon != null)
{
await Task.Factory.StartNew(() =>
{
ZipUtils.ExtractFile(file, aapt.AppIcon, Path.Combine(Program.TEMP_PATH, aapt.PackageName));
});
string icon = Path.Combine(Program.TEMP_PATH, aapt.PackageName, Path.GetFileName(aapt.AppIcon));
if (File.Exists(icon))
{
apkIconPicBox.Image = BitmapUtils.LoadBitmap(icon);
}
}
apkIconPicBox.Image = BitmapUtils.LoadBitmap(aapt.GetIcon(file));
DirectoryUtils.Delete(splitPath);
}
string signature = null;
sigTxtBox.Text = "Loading...";
await Task.Factory.StartNew(() =>
{
signature = signapk.GetSignature(file);
});
sigTxtBox.Text = signature;
}
catch (Exception ex)
{
@@ -745,8 +669,11 @@ namespace APKToolGUI
}
string apktoolVersion = apktool.GetVersion();
if (!String.IsNullOrWhiteSpace(apktoolVersion))
ToLog(ApktoolEventType.None, String.Format(Language.APKToolVersion + " \"{0}\"", apktoolVersion));
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}\"");
else
ToLog(ApktoolEventType.Error, Language.CantDetectApktoolVersion);
@@ -961,8 +888,9 @@ namespace APKToolGUI
if (Directory.Exists(Path.Combine(inputFolder, "original", "META-INF")))
{
string unsignedApkPath = Path.Combine(Path.GetDirectoryName(outputCompiledApkFile), Path.GetFileName(outputUnsignedApk));
ZipUtils.AddDirectory(outputFile, Path.Combine(inputFolder, "original", "META-INF"), "META-INF");
ZipUtils.AddFile(outputFile, Path.Combine(inputFolder, "original", "stamp-cert-sha256"));
ZipUtils.UpdateDirectory(outputFile, Path.Combine(inputFolder, "original", "META-INF"), "META-INF");
if (File.Exists(Path.Combine(inputFolder, "original", "stamp-cert-sha256")))
ZipUtils.UpdateFile(outputFile, Path.Combine(inputFolder, "original", "stamp-cert-sha256"));
ToLog(ApktoolEventType.Infomation, String.Format(Language.CopyFileTo, outputFile, unsignedApkPath));
File.Copy(outputFile, unsignedApkPath, true);
}
@@ -1448,6 +1376,76 @@ namespace APKToolGUI
#endregion
#region Form handlers
private async void FormMain_Shown(object sender, EventArgs e)
{
await Task.Factory.StartNew(() =>
{
InitializeUpdateChecker();
InitializeZipalign();
javaPath = JavaUtils.GetJavaPath();
if (javaPath != null)
{
InitializeBaksmali();
InitializeSmali();
InitializeAPKTool();
InitializeSignapk();
InitializeApkEditor();
string javaVersion = apktool.GetJavaVersion();
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}");
else
ToLog(ApktoolEventType.Error, Language.CantDetectApktoolVersion);
string apkeditorVersion = apkeditor.GetVersion();
if (!String.IsNullOrWhiteSpace(apkeditorVersion))
ToLog(ApktoolEventType.None, apkeditorVersion);
else
ToLog(ApktoolEventType.Error, Language.CantDetectApkeditorVersion);
}
else
ToLog(ApktoolEventType.Error, Language.ErrorJavaDetect);
}
else
{
ToLog(ApktoolEventType.Error, Language.ErrorJavaDetect);
BeginInvoke(new MethodInvoker(delegate
{
tabPageMain.Enabled = false;
tabPageBaksmali.Enabled = false;
tabPageInstallFramework.Enabled = false;
}));
}
InitializeAdb();
if (AdminUtils.IsAdministrator())
ToLog(ApktoolEventType.Warning, Language.DragDropNotSupported);
else
ToLog(ApktoolEventType.None, Language.DragDropSupported);
ToLog(ApktoolEventType.None, String.Format(Language.TempDirectory, Program.TEMP_PATH));
TimeSpan updateInterval = DateTime.Now - Settings.Default.LastUpdateCheck;
if (updateInterval.Days > 0 && Settings.Default.CheckForUpdateAtStartup)
updateCheker.CheckAsync(true);
});
ToStatus(Language.Done, Resources.done);
RunCmdArgs();
await ListDevices();
}
private async void clearTempFolderToolStripMenuItem_Click(object sender, EventArgs e)
{
Running(Language.ClearTempFolder);
+3
View File
@@ -277,6 +277,9 @@
<data name="groupBox_DECODE_Options.Text" xml:space="preserve">
<value>Optionen</value>
</data>
<data name="checkBox3.Text" xml:space="preserve">
<value>Anzahl der zu verwendenden Threads festlegen.</value>
</data>
<data name="checkBox7.Size" type="System.Drawing.Size, System.Drawing">
<value>457, 17</value>
</data>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+14 -66
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
@@ -117,18 +117,8 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="checkBox7.Size" type="System.Drawing.Size, System.Drawing">
<value>126, 17</value>
</data>
<data name="checkBox7.Text" xml:space="preserve">
<value>Lệnh JVM tùy chỉnh</value>
</data>
<data name="checkBox6.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 271</value>
</data>
<data name="checkBox6.Size" type="System.Drawing.Size, System.Drawing">
<value>96, 17</value>
<value>Tùy chỉnh lệnh JVM</value>
</data>
<data name="checkBox6.Text" xml:space="preserve">
<value>Chế độ gỡ lỗi</value>
@@ -142,72 +132,33 @@
<data name="themeComboBox.Items2" xml:space="preserve">
<value>Tối</value>
</data>
<data name="themeComboBox.Location" type="System.Drawing.Point, System.Drawing">
<value>275, 243</value>
</data>
<data name="label1.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 244</value>
</data>
<data name="label1.Size" type="System.Drawing.Size, System.Drawing">
<value>57, 13</value>
</data>
<data name="label1.Text" xml:space="preserve">
<value>Giao diện</value>
</data>
<data name="customApkToolTxtBox.Location" type="System.Drawing.Point, System.Drawing">
<value>274, 216</value>
</data>
<data name="customApktoolBtn.Location" type="System.Drawing.Point, System.Drawing">
<value>483, 216</value>
</data>
<data name="useCustomApktoolChk.Location" type="System.Drawing.Point, System.Drawing">
<value>9, 218</value>
</data>
<data name="useCustomApktoolChk.Size" type="System.Drawing.Size, System.Drawing">
<value>144, 17</value>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="useCustomApktoolChk.TabIndex" type="System.Resources.ResXNullRef, System.Windows.Forms">
<value />
</data>
<data name="useCustomApktoolChk.Text" xml:space="preserve">
<value>Vị trí apktool tùy chỉnh</value>
</data>
<data name="label6.Size" type="System.Drawing.Size, System.Drawing">
<value>391, 26</value>
</data>
<data name="label6.Text" xml:space="preserve">
<value>Việc di chuyển tệp trong quá trình thao tác vào thư mục tạm cần thời gian,
vui lòng kiên nhẫn chờ đợi</value>
</data>
<data name="checkBox5.Size" type="System.Drawing.Size, System.Drawing">
<value>294, 17</value>
<value>Việc di chuyển các tệp trong quá trình xử lý vào thư mục tạm có thể mất thời gian, vui lòng kiên nhẫn chờ đợi</value>
</data>
<data name="checkBox5.Text" xml:space="preserve">
<value>Hỗ trợ tên tệp UTF-8, bật để giải quyết lỗi tiếng Việt</value>
</data>
<data name="checkBox4.Size" type="System.Drawing.Size, System.Drawing">
<value>125, 17</value>
<value>Hỗ trợ tên tệp UTF-8 (bật khi tên tệp bị lỗi hiển thị)</value>
</data>
<data name="checkBox4.Text" xml:space="preserve">
<value>Vị trí Java tùy chỉnh</value>
</data>
<data name="checkBox3.Size" type="System.Drawing.Size, System.Drawing">
<value>174, 17</value>
</data>
<data name="checkBox3.Text" xml:space="preserve">
<value>Vị trí bộ nhớ cache tùy chỉnh</value>
</data>
<data name="checkBox2.Size" type="System.Drawing.Size, System.Drawing">
<value>123, 17</value>
<value>Vị trí bộ đệm tùy chỉnh</value>
</data>
<data name="checkBox2.Text" xml:space="preserve">
<value>Âm thanh hoàn tất</value>
</data>
<data name="checkBox1.Size" type="System.Drawing.Size, System.Drawing">
<value>232, 17</value>
<value>Âm báo hoàn thành</value>
</data>
<data name="checkBox1.Text" xml:space="preserve">
<value>Xóa nhật ký trước khi thực hiện thao tác</value>
</data>
<data name="checkBoxCheckUpdateStartup.Size" type="System.Drawing.Size, System.Drawing">
<value>191, 17</value>
<value>Xóa nhật ký trước khi thực hiện</value>
</data>
<data name="checkBoxCheckUpdateStartup.Text" xml:space="preserve">
<value>Kiểm tra cập nhật khi khởi động</value>
@@ -218,14 +169,11 @@ vui lòng kiên nhẫn chờ đợi</value>
<data name="groupBoxLanguage.Text" xml:space="preserve">
<value>Ngôn ngữ</value>
</data>
<data name="ignoreOutputContextMenuBox.Size" type="System.Drawing.Size, System.Drawing">
<value>310, 17</value>
</data>
<data name="ignoreOutputContextMenuBox.Text" xml:space="preserve">
<value>Bỏ qua thư mục đầu ra tùy chỉnh trong menu ngữ cảnh</value>
<value>Bỏ qua thư mục đầu ra tùy chỉnh của menu chuột phải</value>
</data>
<data name="labelAdminRights.Text" xml:space="preserve">
<value>Cần quyền quản trị viên</value>
<value>Yêu cầu quyền quản trị</value>
</data>
<data name="buttonAddContextMenu.Text" xml:space="preserve">
<value>Cài đặt</value>
@@ -234,7 +182,7 @@ vui lòng kiên nhẫn chờ đợi</value>
<value>Gỡ cài đặt</value>
</data>
<data name="groupBoxContextMenu.Text" xml:space="preserve">
<value>Menu ngữ cảnh</value>
<value>Menu chuột phải</value>
</data>
<data name="tabPage1.Text" xml:space="preserve">
<value>Chung</value>
@@ -248,4 +196,4 @@ vui lòng kiên nhẫn chờ đợi</value>
<data name="$this.Text" xml:space="preserve">
<value>Cài đặt</value>
</data>
</root>
</root>
@@ -20,10 +20,7 @@ namespace APKToolGUI.Handlers
main.apkPureLinkBtn.Click += apkPureLinkBtn_Click;
main.apkGkLinkBtn.Click += apkGkLinkBtn_Click;
main.apkSupportLinkBtn.Click += apkSupportLinkBtn_Click;
main.apkSosLinkBtn.Click += apkSosLinkBtn_Click;
main.apkMirrorLinkBtn.Click += apkMirrorLinkBtn_Click;
main.apkAioLinkBtn.Click += apkAioLinkBtn_Click;
main.apkDlLinkBtn.Click += apkDlLinkBtn_Click;
}
private void selApkFileInfoBtn_Click(object sender, EventArgs e)
@@ -66,29 +63,11 @@ namespace APKToolGUI.Handlers
if (main.aapt != null)
Process.Start(main.aapt.ApkSupportLink);
}
private void apkSosLinkBtn_Click(object sender, EventArgs e)
{
if (main.aapt != null)
Process.Start(main.aapt.ApkSosLink);
}
private void apkMirrorLinkBtn_Click(object sender, EventArgs e)
{
if (main.aapt != null)
Process.Start(main.aapt.ApkMirrorLink);
}
private void apkAioLinkBtn_Click(object sender, EventArgs e)
{
if (main.aapt != null)
Process.Start(main.aapt.ApkAioLink);
}
private void apkDlLinkBtn_Click(object sender, EventArgs e)
{
if (main.aapt != null)
Process.Start(main.aapt.ApkDlLink);
}
}
}
@@ -54,7 +54,7 @@ namespace APKToolGUI.Handlers
{
using (OpenFileDialog ofd = new OpenFileDialog())
{
ofd.Filter = "Android Package (*.apk;*.xapk;*.zip*.apkm;*.apks)|*.apk;*.xapk;*.zip*.apkm;*.apks";
ofd.Filter = "Android Package (*.apk, *.xapk, *.zip, *.apkm, *.apks)|*.apk;*.xapk;*.zip;*.apkm;*.apks";
if (ofd.ShowDialog() == DialogResult.OK)
{
+546
View File
@@ -0,0 +1,546 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<value>バージョン情報</value>
</data>
<data name="APKToolVersion" xml:space="preserve">
<value>Apktool のバージョン</value>
</data>
<data name="CheckForUpdate" xml:space="preserve">
<value>更新を確認する</value>
</data>
<data name="DebugMode" xml:space="preserve">
<value>デバッグモード</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 がインストールされていないか、正しくインストールされていません。 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>
</data>
<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>
</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>ビルド</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>
</data>
<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>最適化中</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>署名に失敗しました。</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>すべての ApkTook ダミーを削除しました</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>「{0}」でメインアクティビティが見つかりました</value>
</data>
<data name="MainActivityNotFoundPleaseFindManually" xml:space="preserve">
<value>メインアクティビティが見つかりませんでした。 手動で検索してください</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>Zipaligning に失敗しました</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>管理者として実行中です。 ドラッグ &amp; ドロップはサポートされていない可能性があります</value>
</data>
<data name="DragDropSupported" xml:space="preserve">
<value>ドラッグ &amp; ドロップはサポートされています</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>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>このフォルダーはデコンパイルされた APK ではありません</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>APK を最適化</value>
</data>
<data name="CreateUnsignedApk" xml:space="preserve">
<value>未署名の APK を作成</value>
</data>
<data name="MetainfNotExist" xml:space="preserve">
<value>META-INF フォルダーがありません。 スキップしました</value>
</data>
<data name="ErrorGettingApkInfo" xml:space="preserve">
<value>アプリ情報の取得中にエラーが発生しました</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>デコンパイルされた apk フォルダー「{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>一時 APK「{0}」を出力先ディレクトリ「{1}」に移動します</value>
</data>
<data name="ParsingApkInfo" xml:space="preserve">
<value>APK 情報を解析中です...</value>
</data>
<data name="RestartApplicationPrompt" 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} が分割として検出されました</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="MergingApkEditor" xml:space="preserve">
<value>APKEditor.jar を使用して APK を統合する</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>APK のインストールに失敗しました</value>
</data>
<data name="InstallApkSuccessful" xml:space="preserve">
<value>APK のインストールに成功しました</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 デバイスが ON になっている状態でデバイスがコンピューターに接続されていることを確認してください。 エミュレーターを使用する場合は、再起動して起動まで待機します</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>予期しないエラーを回避するには、Apktook のバージョンを変更後にフレームワークキャッシュを消去する必要があります。 今すぐに消去しますか?</value>
</data>
<data name="ClearTempFolder" xml:space="preserve">
<value>一時フォルダーを削除中</value>
</data>
<data name="DeletingFolder" xml:space="preserve">
<value>削除するフォルダー: {0}</value>
</data>
<data name="DirectoryNotExist" xml:space="preserve">
<value>ディレクトリ「{0}」は存在しません</value>
</data>
<data name="OpenComFolder" xml:space="preserve">
<value>コンパイル出力先フォルダーを開く</value>
</data>
<data name="OpenDecFolder" xml:space="preserve">
<value>デコンパイル出力先フォルダーを開く</value>
</data>
<data name="FixApktoolYml" xml:space="preserve">
<value>apktool.yml を修正しました</value>
</data>
<data name="CopyFileTo" xml:space="preserve">
<value>「{0}」のファイルを「{1}」にコピー</value>
</data>
<data name="SplitApkNotFound" xml:space="preserve">
<value>分割 APK は未選択です</value>
</data>
<data name="CantDetectApkeditorVersion" xml:space="preserve">
<value> APKEditor バージョンの検出ができません</value>
</data>
<data name="SetLanguageRestartApplication" xml:space="preserve">
<value />
</data>
</root>
+546
View File
@@ -0,0 +1,546 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="About" xml:space="preserve">
<value>Hakkında</value>
</data>
<data name="APKToolVersion" xml:space="preserve">
<value>Apktool sürümü</value>
</data>
<data name="CheckForUpdate" xml:space="preserve">
<value>Güncellemeleri kontrol et</value>
</data>
<data name="DebugMode" xml:space="preserve">
<value>Hata ayıklama modu</value>
</data>
<data name="Exit" xml:space="preserve">
<value>Çıkış</value>
</data>
<data name="File" xml:space="preserve">
<value>Dosya</value>
</data>
<data name="Help" xml:space="preserve">
<value>Yardım</value>
</data>
<data name="Settings" xml:space="preserve">
<value>Ayarlar</value>
</data>
<data name="ErrorJavaDetect" xml:space="preserve">
<value>Java yüklü değil veya yanlış yüklenmiş. Lütfen Javayı yükleyin veya Ayarlardan özel konumu ayarlayın</value>
</data>
<data name="ErrorReadSettings" xml:space="preserve">
<value>Ayarlar okunurken hata oluştu!</value>
</data>
<data name="UpdateNewVersion" xml:space="preserve">
<value>Yeni bir sürüm mevcut. Güncellemek ister misiniz?</value>
</data>
<data name="UpdateNoUpdates" xml:space="preserve">
<value>Güncelleme mevcut değil.</value>
</data>
<data name="WarningDecodingFolderNotSelected" xml:space="preserve">
<value>Çözümleme klasörü seçilmedi!</value>
</data>
<data name="WarningFileForDecodingNotSelected" xml:space="preserve">
<value>Çözümleme için dosya seçilmedi!</value>
</data>
<data name="WarningFileForSigningNotSelected" xml:space="preserve">
<value>İmzalama için dosya seçilmedi!</value>
</data>
<data name="WarningFrameworkNotSelected" xml:space="preserve">
<value>Çerçeve seçilmedi!</value>
</data>
<data name="ErrorSaveSettings" xml:space="preserve">
<value>Ayarlar kaydedilirken hata oluştu!</value>
</data>
<data name="NeedRestart" xml:space="preserve">
<value>Değişikliklerin etkili olması için programı yeniden başlatmanız gerekiyor. Şimdi yapmak ister misiniz?</value>
</data>
<data name="FileNotFound" xml:space="preserve">
<value>Dosya bulunamadı</value>
</data>
<data name="FolderNotExist" xml:space="preserve">
<value>Klasör mevcut değil</value>
</data>
<data name="Error" xml:space="preserve">
<value>Hata</value>
</data>
<data name="Build" xml:space="preserve">
<value>Derle</value>
</data>
<data name="Decode" xml:space="preserve">
<value>Çözümle</value>
</data>
<data name="InstallFramework" xml:space="preserve">
<value>Çerçeveyi yükle</value>
</data>
<data name="Sign" xml:space="preserve">
<value>İmzala</value>
</data>
<data name="SystemLanguage" xml:space="preserve">
<value>Sistem dili</value>
</data>
<data name="DoYouRealyWantToInstallCM" xml:space="preserve">
<value>Bağlam menüsünü gerçekten yüklemek istiyor musunuz?</value>
</data>
<data name="DoYouRealyWantToRemoveCM" xml:space="preserve">
<value>Bağlam menüsünü gerçekten kaldırmak istiyor musunuz?</value>
</data>
<data name="Done" xml:space="preserve">
<value>Tamamlandı</value>
</data>
<data name="CantDetectApktoolVersion" xml:space="preserve">
<value>Apktool sürümü tespit edilemedi.</value>
</data>
<data name="DecompilingSuccessfullyCompleted" xml:space="preserve">
<value>Çözümleme başarıyla tamamlandı. Çıkış dizini "{0}".</value>
</data>
<data name="ErrorUpdateChecking" xml:space="preserve">
<value>Güncelleme kontrolü hatası:</value>
</data>
<data name="SignSuccessfullyCompleted" xml:space="preserve">
<value>İmzalama başarıyla tamamlandı. Dosya "{0}" konumuna kaydedildi.</value>
</data>
<data name="Aligning" xml:space="preserve">
<value>Hizalama</value>
</data>
<data name="ErrorCompiling" xml:space="preserve">
<value>Derleme başarısız</value>
</data>
<data name="ErrorEnteringFrameworkTag" xml:space="preserve">
<value>Çerçeve etiketi girilirken hata oluştu.</value>
</data>
<data name="ErrorSelectedFileNotExist" xml:space="preserve">
<value>Seçilen dosya mevcut değil.</value>
</data>
<data name="ErrorSelectingFrameworkDirectory" xml:space="preserve">
<value>Çerçeve dizini seçilirken hata oluştu.</value>
</data>
<data name="ErrorSelectingFrameworkFile" xml:space="preserve">
<value>Çerçeve dosyası seçilirken hata oluştu. Dosya mevcut değil.</value>
</data>
<data name="ErrorSigning" xml:space="preserve">
<value>İmzalama başarısız.</value>
</data>
<data name="FrameworkInstallationNotStarted" xml:space="preserve">
<value>Hata. Çerçeve kurulumu başlatılmadı.</value>
</data>
<data name="InstallingFramework" xml:space="preserve">
<value>Çerçeve yükleniyor</value>
</data>
<data name="Signing" xml:space="preserve">
<value>İmzalanıyor</value>
</data>
<data name="SignInputFileNotFound" xml:space="preserve">
<value>Giriş dosyası bulunamadı.</value>
</data>
<data name="SignPrivateKeyNotFound" xml:space="preserve">
<value>Özel anahtar bulunamadı.</value>
</data>
<data name="SignPublicKeyNotFound" xml:space="preserve">
<value>Genel anahtar bulunamadı.</value>
</data>
<data name="ZIPArchives" xml:space="preserve">
<value>ZIP arşivleri</value>
</data>
<data name="DecodeCouldNotCreate" xml:space="preserve">
<value>Seçilen çözümleme dizini, geçersiz karakterler içerdiği için oluşturulamadı.</value>
</data>
<data name="DecodeDirNotSelected" xml:space="preserve">
<value>Çözümleme dizini seçilmedi.</value>
</data>
<data name="DecodeSelectedFrameworkNotExist" xml:space="preserve">
<value>Seçilen çerçeve dizini mevcut değil.</value>
</data>
<data name="Decoding" xml:space="preserve">
<value>Çözümleniyor</value>
</data>
<data name="ErrorDecompiling" xml:space="preserve">
<value>Çözümleme başarısız</value>
</data>
<data name="ExecutableFile" xml:space="preserve">
<value>Çalıştırılabilir dosya</value>
</data>
<data name="ChangedTargetSdkTo29" xml:space="preserve">
<value>Hedef SDK 29a değiştirildi</value>
</data>
<data name="ErrorVersionParsing" xml:space="preserve">
<value>Sürüm ayrıştırılamadı</value>
</data>
<data name="FixAndroidManifest" xml:space="preserve">
<value>AndroidManifest.xml düzeltildi</value>
</data>
<data name="RemoveApkToolDummies" xml:space="preserve">
<value>Tüm ApkTool kuklaları kaldırıldı</value>
</data>
<data name="APKSelected" xml:space="preserve">
<value>APK Seçildi:</value>
</data>
<data name="ErrorSelectedFolderNotExist" xml:space="preserve">
<value>Seçilen klasör mevcut değil.</value>
</data>
<data name="AndroidManifestNotExist" xml:space="preserve">
<value>AndroidManifest.xml mevcut değil</value>
</data>
<data name="DecompiledAPKNotExist" xml:space="preserve">
<value>Çözümlenmiş APK dizini mevcut değil</value>
</data>
<data name="MainActivityFound" xml:space="preserve">
<value>Ana aktivite "{0}" içinde bulundu</value>
</data>
<data name="MainActivityNotFoundPleaseFindManually" xml:space="preserve">
<value>MainActivity bulunamadı. Lütfen manuel olarak bulun</value>
</data>
<data name="ClearingFramework" xml:space="preserve">
<value>Çerçeve temizleniyor</value>
</data>
<data name="CompilingSuccessfullyCompleted" xml:space="preserve">
<value>Derleme başarıyla tamamlandı. Çıkış dizini "{0}"</value>
</data>
<data name="ErrorZipalign" xml:space="preserve">
<value>Zipalign başarısız</value>
</data>
<data name="ZipalignFileSavedTo" xml:space="preserve">
<value>Zipalign başarıyla tamamlandı. Dosya "{0}" konumuna kaydedildi</value>
</data>
<data name="ErrorClearingFw" xml:space="preserve">
<value>Çerçeve temizlenirken hata oluştu</value>
</data>
<data name="FrameworkCacheCleared" xml:space="preserve">
<value>Çerçeve önbelleği temizlendi</value>
</data>
<data name="AllDone" xml:space="preserve">
<value>Hepsi tamamlandı!</value>
</data>
<data name="FrameworkInstalled" xml:space="preserve">
<value>Çerçeve başarıyla yüklendi</value>
</data>
<data name="FrameworkDirNotExist" xml:space="preserve">
<value>Çerçeve dizini mevcut değil</value>
</data>
<data name="DecompilingDex" xml:space="preserve">
<value>Dex çözümlemesi yapılıyor</value>
</data>
<data name="ErrorSelectedOutputFolderNotExist" xml:space="preserve">
<value>Seçilen çıkış klasörü mevcut değil.</value>
</data>
<data name="CompilingDex" xml:space="preserve">
<value>Dex derleniyor</value>
</data>
<data name="DragDropNotSupported" xml:space="preserve">
<value>Yönetici olarak çalışıyorsunuz. Sürükle ve bırak desteklenmeyebilir</value>
</data>
<data name="DragDropSupported" xml:space="preserve">
<value>Sürükle ve bırak destekleniyor</value>
</data>
<data name="ErrorNotAnApk" xml:space="preserve">
<value>Bu dizin bir Android paketi değil</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>APKyı derle</value>
</data>
<data name="CompileDex" xml:space="preserve">
<value>DEXi birleştir</value>
</data>
<data name="DecompileApk" xml:space="preserve">
<value>APKyı çözümle</value>
</data>
<data name="DecompileDex" xml:space="preserve">
<value>DEXi parçala</value>
</data>
<data name="GetApkInfo" xml:space="preserve">
<value>APK Bilgilerini Görüntüle</value>
</data>
<data name="NotDecompiledApk" xml:space="preserve">
<value>Bu klasör çözümlenmiş bir APK değil</value>
</data>
<data name="NotDecompiledDex" xml:space="preserve">
<value>Bu klasör çözümlenmiş bir DEX değil</value>
</data>
<data name="RequiredFilesMissing" xml:space="preserve">
<value>Gerekli dosyalar eksik</value>
</data>
<data name="SignApk" xml:space="preserve">
<value>APKyı imzala</value>
</data>
<data name="TextFile" xml:space="preserve">
<value>Metin dosyası</value>
</data>
<data name="ZipalignApk" xml:space="preserve">
<value>APKyı zipalign yap</value>
</data>
<data name="CreateUnsignedApk" xml:space="preserve">
<value>İmzasız APK oluşturuluyor</value>
</data>
<data name="MetainfNotExist" xml:space="preserve">
<value>META-INF klasörü mevcut değil. Atlandı</value>
</data>
<data name="ErrorGettingApkInfo" xml:space="preserve">
<value>APK bilgileri alınırken hata oluştu</value>
</data>
<data name="InputDirectory" xml:space="preserve">
<value>Giriş dizini: {0}</value>
</data>
<data name="InputFile" xml:space="preserve">
<value>Giriş dosyası: {0}</value>
</data>
<data name="DeleteFile" xml:space="preserve">
<value>"{0}" dosyasını sil</value>
</data>
<data name="CopyFileToTemp" xml:space="preserve">
<value>"{0}" dosyasını "{1}" geçici dizinine kopyala</value>
</data>
<data name="CopyFolderToTemp" xml:space="preserve">
<value>Çözümlenmiş apk klasörünü "{0}" "{1}" geçici dizinine kopyala</value>
</data>
<data name="DecodeDesDirExists" xml:space="preserve">
<value>Hedef dizin "{0}" zaten mevcut. Üzerine yazmak istiyorsanız "Hedef dizini zorla sil" seçeneğini etkinleştirin.</value>
</data>
<data name="MoveTempApkFileToOutput" xml:space="preserve">
<value>Geçici klasörü "{0}" çıkış dizinine "{1}" taşı</value>
</data>
<data name="MoveTempApkToOutput" xml:space="preserve">
<value>Geçici apkyı "{0}" çıkış dizinine "{1}" taşı</value>
</data>
<data name="ParsingApkInfo" xml:space="preserve">
<value>APK Bilgileri Ayrıştırılıyor...</value>
</data>
<data name="RestartApplicationPrompt" xml:space="preserve">
<value>Değişiklikleri uygulamak için yeniden başlatma gerekiyor. Uygulamayı şimdi yeniden başlatmak ister misiniz?</value>
</data>
<data name="DecompilingAllApkFiles" xml:space="preserve">
<value>Tüm APK dosyaları çözümleniyor</value>
</data>
<data name="DetectedAsBase" xml:space="preserve">
<value>{0} temel olarak algılandı</value>
</data>
<data name="DetectedAsSplit" xml:space="preserve">
<value>{0} bölünmüş olarak algılandı</value>
</data>
<data name="ExtractingAllApkFiles" xml:space="preserve">
<value>Tüm APK dosyaları çıkarılıyor</value>
</data>
<data name="MergeFinishedMoveDir" xml:space="preserve">
<value>Birleştirme tamamlandı. Dizin "{0}" konumuna taşınıyor</value>
</data>
<data name="MergingApk" xml:space="preserve">
<value>APK birleştiriliyor</value>
</data>
<data name="MovingBasedirectory" xml:space="preserve">
<value>Temel dizin "{0}" konumuna taşınıyor</value>
</data>
<data name="DirNotExist" xml:space="preserve">
<value>"{0}" dizini mevcut değil</value>
</data>
<data name="TempDirectory" xml:space="preserve">
<value>Geçici dizin: "{0}"</value>
</data>
<data name="ErrorMerging" xml:space="preserve">
<value>Birleştirme başarısız</value>
</data>
<data name="MergingApkEditor" xml:space="preserve">
<value>APK, APKEditor.jar kullanılarak birleştiriliyor</value>
</data>
<data name="Aborted" xml:space="preserve">
<value>İptal edildi</value>
</data>
<data name="CancelProcess" xml:space="preserve">
<value>İşlemi iptal etmek istediğinizden emin misiniz?</value>
</data>
<data name="GettingDevices" xml:space="preserve">
<value>Cihazlar alınıyor...</value>
</data>
<data name="PleaseWait" xml:space="preserve">
<value>Lütfen bekleyin...</value>
</data>
<data name="ConfirmKillingAdbServer" xml:space="preserve">
<value>ADB sunucusunu sonlandırmak istediğinizden emin misiniz? Cihazınızı yeniden bağlamanız veya emülatörü yeniden başlatmanız gerekebilir</value>
</data>
<data name="DeviceNotSelected" xml:space="preserve">
<value>Cihaz seçilmedi</value>
</data>
<data name="DeviceSelected" xml:space="preserve">
<value>Cihaz seçildi "{0}"</value>
</data>
<data name="DevicesFound" xml:space="preserve">
<value>{0} cihaz bulundu</value>
</data>
<data name="InstallApkFailed" xml:space="preserve">
<value>APK Kurulumu başarısız</value>
</data>
<data name="InstallApkSuccessful" xml:space="preserve">
<value>APK Kurulumu başarılı</value>
</data>
<data name="InstallingApk" xml:space="preserve">
<value>APK yükleniyor</value>
</data>
<data name="InstallingApkPath" xml:space="preserve">
<value>"{0}" APKsı yükleniyor</value>
</data>
<data name="NoDevicesFound" xml:space="preserve">
<value>Cihaz bulunamadı. Cihazınızın bilgisayara bağlı olduğundan ve adb hata ayıklamasının açık olduğundan emin olun. Emülatör kullanıyorsanız, yeniden başlatın ve açılmasını bekleyin</value>
</data>
<data name="TimeEnded" xml:space="preserve">
<value>Bitiş zamanı: {0}</value>
</data>
<data name="TimeStarted" xml:space="preserve">
<value>Başlangıç zamanı: {0}</value>
</data>
<data name="ClearFrameworkPrompt" xml:space="preserve">
<value>Apktool sürümü değiştirildikten sonra beklenmedik hataları önlemek için çerçeve önbelleğini temizlemek gerekiyor. Şimdi temizlemek ister misiniz?</value>
</data>
<data name="ClearTempFolder" xml:space="preserve">
<value>Geçici klasör temizleniyor</value>
</data>
<data name="DeletingFolder" xml:space="preserve">
<value>Klasör siliniyor: {0}</value>
</data>
<data name="DirectoryNotExist" xml:space="preserve">
<value>"{0}" dizini mevcut değil</value>
</data>
<data name="OpenComFolder" xml:space="preserve">
<value>Derleme çıkış klasörünü aç</value>
</data>
<data name="OpenDecFolder" xml:space="preserve">
<value>Çözümleme çıkış klasörünü aç</value>
</data>
<data name="FixApktoolYml" xml:space="preserve">
<value>apktool.yml düzeltildi</value>
</data>
<data name="CopyFileTo" xml:space="preserve">
<value>"{0}" dosyasını "{1}" konumuna kopyala</value>
</data>
<data name="SplitApkNotFound" xml:space="preserve">
<value>Bölünmüş APK seçilmedi</value>
</data>
<data name="CantDetectApkeditorVersion" xml:space="preserve">
<value>APKEditor sürümü tespit edilemedi</value>
</data>
<data name="SetLanguageRestartApplication" xml:space="preserve">
<value />
</data>
</root>
+88 -85
View File
@@ -142,37 +142,37 @@
<value>Cài đặt</value>
</data>
<data name="ErrorJavaDetect" xml:space="preserve">
<value>Java chưa được cài đặt hoặc cài đặt không chính xác. Chương trình sẽ bị đóng.</value>
<value>Java chưa được cài đặt hoặc đã cài đặt không đúng. Vui lòng cài đặt Java hoặc đặt vị trí tùy chỉnh trong Cài đặt</value>
</data>
<data name="ErrorReadSettings" xml:space="preserve">
<value>Lỗi khi đọc cài đặt!</value>
<value>Lỗi đọc cài đặt!</value>
</data>
<data name="UpdateNewVersion" xml:space="preserve">
<value>Phiên bản mới đã được phát hành. Bạn có muốn cập nhật không?</value>
<value>Có phiên bản mới. Bạn có muốn cập nhật không?</value>
</data>
<data name="UpdateNoUpdates" xml:space="preserve">
<value>Không có bản cập nhật nào khả dụng.</value>
<value>Không có bản cập nhật nào.</value>
</data>
<data name="WarningDecodingFolderNotSelected" xml:space="preserve">
<value>Ca chọn thư mục giải mã!</value>
<value>T mục dịch ngược chưa được chọn!</value>
</data>
<data name="WarningFileForDecodingNotSelected" xml:space="preserve">
<value>Chưa chọn tệp để giải mã!</value>
<value>Tệp để dịch ngược chưa được chọn!</value>
</data>
<data name="WarningFileForSigningNotSelected" xml:space="preserve">
<value>Chưa chọn tệp để ký!</value>
<value>Tệp để ký chưa được chọn!</value>
</data>
<data name="WarningFrameworkNotSelected" xml:space="preserve">
<value>Chưa chọn Framework!</value>
<value>Framework chưa được chọn!</value>
</data>
<data name="ErrorSaveSettings" xml:space="preserve">
<value>Lỗi khi lưu cài đặt!</value>
<value>Lỗi lưu cài đặt!</value>
</data>
<data name="NeedRestart" xml:space="preserve">
<value>Để những thay đổi này có hiệu lực, bạn phải khởi động lại chương trình. Bạn có muốn khởi động lại ngay bây giờ không?</value>
<value>Để các thay đổi có hiệu lực, bạn phải khởi động lại chương trình. Bạn có muốn thực hiện ngay bây giờ không?</value>
</data>
<data name="FileNotFound" xml:space="preserve">
<value>Tệp không tìm thấy</value>
<value>Không tìm thấy tệp</value>
</data>
<data name="FolderNotExist" xml:space="preserve">
<value>Thư mục không tồn tại</value>
@@ -181,13 +181,13 @@
<value>Lỗi</value>
</data>
<data name="Build" xml:space="preserve">
<value>Xây dựng</value>
<value>Biên dịch</value>
</data>
<data name="Decode" xml:space="preserve">
<value>Giải mã</value>
<value>Dịch ngược</value>
</data>
<data name="InstallFramework" xml:space="preserve">
<value>Cài đặt Framework</value>
<value>Cài đặt framework</value>
</data>
<data name="Sign" xml:space="preserve">
<value>Ký</value>
@@ -196,10 +196,10 @@
<value>Ngôn ngữ hệ thống</value>
</data>
<data name="DoYouRealyWantToInstallCM" xml:space="preserve">
<value>Bạn thực sự muốn cài đặt menu ngữ cảnh không?</value>
<value>Bạn thực sự muốn cài đặt menu ngữ cảnh không?</value>
</data>
<data name="DoYouRealyWantToRemoveCM" xml:space="preserve">
<value>Bạn thực sự muốn xóa menu ngữ cảnh không?</value>
<value>Bạn thực sự muốn xóa menu ngữ cảnh không?</value>
</data>
<data name="Done" xml:space="preserve">
<value>Hoàn tất</value>
@@ -208,40 +208,40 @@
<value>Không thể phát hiện phiên bản apktool.</value>
</data>
<data name="DecompilingSuccessfullyCompleted" xml:space="preserve">
<value>Giải mã hoàn tất thành công. Thư mục đầu ra "{0}"</value>
<value>Dịch ngược thành công. Thư mục đầu ra "{0}".</value>
</data>
<data name="ErrorUpdateChecking" xml:space="preserve">
<value>Lỗi kiểm tra cập nhật:</value>
</data>
<data name="SignSuccessfullyCompleted" xml:space="preserve">
<value>Ký hoàn tất thành công. Tệp được lưu vào "{0}"</value>
<value>Ký thành công. Tệp đã được lưu vào "{0}".</value>
</data>
<data name="Aligning" xml:space="preserve">
<value>Đang căn chỉnh</value>
</data>
<data name="ErrorCompiling" xml:space="preserve">
<value>Lỗi biên dịch</value>
<value>Biên dịch thất bại</value>
</data>
<data name="ErrorEnteringFrameworkTag" xml:space="preserve">
<value>Lỗi nhập thẻ Framework.</value>
<value>Lỗi nhập thẻ framework.</value>
</data>
<data name="ErrorSelectedFileNotExist" xml:space="preserve">
<value>Tệp đã chọn không tồn tại.</value>
</data>
<data name="ErrorSelectingFrameworkDirectory" xml:space="preserve">
<value>Lỗi chọn thư mục Framework.</value>
<value>Lỗi chọn thư mục framework.</value>
</data>
<data name="ErrorSelectingFrameworkFile" xml:space="preserve">
<value>Lỗi khi chọn tệp Framework. Tệp này không tồn tại.</value>
<value>Lỗi chọn tệp framework. Tệp không tồn tại.</value>
</data>
<data name="ErrorSigning" xml:space="preserve">
<value>Lỗi ký.</value>
<value>Ký thất bại.</value>
</data>
<data name="FrameworkInstallationNotStarted" xml:space="preserve">
<value>Lỗi. Việc cài đặt Framework chưa bắt đầu.</value>
<value>Lỗi. Việc cài đặt framework chưa được bắt đầu.</value>
</data>
<data name="InstallingFramework" xml:space="preserve">
<value>Đang cài đặt Framework</value>
<value>Đang cài đặt framework</value>
</data>
<data name="Signing" xml:space="preserve">
<value>Đang ký</value>
@@ -256,37 +256,37 @@
<value>Không tìm thấy khóa công khai.</value>
</data>
<data name="ZIPArchives" xml:space="preserve">
<value>Lưu trữ ZIP</value>
<value>Tệp nén ZIP</value>
</data>
<data name="DecodeCouldNotCreate" xml:space="preserve">
<value>Không thể tạo thư mục giải mã đã chọn vì chứa ký tự không hợp lệ.</value>
<value>Thư mục dịch ngược đã chọn không thể được tạo vì chứa các ký tự không hợp lệ.</value>
</data>
<data name="DecodeDirNotSelected" xml:space="preserve">
<value>Ca chọn thư mục giải mã.</value>
<value>T mục dịch ngược chưa được chọn.</value>
</data>
<data name="DecodeSelectedFrameworkNotExist" xml:space="preserve">
<value>Thư mục Framework đã chọn không tồn tại.</value>
<value>Thư mục framework đã chọn không tồn tại.</value>
</data>
<data name="Decoding" xml:space="preserve">
<value>Đang giải mã</value>
<value>Đang dịch ngược</value>
</data>
<data name="ErrorDecompiling" xml:space="preserve">
<value>Lỗi giải mã</value>
<value>Dịch ngược thất bại</value>
</data>
<data name="ExecutableFile" xml:space="preserve">
<value>Tệp thực thi</value>
</data>
<data name="ChangedTargetSdkTo29" xml:space="preserve">
<value>Đã thay đổi Target SDK thành 29</value>
<value>Đã thay đổi target SDK thành 29</value>
</data>
<data name="ErrorVersionParsing" xml:space="preserve">
<value>Lỗi phân tích phiên bản</value>
<value>Phân tích phiên bản thất bại</value>
</data>
<data name="FixAndroidManifest" xml:space="preserve">
<value>Sửa AndroidManifest.xml</value>
<value>Đã sửa tệp AndroidManifest.xml</value>
</data>
<data name="RemoveApkToolDummies" xml:space="preserve">
<value>Xóa tất cả các đối tượng giả ApkTool</value>
<value>Đã xóa tất cả các tệp giả của ApkTool</value>
</data>
<data name="APKSelected" xml:space="preserve">
<value>APK đã chọn:</value>
@@ -295,13 +295,13 @@
<value>Thư mục đã chọn không tồn tại.</value>
</data>
<data name="AndroidManifestNotExist" xml:space="preserve">
<value>AndroidManifest.xml không tồn tại</value>
<value>Tệp AndroidManifest.xml không tồn tại</value>
</data>
<data name="DecompiledAPKNotExist" xml:space="preserve">
<value>Thư mục APK đã giải mã không tồn tại</value>
<value>Thư mục APK đã dịch ngược không tồn tại</value>
</data>
<data name="MainActivityFound" xml:space="preserve">
<value>Đã tìm thấy Activity chính trong "{0}"</value>
<value>Đã tìm thấy activity chính trong "{0}"</value>
</data>
<data name="MainActivityNotFoundPleaseFindManually" xml:space="preserve">
<value>Không thể tìm thấy MainActivity. Vui lòng tìm thủ công</value>
@@ -310,22 +310,22 @@
<value>Đang xóa Framework</value>
</data>
<data name="CompilingSuccessfullyCompleted" xml:space="preserve">
<value>Biên dịch hoàn tất thành công. Thư mục đầu ra "{0}"</value>
<value>Biên dịch thành công. Thư mục đầu ra "{0}"</value>
</data>
<data name="ErrorZipalign" xml:space="preserve">
<value>Lỗi Zip căn chỉnh</value>
<value>Zipalign thất bại</value>
</data>
<data name="ZipalignFileSavedTo" xml:space="preserve">
<value>Zip căn chỉnh hoàn tất thành công. Tệp được lưu vào "{0}"</value>
<value>Zipalign thành công. Tệp đã được lưu vào "{0}"</value>
</data>
<data name="ErrorClearingFw" xml:space="preserve">
<value>Lỗi xóa Framework</value>
<value>Lỗi xóa framework</value>
</data>
<data name="FrameworkCacheCleared" xml:space="preserve">
<value>Bộ nhớ đệm Framework đã được xóa</value>
<value>Đã xóa bộ nhớ đệm của Framework</value>
</data>
<data name="AllDone" xml:space="preserve">
<value>Đã hoàn tất!</value>
<value>Đã xong tất cả!</value>
</data>
<data name="FrameworkInstalled" xml:space="preserve">
<value>Framework đã được cài đặt thành công</value>
@@ -334,7 +334,7 @@
<value>Thư mục Framework không tồn tại</value>
</data>
<data name="DecompilingDex" xml:space="preserve">
<value>Đang giải mã dex</value>
<value>Đang dịch ngược dex</value>
</data>
<data name="ErrorSelectedOutputFolderNotExist" xml:space="preserve">
<value>Thư mục đầu ra đã chọn không tồn tại.</value>
@@ -343,13 +343,13 @@
<value>Đang biên dịch dex</value>
</data>
<data name="DragDropNotSupported" xml:space="preserve">
<value>Bạn đang chạy với tư cách quản trị viên. Kéo và thả không được hỗ trợ.</value>
<value>Bạn đang chạy với quyền quản trị viên. Kéo và thả có thể không được hỗ trợ</value>
</data>
<data name="DragDropSupported" xml:space="preserve">
<value>Hỗ trợ kéo và thả</value>
<value>Kéo và thả được hỗ trợ</value>
</data>
<data name="ErrorNotAnApk" xml:space="preserve">
<value>Thư mục này không phải là gói Android</value>
<value>Thư mục này không phải là một gói Android</value>
</data>
<data name="Baksmali" xml:space="preserve">
<value>Baksmali</value>
@@ -358,7 +358,7 @@
<value>Smali</value>
</data>
<data name="Zipalign" xml:space="preserve">
<value>Zip căn chỉnh</value>
<value>Zipalign</value>
</data>
<data name="CompileApk" xml:space="preserve">
<value>Biên dịch APK</value>
@@ -367,22 +367,22 @@
<value>Biên dịch DEX</value>
</data>
<data name="DecompileApk" xml:space="preserve">
<value>Giải mã APK</value>
<value>Dịch ngược APK</value>
</data>
<data name="DecompileDex" xml:space="preserve">
<value>Giải mã DEX</value>
<value>Dịch ngược DEX</value>
</data>
<data name="GetApkInfo" xml:space="preserve">
<value>Lấy thông tin APK</value>
<value>Xem thông tin APK</value>
</data>
<data name="NotDecompiledApk" xml:space="preserve">
<value>Thư mục này không phải là APK đã giải mã</value>
<value>Thư mục này không phải là một APK đã được dịch ngược</value>
</data>
<data name="NotDecompiledDex" xml:space="preserve">
<value>Thư mục này không phải là DEX đã giải mã</value>
<value>Thư mục này không phải là một DEX đã được dịch ngược</value>
</data>
<data name="RequiredFilesMissing" xml:space="preserve">
<value>Thiếu tệp cần thiết</value>
<value>Các tệp cần thiết bị thiếu</value>
</data>
<data name="SignApk" xml:space="preserve">
<value>Ký APK</value>
@@ -391,16 +391,16 @@
<value>Tệp văn bản</value>
</data>
<data name="ZipalignApk" xml:space="preserve">
<value>Zip căn chỉnh APK</value>
<value>Zipalign APK</value>
</data>
<data name="CreateUnsignedApk" xml:space="preserve">
<value>Tạo APK chưa ký</value>
<value>Đang tạo APK chưa ký</value>
</data>
<data name="MetainfNotExist" xml:space="preserve">
<value>Thư mục META-INF không tồn tại. Đã bỏ qua</value>
</data>
<data name="ErrorGettingApkInfo" xml:space="preserve">
<value>Lỗi khi lấy thông tin APK</value>
<value>Đã xảy ra lỗi khi lấy thông tin APK</value>
</data>
<data name="InputDirectory" xml:space="preserve">
<value>Thư mục đầu vào: {0}</value>
@@ -415,43 +415,43 @@
<value>Sao chép tệp "{0}" vào thư mục tạm "{1}"</value>
</data>
<data name="CopyFolderToTemp" xml:space="preserve">
<value>Sao chép thư mục apk đã giải mã "{0}" vào thư mục tạm "{1}"</value>
<value>Sao chép thư mục apk đã dịch ngược "{0}" vào thư mục tạm "{1}"</value>
</data>
<data name="DecodeDesDirExists" xml:space="preserve">
<value>Thư mục đích "{0}" đã tồn tại. Nếu bạn muốn ghi đè lên nó, hãy bật "Buộc xóa thư mục đích".</value>
<value>Thư mục đích "{0}" đã tồn tại. Bật "Buộc xóa thư mục đích" nếu bạn muốn ghi đè lên nó.</value>
</data>
<data name="MoveTempApkFileToOutput" xml:space="preserve">
<value>Di chuyển thư mục tạm "{0}" vào thư mục đầu ra "{1}"</value>
<value>Di chuyển thư mục tạm "{0}" đến thư mục đầu ra "{1}"</value>
</data>
<data name="MoveTempApkToOutput" xml:space="preserve">
<value>Di chuyển apk tạm "{0}" vào thư mục đầu ra "{1}"</value>
<value>Di chuyển apk tạm "{0}" đến thư mục đầu ra "{1}"</value>
</data>
<data name="ParsingApkInfo" xml:space="preserve">
<value>Đang phân tích thông tin APK...</value>
</data>
<data name="RestartApplicationPrompt" xml:space="preserve">
<value>Cần khởi động lại để áp dụng thay đổi. Bạn có muốn khởi động lại ứng dụng không?</value>
<value>Cần khởi động lại để áp dụng các thay đổi. Bạn có muốn khởi động lại ứng dụng không?</value>
</data>
<data name="DecompilingAllApkFiles" xml:space="preserve">
<value>Đang giải mã tất cả các tệp APK</value>
<value>Đang dịch ngược tất cả các tệp APK</value>
</data>
<data name="DetectedAsBase" xml:space="preserve">
<value>{0} được phát hiện là mô-đun cơ sở</value>
<value>{0} được phát hiện là base</value>
</data>
<data name="DetectedAsSplit" xml:space="preserve">
<value>{0} được phát hiện là tệp chia nhỏ</value>
<value>{0} được phát hiện là split</value>
</data>
<data name="ExtractingAllApkFiles" xml:space="preserve">
<value>Đang trích xuất tất cả các tệp APK</value>
<value>Đang giải nén tất cả các tệp APK</value>
</data>
<data name="MergeFinishedMoveDir" xml:space="preserve">
<value>Hoàn tất hợp nhất. Di chuyển thư mục đến "{0}"</value>
<value>Hợp nhất hoàn tất. Đang di chuyển thư mục đến "{0}"</value>
</data>
<data name="MergingApk" xml:space="preserve">
<value>Đang hợp nhất APK</value>
</data>
<data name="MovingBasedirectory" xml:space="preserve">
<value>Đang di chuyển thư mục mô-đun cơ sở đến "{0}"</value>
<value>Đang di chuyển thư mục base đến "{0}"</value>
</data>
<data name="DirNotExist" xml:space="preserve">
<value>Thư mục "{0}" không tồn tại</value>
@@ -460,28 +460,28 @@
<value>Thư mục tạm: "{0}"</value>
</data>
<data name="ErrorMerging" xml:space="preserve">
<value>Lỗi hợp nhất</value>
<value>Hợp nhất thất bại</value>
</data>
<data name="MergingApkEditor" xml:space="preserve">
<value>Đang hợp nhất APK bằng APKEditor.jar</value>
</data>
<data name="Aborted" xml:space="preserve">
<value>Đã bị hủy bỏ</value>
<value>Đã hủy</value>
</data>
<data name="CancelProcess" xml:space="preserve">
<value>Bạn có chắc chắn muốn hủy bỏ quy trình này không?</value>
<value>Bạn có chắc muốn hủy tiến trình không?</value>
</data>
<data name="GettingDevices" xml:space="preserve">
<value>Đang lấy thiết bị...</value>
<value>Đang lấy danh sách thiết bị...</value>
</data>
<data name="PleaseWait" xml:space="preserve">
<value>Vui lòng chờ...</value>
<value>Vui lòng đợi...</value>
</data>
<data name="ConfirmKillingAdbServer" xml:space="preserve">
<value>Bạn có chắc chắn muốn chấm dứt máy chủ ADB không? Bạn có thể cần phải kết nối lại thiết bị của mình hoặc khởi động lại trình giả lập</value>
<value>Bạn có chắc muốn tắt máy chủ ADB không? Bạn có thể cần kết nối lại thiết bị hoặc khởi động lại trình giả lập</value>
</data>
<data name="DeviceNotSelected" xml:space="preserve">
<value>Chưa chọn thiết bị</value>
<value>Thiết bị chưa được chọn</value>
</data>
<data name="DeviceSelected" xml:space="preserve">
<value>Đã chọn thiết bị "{0}"</value>
@@ -502,7 +502,7 @@
<value>Đang cài đặt APK "{0}"</value>
</data>
<data name="NoDevicesFound" xml:space="preserve">
<value>Không tìm thấy thiết bị. Hãy đảm bảo rằng thiết bị của bạn đã được kết nối với máy tính và gỡ lỗi adb đã được bật. Nếu bạn đang sử dụng trình giả lập, hãy khởi động lại và chờ nó khởi động</value>
<value>Không tìm thấy thiết bị nào. Hãy chắc chắn rằng thiết bị của bạn được kết nối với máy tính và đã bật chế độ gỡ lỗi adb. Nếu bạn sử dụng trình giả lập, hãy khởi động lại và đợi cho đến khi nó khởi động xong</value>
</data>
<data name="TimeEnded" xml:space="preserve">
<value>Thời gian kết thúc: {0}</value>
@@ -511,10 +511,10 @@
<value>Thời gian bắt đầu: {0}</value>
</data>
<data name="ClearFrameworkPrompt" xml:space="preserve">
<value>Cần xóa bộ nhớ cache framework sau khi thay đổi phiên bản Apktool để tránh lỗi không mong muốn. Bạn có muốn xóa ngay bây giờ không?</value>
<value>Cần phải xóa bộ nhớ đệm của framework sau khi thay đổi phiên bản Apktool để tránh các lỗi không mong muốn. Bạn có muốn xóa ngay bây giờ không?</value>
</data>
<data name="ClearTempFolder" xml:space="preserve">
<value>Xóa thư mục tạm</value>
<value>Đang xóa thư mục tạm</value>
</data>
<data name="DeletingFolder" xml:space="preserve">
<value>Đang xóa thư mục: {0}</value>
@@ -523,21 +523,24 @@
<value>Thư mục "{0}" không tồn tại</value>
</data>
<data name="OpenComFolder" xml:space="preserve">
<value>Mở thư mục đầu ra đã biên dịch</value>
<value>Mở thư mục đầu ra biên dịch</value>
</data>
<data name="OpenDecFolder" xml:space="preserve">
<value>Mở thư mục đầu ra đã giải mã</value>
<value>Mở thư mục đầu ra dịch ngược</value>
</data>
<data name="FixApktoolYml" xml:space="preserve">
<value>Apktool.yml đã được sửa</value>
<value>Đã sửa tệp apktool.yml</value>
</data>
<data name="CopyFileTo" xml:space="preserve">
<value>Sao chép tệp "{0}" vào "{1}"</value>
<value>Sao chép tệp "{0}" đến "{1}"</value>
</data>
<data name="SplitApkNotFound" xml:space="preserve">
<value>Chưa chọn APK chia nhỏ</value>
<value>Split APK chưa được chọn</value>
</data>
<data name="CantDetectApkeditorVersion" xml:space="preserve">
<value>Không thể phát hiện phiên bản APKEditor</value>
</data>
</root>
<data name="SetLanguageRestartApplication" xml:space="preserve">
<value />
</data>
</root>
+2 -2
View File
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// Можно задать все значения или принять номер построения и номер редакции по умолчанию,
// используя "*", как показано ниже:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("3.3.1.4")]
[assembly: AssemblyFileVersion("3.3.1.4")]
[assembly: AssemblyVersion("3.3.1.6")]
[assembly: AssemblyFileVersion("3.3.1.6")]
+1 -1
View File
@@ -8,7 +8,7 @@ using System.Reflection;
using Microsoft.WindowsAPICodePack.Shell;
using APKToolGUI.Languages;
namespace APKEasyTool
namespace APKToolGUI
{
public class TaskBarJumpList
{
-1
View File
@@ -28,7 +28,6 @@ namespace APKToolGUI.Utils
}
else
{
MessageBox.Show("Error Loading File.", "Error!", MessageBoxButtons.OK);
return null;
}
}
+4 -4
View File
@@ -13,13 +13,12 @@ namespace APKToolGUI.Utils
{
public class CMD
{
public static string output;
static public Process p = new Process();
public static string ProcessStartWithOutput(string FileName, string Arguments)
{
Log.d("CMD: " + FileName + " " + Arguments);
string result = string.Empty;
try
{
using (Process process = new Process())
@@ -33,13 +32,14 @@ namespace APKToolGUI.Utils
process.StartInfo.StandardOutputEncoding = Encoding.GetEncoding("utf-8");
process.Start();
result = process.StandardOutput.ReadToEnd().Trim();
process.WaitForExit(4000);
process.WaitForExit();
}
}
catch (Exception e)
{
Debug.WriteLine("Start", e);
}
return result;
}
}
+96 -101
View File
@@ -1,165 +1,160 @@
using System;
using Ionic.Zip;
using System;
using System.Collections.Generic;
using System.IO;
using System.IO.Compression;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Documents;
namespace APKToolGUI.Utils
{
public class ZipUtils
{
public static void ExtractAllStream(string path, string embeddedZip)
{
Assembly _assembly = Assembly.GetExecutingAssembly();
Stream _zipFileStream = _assembly.GetManifestResourceStream(embeddedZip);
using (ZipFile zipFile = ZipFile.Read(_zipFileStream))
{
zipFile.ExtractAll(path);
}
}
public static string GetFileName(string path, string fileNameContains, string folderContains = "")
{
using (ZipArchive archive = ZipFile.OpenRead(path))
using (ZipFile zipDest = ZipFile.Read(path))
{
var entry = archive.Entries
.FirstOrDefault(e => e.FullName.Contains(fileNameContains) &&
(string.IsNullOrEmpty(folderContains) || e.FullName.Contains(folderContains)));
return entry != null ? Path.GetFileName(entry.FullName) : string.Empty;
foreach (ZipEntry entry in zipDest.Entries)
{
if (entry.FileName.Contains(fileNameContains) && entry.FileName.Contains(folderContains))
return Path.GetFileName(entry.FileName);
}
}
return "";
}
public static string GetFileNameWithoutExtension(string path, string fileNameContains, string folderContains = "")
{
using (ZipArchive archive = ZipFile.OpenRead(path))
using (ZipFile zipDest = ZipFile.Read(path))
{
var entry = archive.Entries
.FirstOrDefault(e => e.FullName.Contains(fileNameContains) &&
(string.IsNullOrEmpty(folderContains) || e.FullName.Contains(folderContains)));
return entry != null ? Path.GetFileNameWithoutExtension(entry.FullName) : string.Empty;
foreach (ZipEntry entry in zipDest.Entries)
{
if (entry.FileName.Contains(fileNameContains) && entry.FileName.Contains(folderContains))
return Path.GetFileNameWithoutExtension(entry.FileName);
}
}
return "";
}
public static bool Exists(string path, string fileNameContains, string folderContains = "")
{
using (ZipArchive archive = ZipFile.OpenRead(path))
using (ZipFile zipDest = ZipFile.Read(path))
{
return archive.Entries.Any(e => e.FullName.Contains(fileNameContains) &&
(string.IsNullOrEmpty(folderContains) || e.FullName.Contains(folderContains)));
foreach (ZipEntry entry in zipDest.Entries)
{
if (entry.FileName.Contains(fileNameContains) && String.IsNullOrEmpty(folderContains))
return true;
else if (entry.FileName.Contains(fileNameContains) && entry.FileName.Contains(folderContains))
return true;
}
}
return false;
}
public static void AddFile(string zipFile, string fileName, string directoryPathInArchive = "")
{
using (ZipFile zip = ZipFile.Read(zipFile))
{
if (!String.IsNullOrEmpty(directoryPathInArchive))
zip.AddFile(fileName, directoryPathInArchive);
else
zip.AddFile(fileName);
zip.Save();
}
}
public static void AddFile(string zipPath, string filePath, string targetFolderInZip = "")
public static void UpdateFile(string zipFile, string fileName, string directoryPathInArchive = "")
{
using (FileStream zipToOpen = new FileStream(zipPath, FileMode.Open))
using (ZipFile zip = ZipFile.Read(zipFile))
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
// Combine the target folder with the file name to create the entry path
string fileName = Path.GetFileName(filePath);
string entryPath = string.IsNullOrEmpty(targetFolderInZip)
? fileName
: Path.Combine(targetFolderInZip, fileName).Replace("\\", "/");
// Remove the entry if it already exists
var existingEntry = archive.GetEntry(entryPath);
existingEntry?.Delete();
// Add the file to the archive
archive.CreateEntryFromFile(filePath, entryPath, CompressionLevel.Optimal);
Console.WriteLine($"Added '{filePath}' to ZIP archive at '{entryPath}'.");
}
if (!String.IsNullOrEmpty(directoryPathInArchive))
zip.UpdateFile(fileName, directoryPathInArchive);
else
zip.UpdateFile(fileName);
zip.Save();
}
}
public static void RemoveFile(string zipFile, string fileName)
{
using (FileStream fs = new FileStream(zipFile, FileMode.OpenOrCreate))
using (ZipArchive archive = new ZipArchive(fs, ZipArchiveMode.Update))
using (ZipFile zip = ZipFile.Read(zipFile))
{
var entry = archive.Entries.FirstOrDefault(e => e.FullName.Contains(fileName));
entry?.Delete();
bool chkresult2 = zip.Any(entry => entry.FileName.Contains(fileName));
if (chkresult2)
{
zip.RemoveEntry(fileName);
zip.Save();
}
}
}
public static void ExtractFile(string path, string fileName, string destination)
{
using (ZipArchive archive = ZipFile.OpenRead(path))
using (ZipFile zip = ZipFile.Read(path))
{
var entry = archive.Entries.FirstOrDefault(e => e.FullName.Contains(fileName));
entry?.ExtractToFile(Path.Combine(destination, Path.GetFileName(entry.FullName)), true);
bool chkresult2 = zip.Any(entry => entry.FileName.Contains(fileName));
if (chkresult2)
{
zip.FlattenFoldersOnExtract = true;
ZipEntry e = zip[fileName];
e.Extract(destination, ExtractExistingFileAction.OverwriteSilently);
}
}
}
public static void ExtractAll(string path, string destination, bool flattenFoldersOnExtract = false)
{
using (ZipArchive archive = ZipFile.OpenRead(path))
using (ZipFile zip = ZipFile.Read(path))
{
foreach (var entry in archive.Entries)
{
string fullPath = flattenFoldersOnExtract
? Path.Combine(destination, Path.GetFileName(entry.FullName))
: Path.Combine(destination, entry.FullName);
string directoryPath = Path.GetDirectoryName(fullPath);
if (!string.IsNullOrEmpty(directoryPath)) Directory.CreateDirectory(directoryPath);
entry.ExtractToFile(fullPath, true);
}
zip.FlattenFoldersOnExtract = flattenFoldersOnExtract;
zip.ExtractAll(destination, ExtractExistingFileAction.OverwriteSilently);
}
}
public static void AddDirectory(string zipPath, string directoryPath, string directoryPathInArchive = "")
public static void AddDirectory(string path, string fileName, string directoryPathInArchive = "")
{
if (!File.Exists(zipPath))
{
Console.WriteLine("ZIP file does not exist.");
return;
}
using (FileStream zipToOpen = new FileStream(zipPath, FileMode.Open))
{
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Update))
{
foreach (string filePath in Directory.GetFiles(directoryPath, "*", SearchOption.AllDirectories))
{
// Calculate the relative path and prepend the target folder inside the ZIP
string relativePath = GetRelativePath(directoryPath, filePath);
string entryPath = Path.Combine(directoryPathInArchive, relativePath).Replace("\\", "/");
// Remove the entry if it already exists
var existingEntry = archive.GetEntry(entryPath);
existingEntry?.Delete();
// Add the file to the archive
archive.CreateEntryFromFile(filePath, entryPath, CompressionLevel.Optimal);
}
}
}
ZipFile zip = new ZipFile();
if (!String.IsNullOrEmpty(directoryPathInArchive))
zip.AddDirectory(fileName, directoryPathInArchive);
else
zip.AddDirectory(fileName);
zip.Save(path);
}
static string GetRelativePath(string basePath, string fullPath)
public static void UpdateDirectory(string path, string dirName, string directoryPathInArchive = "")
{
// Ensure both paths are absolute
basePath = Path.GetFullPath(basePath);
fullPath = Path.GetFullPath(fullPath);
if (!fullPath.StartsWith(basePath, StringComparison.OrdinalIgnoreCase))
using (ZipFile zip = ZipFile.Read(path))
{
throw new ArgumentException("The fullPath is not within the basePath.");
if (!String.IsNullOrEmpty(directoryPathInArchive))
zip.UpdateDirectory(dirName, directoryPathInArchive);
else
zip.UpdateDirectory(dirName);
zip.Save();
}
return fullPath.Substring(basePath.Length).TrimStart(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
}
public static void ExtractDirectory(string path, string folderName, string destination, bool flattenFoldersOnExtract = false)
{
using (ZipArchive archive = ZipFile.OpenRead(path))
using (ZipFile zip = ZipFile.Read(path))
{
foreach (ZipArchiveEntry entry in archive.Entries.Where(e => e.FullName.Contains(folderName)))
zip.FlattenFoldersOnExtract = flattenFoldersOnExtract;
foreach (ZipEntry e in zip.Where(x => x.FileName.Contains(folderName)))
{
string extractPath = flattenFoldersOnExtract
? Path.Combine(destination, Path.GetFileName(entry.FullName))
: Path.Combine(destination, entry.FullName);
string directoryPath = Path.GetDirectoryName(extractPath);
if (!string.IsNullOrEmpty(directoryPath))
{
Directory.CreateDirectory(directoryPath);
}
entry.ExtractToFile(extractPath, true);
e.Extract(destination, ExtractExistingFileAction.OverwriteSilently);
}
}
}
}
}
}
+10 -2
View File
@@ -308,7 +308,7 @@
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.1.0" newVersion="6.0.1.0" />
<bindingRedirect oldVersion="0.0.0.0-6.0.2.0" newVersion="6.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="WinCopies.WindowsAPICodePack.Win32Native" publicKeyToken="ac0f4cf54a027a4d" culture="neutral" />
@@ -320,7 +320,7 @@
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
@@ -330,6 +330,14 @@
<assemblyIdentity name="Microsoft.Bcl.HashCode" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Text.Encoding.CodePages" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.3" newVersion="9.0.0.3" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Security.Permissions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-9.0.0.3" newVersion="9.0.0.3" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
+15 -12
View File
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Costura.Fody" version="5.7.0" targetFramework="net48" developmentDependency="true" />
<package id="Costura.Fody" version="6.0.0" targetFramework="net48" developmentDependency="true" />
<package id="DarkNet" version="2.3.0" targetFramework="net48" />
<package id="Fody" version="6.9.0" targetFramework="net48" developmentDependency="true" />
<package id="Fody" version="6.9.2" targetFramework="net48" developmentDependency="true" />
<package id="Microsoft.Bcl.HashCode" version="6.0.0" targetFramework="net48" />
<package id="Microsoft.NETCore.Platforms" version="7.0.4" targetFramework="net48" />
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net48" />
@@ -12,29 +12,28 @@
<package id="Ookii.Dialogs.WinForms" version="4.0.0" targetFramework="net48" />
<package id="OSVersionExt" version="3.0.0" targetFramework="net48" />
<package id="PortableSettingsProvider" version="0.2.5" targetFramework="net48" />
<package id="ProDotNetZip" version="1.20.0" targetFramework="net48" />
<package id="Resource.Embedder" version="2.2.0" targetFramework="net48" />
<package id="ResourceLoader" version="3.3.1" targetFramework="net48" />
<package id="System.AppContext" version="4.3.0" targetFramework="net48" />
<package id="System.Buffers" version="4.6.0" targetFramework="net48" />
<package id="System.Collections" version="4.3.0" targetFramework="net48" />
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net48" />
<package id="System.Collections.Immutable" version="9.0.0" targetFramework="net48" />
<package id="System.Collections.Immutable" version="9.0.3" 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="9.0.0" targetFramework="net48" />
<package id="System.Diagnostics.DiagnosticSource" version="9.0.3" 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.Formats.Nrbf" version="9.0.0" targetFramework="net48" />
<package id="System.Formats.Nrbf" version="9.0.3" targetFramework="net48" />
<package id="System.Globalization" version="4.3.0" targetFramework="net48" />
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="net48" />
<package id="System.IO" version="4.3.0" targetFramework="net48" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net48" />
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net48" />
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="net48" />
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net48" />
<package id="System.Linq" version="4.3.0" targetFramework="net48" />
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net48" />
<package id="System.Memory" version="4.6.0" targetFramework="net48" />
<package id="System.Memory" version="4.6.1" targetFramework="net48" />
<package id="System.Net.Http" version="4.3.4" targetFramework="net48" />
<package id="System.Net.Primitives" version="4.3.1" targetFramework="net48" />
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net48" />
@@ -42,28 +41,32 @@
<package id="System.ObjectModel" version="4.3.0" targetFramework="net48" />
<package id="System.Reflection" version="4.3.0" targetFramework="net48" />
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net48" />
<package id="System.Reflection.Metadata" version="9.0.0" targetFramework="net48" />
<package id="System.Reflection.Metadata" version="9.0.3" targetFramework="net48" />
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net48" />
<package id="System.Resources.Extensions" version="9.0.0" targetFramework="net48" />
<package id="System.Resources.Extensions" version="9.0.3" targetFramework="net48" />
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net48" />
<package id="System.Runtime" version="4.3.1" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.0" targetFramework="net48" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.1.1" targetFramework="net48" />
<package id="System.Runtime.Extensions" version="4.3.1" targetFramework="net48" />
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="net48" />
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net48" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net48" />
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net48" />
<package id="System.Security.AccessControl" version="6.0.1" targetFramework="net48" />
<package id="System.Security.Cryptography.Algorithms" version="4.3.1" targetFramework="net48" />
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net48" />
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net48" />
<package id="System.Security.Cryptography.X509Certificates" version="4.3.2" targetFramework="net48" />
<package id="System.Security.Permissions" version="9.0.3" targetFramework="net48" />
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net48" />
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net48" />
<package id="System.Text.Encoding.CodePages" version="9.0.3" targetFramework="net48" />
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net48" />
<package id="System.Text.RegularExpressions" version="4.3.1" targetFramework="net48" />
<package id="System.Threading" version="4.3.0" targetFramework="net48" />
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net48" />
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net48" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net48" />
<package id="System.ValueTuple" version="4.6.0" targetFramework="net48" />
<package id="System.Xml.ReaderWriter" version="4.3.1" targetFramework="net48" />
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net48" />
</packages>
Binary file not shown.
Binary file not shown.
Binary file not shown.
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.
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
Binary file not shown.
+20
View File
@@ -1,3 +1,23 @@
3.3.1.6
- Fixed APK installation issue (Revert back to DotNetZip but using ProDotNetZip for fixed vulnerability)
- Update packages
- Reduced UI flickering
- Removed APK links that are no longer available
- Fixed icon not displaying. It will load icon from Play Store as a last resort
- Faster apk parsing
3.3.1.5
- Updated Apktool and Apkeditor to latest version
- Splitter between logs box and tab window is now draggable
- Fixed an issue with creating unsigned APK
3.3.1.4
- Fixed issues adding original signature back to unsigned APK
- Fixed a critical vulnerability by removing DotNetZip library and transition to System.IO.Compression
- Added option to set threads
- Added Vietnamese language
- Updated Chinese Simplified language
3.3.1.3
- Updated APKTool to 2.10.0, APKEditor to 1.4.0 and all other tools
- Minor fixes of drag and drop on merge APK section