apk-patchx 7.9.2025.1__tar.gz → 7.9.2025.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (22) hide show
  1. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/.gitignore +2 -0
  2. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/PKG-INFO +10 -10
  3. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/README.md +9 -9
  4. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/__init__.py +1 -1
  5. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/cli.py +2 -2
  6. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/services/adb.py +2 -2
  7. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/services/android_sdk.py +5 -5
  8. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/services/apktool.py +2 -2
  9. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/services/frida.py +2 -2
  10. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/services/patch_dex.py +2 -2
  11. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/services/signing.py +8 -8
  12. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/utils/core.py +2 -2
  13. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/pyproject.toml +2 -2
  14. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/LICENSE +0 -0
  15. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/exceptions.py +0 -0
  16. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/services/__init__.py +0 -0
  17. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/services/patch_smali.py +0 -0
  18. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/services/split_merge.py +0 -0
  19. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/utils/__init__.py +0 -0
  20. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/utils/manifest.py +0 -0
  21. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/utils/py.typed +0 -0
  22. {apk_patchx-7.9.2025.1 → apk_patchx-7.9.2025.2}/apk_patchx/utils/versions.py +0 -0
@@ -1,3 +1,5 @@
1
1
  __pycache__
2
2
  .env
3
3
  .venv
4
+ dist
5
+
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: apk-patchx
3
- Version: 7.9.2025.1
3
+ Version: 7.9.2025.2
4
4
  Summary: Android APK manipulation toolkit with Frida gadget injection support
5
5
  Keywords: android,apk,reverse-engineering,frida,patching
6
6
  Author: APKPatcher Contributors
@@ -31,7 +31,7 @@ Project-URL: Homepage, https://github.com/kaifcodec/apk-patchx
31
31
  Project-URL: Issues, https://github.com/kaifcodec/apk-patchx/issues
32
32
  Project-URL: Repository, https://github.com/kaifcodec/apk-patchx.git
33
33
 
34
- # APKPatcher
34
+ # APK-Patchx
35
35
 
36
36
  A powerful command-line tool for Android APK manipulation, including Frida gadget injection, APK decoding/building, and package management.
37
37
 
@@ -46,39 +46,39 @@ A powerful command-line tool for Android APK manipulation, including Frida gadge
46
46
  ## Installation
47
47
 
48
48
  ```bash
49
- pip install apkpatcher
49
+ pip install apk-patchx
50
50
  ```
51
51
 
52
52
  ## Usage
53
53
 
54
54
  ### Pull APK from device
55
55
  ```bash
56
- apkpatcher pull com.example.app
56
+ apk-patchx pull com.example.app
57
57
  ```
58
58
 
59
59
  ### Decode APK
60
60
  ```bash
61
- apkpatcher decode app.apk
61
+ apk-patchx decode app.apk
62
62
  ```
63
63
 
64
64
  ### Build APK from source
65
65
  ```bash
66
- apkpatcher build app_src/
66
+ apk-patchx build app_src/
67
67
  ```
68
68
 
69
69
  ### Patch APK with Frida gadget
70
70
  ```bash
71
- apkpatcher patch app.apk --arch arm64
71
+ apk-patchx patch app.apk --arch arm64
72
72
  ```
73
73
 
74
74
  ### Rename APK package
75
75
  ```bash
76
- apkpatcher rename app.apk com.newpackage.name
76
+ apk-patchx rename app.apk com.newpackage.name
77
77
  ```
78
78
 
79
79
  ### Sign APK
80
80
  ```bash
81
- apkpatcher sign app.apk
81
+ apk-patchx sign app.apk
82
82
  ```
83
83
 
84
84
  ## Architecture Support
@@ -96,7 +96,7 @@ apkpatcher sign app.apk
96
96
 
97
97
  ## Tool Management
98
98
 
99
- APKPatcher automatically downloads and manages required tools in `~/.apkpatcher/tools/`:
99
+ APK-Patchx automatically downloads and manages required tools in `~/.apk-patchx/tools/`:
100
100
 
101
101
  - apktool
102
102
  - Android SDK build-tools
@@ -1,4 +1,4 @@
1
- # APKPatcher
1
+ # APK-Patchx
2
2
 
3
3
  A powerful command-line tool for Android APK manipulation, including Frida gadget injection, APK decoding/building, and package management.
4
4
 
@@ -13,39 +13,39 @@ A powerful command-line tool for Android APK manipulation, including Frida gadge
13
13
  ## Installation
14
14
 
15
15
  ```bash
16
- pip install apkpatcher
16
+ pip install apk-patchx
17
17
  ```
18
18
 
19
19
  ## Usage
20
20
 
21
21
  ### Pull APK from device
22
22
  ```bash
23
- apkpatcher pull com.example.app
23
+ apk-patchx pull com.example.app
24
24
  ```
25
25
 
26
26
  ### Decode APK
27
27
  ```bash
28
- apkpatcher decode app.apk
28
+ apk-patchx decode app.apk
29
29
  ```
30
30
 
31
31
  ### Build APK from source
32
32
  ```bash
33
- apkpatcher build app_src/
33
+ apk-patchx build app_src/
34
34
  ```
35
35
 
36
36
  ### Patch APK with Frida gadget
37
37
  ```bash
38
- apkpatcher patch app.apk --arch arm64
38
+ apk-patchx patch app.apk --arch arm64
39
39
  ```
40
40
 
41
41
  ### Rename APK package
42
42
  ```bash
43
- apkpatcher rename app.apk com.newpackage.name
43
+ apk-patchx rename app.apk com.newpackage.name
44
44
  ```
45
45
 
46
46
  ### Sign APK
47
47
  ```bash
48
- apkpatcher sign app.apk
48
+ apk-patchx sign app.apk
49
49
  ```
50
50
 
51
51
  ## Architecture Support
@@ -63,7 +63,7 @@ apkpatcher sign app.apk
63
63
 
64
64
  ## Tool Management
65
65
 
66
- APKPatcher automatically downloads and manages required tools in `~/.apkpatcher/tools/`:
66
+ APK-Patchx automatically downloads and manages required tools in `~/.apk-patchx/tools/`:
67
67
 
68
68
  - apktool
69
69
  - Android SDK build-tools
@@ -2,7 +2,7 @@
2
2
 
3
3
  __version__ = "7.9.2025.1"
4
4
  __author__ = "APKPatcher Contributors"
5
- __email__ = "contributors@apkpatcher.dev"
5
+ __email__ = "contributors@apk-patchx.dev"
6
6
  __license__ = "MIT"
7
7
 
8
8
  from .exceptions import APKPatcherError, ToolNotFoundError, ValidationError
@@ -14,7 +14,7 @@ from .services.adb import ADBService
14
14
  from .services.apktool import ApktoolService
15
15
  from .services.frida import FridaService
16
16
  from .services.signing import SigningService
17
- from .utils.core import setup_logging, get_apkpatcher_home
17
+ from .utils.core import setup_logging, get_apk-patchx_home
18
18
 
19
19
  colorama.init(autoreset=True)
20
20
 
@@ -58,7 +58,7 @@ def cli(ctx: click.Context, verbose: bool, version: bool) -> None:
58
58
  setup_logging(verbose)
59
59
 
60
60
  # Initialize APKPatcher home directory
61
- home = get_apkpatcher_home()
61
+ home = get_apk-patchx_home()
62
62
  home.mkdir(parents=True, exist_ok=True)
63
63
 
64
64
  if verbose:
@@ -6,7 +6,7 @@ from pathlib import Path
6
6
  from typing import List, Optional
7
7
 
8
8
  from ..exceptions import ADBError, ToolNotFoundError
9
- from ..utils.core import run_command, get_apkpatcher_home
9
+ from ..utils.core import run_command, get_apk-patchx_home
10
10
  from .android_sdk import AndroidSDKService
11
11
 
12
12
 
@@ -29,7 +29,7 @@ class ADBService:
29
29
  else:
30
30
  # Use SDK ADB
31
31
  self.sdk_service.ensure_platform_tools()
32
- sdk_root = get_apkpatcher_home() / "tools" / "sdk"
32
+ sdk_root = get_apk-patchx_home() / "tools" / "sdk"
33
33
  self._adb_path = sdk_root / "platform-tools" / "adb"
34
34
 
35
35
  if not self._adb_path.exists():
@@ -7,7 +7,7 @@ from typing import Optional
7
7
  from urllib.parse import urljoin
8
8
 
9
9
  from ..exceptions import NetworkError, ToolNotFoundError
10
- from ..utils.core import run_command, get_apkpatcher_home, download_file
10
+ from ..utils.core import run_command, get_apk-patchx_home, download_file
11
11
 
12
12
 
13
13
  class AndroidSDKService:
@@ -15,8 +15,8 @@ class AndroidSDKService:
15
15
 
16
16
  def __init__(self, verbose: bool = False):
17
17
  self.verbose = verbose
18
- self.sdk_root = get_apkpatcher_home() / "tools" / "sdk"
19
- self.cmdline_tools_dir = get_apkpatcher_home() / "tools" / "cmdline-tools"
18
+ self.sdk_root = get_apk-patchx_home() / "tools" / "sdk"
19
+ self.cmdline_tools_dir = get_apk-patchx_home() / "tools" / "cmdline-tools"
20
20
 
21
21
  def ensure_java(self) -> None:
22
22
  """Ensure Java is available."""
@@ -41,7 +41,7 @@ class AndroidSDKService:
41
41
 
42
42
  # Download command line tools
43
43
  tools_url = "https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip"
44
- zip_path = get_apkpatcher_home() / "tools" / "commandlinetools.zip"
44
+ zip_path = get_apk-patchx_home() / "tools" / "commandlinetools.zip"
45
45
 
46
46
  if self.verbose:
47
47
  print(f"Downloading Android command line tools...")
@@ -51,7 +51,7 @@ class AndroidSDKService:
51
51
  # Extract
52
52
  import zipfile
53
53
  with zipfile.ZipFile(zip_path, 'r') as zip_ref:
54
- zip_ref.extractall(get_apkpatcher_home() / "tools")
54
+ zip_ref.extractall(get_apk-patchx_home() / "tools")
55
55
 
56
56
  zip_path.unlink()
57
57
 
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import List, Optional
6
6
 
7
7
  from ..exceptions import BuildError, NetworkError, ToolNotFoundError, ValidationError
8
- from ..utils.core import run_command, get_apkpatcher_home, download_file
8
+ from ..utils.core import run_command, get_apk-patchx_home, download_file
9
9
  from ..utils.versions import get_latest_github_release
10
10
  from .android_sdk import AndroidSDKService
11
11
 
@@ -27,7 +27,7 @@ class ApktoolService:
27
27
 
28
28
  def _ensure_apktool(self) -> None:
29
29
  """Ensure apktool is available."""
30
- tools_dir = get_apkpatcher_home() / "tools"
30
+ tools_dir = get_apk-patchx_home() / "tools"
31
31
  tools_dir.mkdir(parents=True, exist_ok=True)
32
32
 
33
33
  # Check for existing apktool
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import Optional, Dict
6
6
 
7
7
  from ..exceptions import FridaPatchError, NetworkError, ValidationError
8
- from ..utils.core import run_command, get_apkpatcher_home, download_file
8
+ from ..utils.core import run_command, get_apk-patchx_home, download_file
9
9
  from ..utils.versions import get_latest_github_release
10
10
  from .apktool import ApktoolService
11
11
  from .signing import SigningService
@@ -75,7 +75,7 @@ class FridaService:
75
75
  gadget_name = f"frida-gadget-{version}-{frida_arch}.so"
76
76
  gadget_xz_name = f"{gadget_name}.xz"
77
77
 
78
- tools_dir = get_apkpatcher_home() / "tools"
78
+ tools_dir = get_apk-patchx_home() / "tools"
79
79
  tools_dir.mkdir(parents=True, exist_ok=True)
80
80
 
81
81
  gadget_path = tools_dir / gadget_name
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import Optional
6
6
 
7
7
  from ..exceptions import FridaPatchError, ToolNotFoundError
8
- from ..utils.core import run_command, get_apkpatcher_home, download_file
8
+ from ..utils.core import run_command, get_apk-patchx_home, download_file
9
9
 
10
10
 
11
11
  class DexPatcher:
