Skip to content

lxz-jiandan/ApkRepack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ApkRepack

ApkRepack 是一个本地桌面化的 APK 内容浏览与替换工具,当前正式收敛为 JavaFX 桌面方案,不再保留 browser-shell / web 兼容层。

目标体验是:

  • 用户双击 ApkRepack.app
  • 直接打开本地桌面窗口
  • 浏览 APK 条目、预览内容、替换文件并重建 APK
  • 默认执行 replace + align + sign
  • 分发包内自带运行时、zipalignapksigner 和默认签名文件
  • 最终用户不需要额外安装 Java、Python、Android SDK 或其它辅助文件

当前状态

  • 主工程为 ApkRepackApp/
  • UI 采用 JavaFX
  • 核心能力由 Java core 复用到桌面界面和 CLI
  • 默认签名参数:
    • keystore: overt.jks
    • store password: 123123
    • alias: key0
    • key password: 123123

当前已经具备:

  • 打开 APK
  • 拖拽 APK 到窗口里加载
  • APK 条目列表浏览与过滤
  • 条目内容预览
  • 替换文件并重建 APK
  • 默认执行对齐和内置签名
  • 可取消对齐
  • 可取消默认签名
  • 可切换为自定义签名文件
  • 单独签名与验签
  • core / replace / align / sign / verify 多入口 CLI

目录结构

ApkRepackApp/        Java IDEA 工程(desktop + core + cli)
app-debug.apk        测试 APK
overt.jks            默认测试签名文件

规划文档:ApkRepackApp/PLAN.md

IntelliJ IDEA

请直接在 IDEA 中打开 ApkRepackApp/,不要打开它的上级目录作为 Java 工程。

本地开发启动

启动 JavaFX 桌面版

cd ApkRepackApp
./scripts/apkrepack.sh

当前 apkrepack.sh 会直接转到 JavaFX 启动脚本:

./scripts/javafx-run.sh

这个开发模式依赖本机的 JDK 17 和 Maven,仅用于开发调试。

构建 CLI 类文件

cd ApkRepackApp
./scripts/build-java.sh

这个脚本用于编译 core/cli 相关类,方便本地运行 CLI 或构建 native CLI。

CLI

core

cd ApkRepackApp
./scripts/core.sh \
  --input ../app-debug.apk \
  --output ../app-debug-repacked-signed.apk \
  --replace classes.dex ../some.dex

默认行为:

  • 替换指定条目
  • 执行 zipalign
  • 使用默认签名重新签名

常用参数:

  • --input <apkPath>
  • --output <apkPath>
  • --replace <apkEntry> <localFile>,可重复传入
  • --no-align
  • --no-sign
  • --ks <jks>
  • --ks-pass <pass>
  • --alias <keyAlias>
  • --key-pass <pass>

子命令

./scripts/replace.sh --input ../app-debug.apk --output ../app-debug-replaced.apk --replace classes.dex ../some.dex
./scripts/align.sh --input ../app-debug-replaced.apk --output ../app-debug-aligned.apk
./scripts/sign.sh --input ../app-debug-aligned.apk --output ../app-debug-signed.apk
./scripts/verify.sh --input ../app-debug-signed.apk

兼容入口仍保留:

./scripts/apkrepack-cli.sh inspect ../app-debug.apk
./scripts/apkrepack-cli.sh replace --input ../app-debug.apk --output ../app-debug-repacked.apk --replace classes.dex ../some.dex

多平台打包(本地)

构建当前机器对应平台的最终发布产物(自动识别 macos/linux/windows):

cd ApkRepackApp
./scripts/package-native.sh

也可以指定目标平台(一般用于 CI):

./scripts/package-native.sh --host macos
./scripts/package-native.sh --host linux
./scripts/package-native.sh --host windows

输出目录:

  • ApkRepackApp/out/release-bin/<platform>/ApkRepack-<platform>[.exe]

其中:

  • macOS: ApkRepack-macos.dmg,内含可双击启动的 ApkRepack-macos.app
  • Linux: ApkRepack-linux
  • Windows: ApkRepack-windows.exe

运行模式:

  • 无参数(双击)启动 UI
  • 命令行传参数(如 --replace--input)进入 CLI 模式,不启动 UI

如果只构建 native CLI 可执行文件:

cd ApkRepackApp
./scripts/build-native.sh

如果你需要直接调用底层单生成物构建脚本,也可以运行:

cd ApkRepackApp
./scripts/build-release-binaries.sh

Maven 相关环境变量:

  • APKREPACK_MAVEN_REPO_LOCAL:覆盖脚本默认使用的 Maven 本地仓库目录,默认是 ApkRepackApp/.m2
  • APKREPACK_MAVEN_SETTINGS:指定自定义 settings.xml,适合临时切换到 Maven Central 或 CI 专用镜像
  • APKREPACK_MAVEN_OFFLINE=true:强制 Maven 离线构建,适合依赖已缓存完成后的重复打包

内部调试产物

如果需要保留拆分的 ui/cli 调试目录,可使用内部辅助脚本:

cd ApkRepackApp
./scripts/package-dist-internal.sh --host macos

内部调试输出目录:

  • ApkRepackApp/out/dist/<platform>/ui/
  • ApkRepackApp/out/dist/<platform>/cli/

这些目录仅用于内部调试、拆分验证和兼容旧辅助脚本,不作为最终发布物说明。

GitHub 自动打包

仓库已提供 workflow:

  • .github/workflows/build-multi-platform.yml

触发方式:

  • 每次 push
  • 手动 workflow_dispatch

CI 会在 macOS / Linux / Windows 三个平台各产出一个发布产物:

  • Linux: ApkRepack-linux
  • Windows: ApkRepack-windows.exe
  • macOS: ApkRepack-macos.dmg(内含可双击启动的 ApkRepack-macos.app

同时会自动更新右侧 Releases 中的预发布:

  • tag: latest-build
  • name: Latest Build (Auto Updated)
  • 资产文件:三平台单文件发布产物(不再打 zip)

测试材料

仓库根目录当前已放置:

  • app-debug.apk
  • overt.jks

默认测试密钥:

  • storePassword: 123123
  • keyAlias: key0
  • keyPassword: 123123

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages