# split-apk-tool **Repository Path**: a3077932030/split-apk-tool ## Basic Information - **Project Name**: split-apk-tool - **Description**: 将一个apk/zip根据自己的配置分成两个apk/zip - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-31 - **Last Updated**: 2026-03-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SplitApk 一个强大的 Python 命令行工具,用于将 APK/ZIP 文件按配置拆分为两个独立的包。 ## 功能特性 - 🚀 **简单易用**:无需复杂配置,开箱即用 - 📦 **灵活拆分**:支持按文件/文件夹拆分,支持通配符匹配 - 🔧 **高度可配置**:通过 JSON 配置文件自定义拆分规则 - 💻 **跨平台**:支持 Windows、Linux、macOS - 📚 **零依赖**:仅使用 Python 标准库,无需安装第三方依赖 ## 安装 ### 方式一:直接使用 ```bash # 克隆仓库 git clone cd SplitApk # 运行 python main.py --help ``` ### 方式二:安装为命令行工具 ```bash # 安装 pip install -e . # 使用 split-apk --help ``` ### 方式三:打包为独立可执行文件(无需 Python 环境) 使用 PyInstaller 打包为单个 exe 文件,可在任何 Windows 机器上直接运行: ```bash # 1. 安装打包依赖 pip install pyinstaller # 2. 打包为单文件 exe pyinstaller --onefile --console --name split-apk --clean --noconfirm main.py # 3. 输出文件 # dist/split-apk.exe ``` 或者使用项目自带的打包脚本: ```bash # 安装 PyInstaller 并自动打包 python build.py ``` 打包完成后,`dist/split-apk.exe` 可直接在任何 Windows 机器上运行,无需安装 Python。 ```bash # 使用 exe split-apk.exe app.apk split-apk.exe app.apk -c config.json split-apk.exe app.apk -o ./output ``` ## 快速开始 ### 基本用法 ```bash # 使用默认配置拆分 APK(将 assets 文件夹移到 A 包) python main.py app.apk # 输出: # 正在拆分文件: app.apk # 拆分完成! # Assets 包 (A): app_assets.apk # Base 包 (B): app_base.apk ``` ### 使用配置文件 ```bash # 创建配置文件 config.json python main.py app.apk -c config.json ``` ### 指定输出路径 ```bash # 指定输出目录 python main.py app.apk -o ./output # 指定输出文件名 python main.py app.apk --output-a assets.zip --output-b base.zip ``` ## 配置文件说明 创建 `config.json` 文件来自定义拆分规则: ```json { "splitFiles": ["assets", "res/images"], "keepFiles": ["assets/config.json"], "copyFiles": ["lib/"], "delteFiles": ["temp/", "*.tmp"] } ``` ### 配置参数 | 参数 | 类型 | 说明 | |------|------|------| | `splitFiles` | 字符串数组 | 需要移到 A 包的文件/文件夹相对路径 | | `keepFiles` | 字符串数组 | 不想被移到 A 包的文件/文件夹 | | `copyFiles` | 字符串数组 | A 包和 B 包都需要的文件/文件夹 | | `delteFiles` | 字符串数组 | A 包和 B 包都要删除的文件/文件夹 | ### 优先级规则(从高到低) 1. **deleteFiles** - 匹配的文件会被删除,不写入任何包 2. **copyFiles** - 匹配的文件会同时出现在 A 包和 B 包 3. **keepFiles** - 保留在 B 包(可阻止 splitFiles 带走指定文件) 4. **splitFiles** - 移到 A 包 5. **其余文件** - 默认归入 B 包 **注意**:`keepFiles` 优先级高于 `splitFiles`,可以阻止 `splitFiles` 带走指定的文件 ### 默认配置 如果不指定配置文件,使用以下默认配置: ```json { "splitFiles": ["assets"], "keepFiles": [], "copyFiles": [], "delteFiles": [] } ``` ## 路径匹配规则 支持三种匹配方式: 1. **精确匹配**:完全匹配文件路径 - `"assets/config.json"` 匹配 `assets/config.json` 2. **前缀匹配(文件夹匹配)**:匹配以指定路径开头的所有文件 - `"assets"` 匹配 `assets/` 文件夹下的所有文件 3. **通配符匹配**:使用 `*` 和 `?` 通配符 - `"*.tmp"` 匹配所有 `.tmp` 文件 - `"assets/*.json"` 匹配 `assets/` 下所有 JSON 文件 ## 命令行参数 ``` usage: split-apk [-h] [-c FILE] [-o DIR] [--output-a FILE] [--output-b FILE] [-v] INPUT SplitApk - APK/ZIP 文件拆分工具 positional arguments: INPUT 输入的 APK/ZIP 文件路径 optional arguments: -h, --help 显示帮助信息并退出 -c FILE, --config FILE 配置文件路径(JSON 格式),不指定则使用默认配置 -o DIR, --output-dir DIR 输出目录,默认在输入文件同级目录生成 --output-a FILE Assets 包(A 包)输出路径 --output-b FILE Base 包(B 包)输出路径 -v, --version 显示版本信息并退出 ``` ## 使用示例 ### 示例 1:拆分游戏 APK 将游戏资源文件(assets 文件夹)单独拆分: ```bash python main.py game.apk ``` 结果: - `game_assets.apk` - 包含 assets 文件夹 - `game_base.apk` - 包含其他所有文件 ### 示例 2:拆分并保留某些文件 配置文件 `config.json`: ```json { "splitFiles": ["assets"], "keepFiles": ["assets/config.json"], "copyFiles": ["lib/"] } ``` ```bash python main.py app.apk -c config.json ``` 结果: - `app_assets.apk` - 包含 assets 文件夹(除了 assets/config.json)和 lib/ 文件夹 - `app_base.apk` - 包含其他所有文件和 lib/ 文件夹 ### 示例 3:删除临时文件 配置文件 `config.json`: ```json { "splitFiles": ["assets"], "delteFiles": ["temp/", "*.log", "*.tmp"] } ``` ```bash python main.py app.apk -c config.json ``` 结果: - 两个包都不包含 temp/ 文件夹和所有 .log、.tmp 文件 ## 项目结构 ``` SplitApk/ ├── split_apk/ # 核心包 │ ├── __init__.py # 包初始化 │ ├── cli.py # 命令行解析 │ ├── config.py # 配置管理 │ ├── splitter.py # 核心拆分引擎 │ └── path_match.py # 路径匹配工具 ├── main.py # 程序入口 ├── README.md # 项目说明 ├── requirements.txt # 依赖声明 └── setup.py # 打包配置 ``` ## 系统要求 - Python 3.8+ ## 许可证 MIT License ## 贡献 欢迎提交 Issue 和 Pull Request!