@@ -24,7 +24,7 @@ class DexPatcher:
24
24
 
25
25
  def _ensure_dexpatch(self) -> None:
26
26
  """Ensure dexpatch is available."""
27
- tools_dir = get_apkpatcher_home() / "tools"
27
+ tools_dir = get_apk-patchx_home() / "tools"
28
28
  tools_dir.mkdir(parents=True, exist_ok=True)
29
29
 
30
30
  dexpatch_path = tools_dir / "dexpatch-0.1.jar"
@@ -5,7 +5,7 @@ from pathlib import Path
5
5
  from typing import Optional
6
6
 
7
7
  from ..exceptions import SigningError, ToolNotFoundError
8
- from ..utils.core import run_command, get_apkpatcher_home
8
+ from ..utils.core import run_command, get_apk-patchx_home
9
9
  from .android_sdk import AndroidSDKService
10
10
 
11
11
 
@@ -21,7 +21,7 @@ class SigningService:
21
21
  def keystore_path(self) -> Path:
22
22
  """Get debug keystore path."""
23
23
  if self._keystore_path is None:
24
- keystore_path = get_apkpatcher_home() / "debug.keystore"
24
+ keystore_path = get_apk-patchx_home() / "debug.keystore"
25
25
  if not keystore_path.exists():
26
26
  self._generate_debug_keystore(keystore_path)
27
27
  self._keystore_path = keystore_path
@@ -35,12 +35,12 @@ class SigningService:
35
35
  cmd = [
36
36
  "keytool", "-genkey", "-v",
37
37
  "-keystore", str(keystore_path),
38
- "-alias", "apkpatcher_debug",
38
+ "-alias", "apk-patchx_debug",
39
39
  "-keyalg", "RSA",
40
40
  "-keysize", "2048",
41
41
  "-validity", "10000",
42
- "-storepass", "apkpatcher",
43
- "-keypass", "apkpatcher",
42
+ "-storepass", "apk-patchx",
43
+ "-keypass", "apk-patchx",
44
44
  "-dname", "CN=APKPatcher Debug, OU=Debug, O=APKPatcher, C=US",
45
45
  "-noprompt"
46
46
  ]
@@ -89,9 +89,9 @@ class SigningService:
89
89
  cmd = [
90
90
  str(apksigner), "sign",
91
91
  "--ks", str(self.keystore_path),
92
- "--ks-key-alias", "apkpatcher_debug",
93
- "--ks-pass", "pass:apkpatcher",
94
- "--key-pass", "pass:apkpatcher",
92
+ "--ks-key-alias", "apk-patchx_debug",
93
+ "--ks-pass", "pass:apk-patchx",
94
+ "--key-pass", "pass:apk-patchx",
95
95
  "--out", str(output_path),
96
96
  str(apk_path)
97
97
  ]
@@ -20,9 +20,9 @@ def setup_logging(verbose: bool = False) -> None:
20
20
  )
21
21
 
22
22
 
23
- def get_apkpatcher_home() -> Path:
23
+ def get_apk-patchx_home() -> Path:
24
24
  """Get APKPatcher home directory."""
25
- return Path.home() / ".apkpatcher"
25
+ return Path.home() / ".apk-patchx"
26
26
 
27
27
 
28
28
  def run_command(cmd, capture_output: bool = False, text: bool = True, **kwargs):
@@ -4,7 +4,7 @@ build-backend = "flit_core.buildapi"
4
4
 
5
5
  [project]
6
6
  name = "apk-patchx"
7
- version = "7.9.2025.1"
7
+ version = "7.9.2025.2"
8
8
  description = "Android APK manipulation toolkit with Frida gadget injection support"
9
9
  readme = "README.md"
10
10
  license = {file = "LICENSE"}
@@ -47,4 +47,4 @@ Issues = "https://github.com/kaifcodec/apk-patchx/issues"
47
47
  apk-patchx = "apk_patchx.cli:main"
48
48
 
49
49
  [tool.flit.sdist]
50
- exclude = ["tests/", "docs/", ".github/", ".git", "rm_pycache"]
50
+ exclude = ["tests/", "docs/", ".github/", ".git", "rm_pycache.py", "run.py"]
File without changes