|
| 1 | +# APK 自动修改工具 |
| 2 | + |
| 3 | +一个简单易用的 APK 自动修改工具,支持批量修改 APK 的包名、应用名称、版本号,并重新签名。 |
| 4 | + |
| 5 | +## 功能特性 |
| 6 | + |
| 7 | +- **批量修改**:支持同时处理多个 APK 配置 |
| 8 | +- **包名修改**:修改 APK 的包名,包括 Smali 代码中的引用 |
| 9 | +- **应用名称修改**:修改应用的显示名称 |
| 10 | +- **版本号修改**:修改版本 Code 和版本 Name |
| 11 | +- **自动依赖检查**:运行前自动检查所需工具是否安装 |
| 12 | +- **跨平台支持**:支持 Windows、Linux 和 macOS |
| 13 | +- **GitHub Action 集成**:支持通过 GitHub Action 自动构建 |
| 14 | + |
| 15 | +## 安装与依赖 |
| 16 | + |
| 17 | +### 依赖工具 |
| 18 | + |
| 19 | +1. **Python 3.6+**:运行脚本的基础环境 |
| 20 | +2. **JDK+**:提供 `keytool` 和 `jarsigner` 工具 |
| 21 | +3. **apktool**:用于反编译和回编译 APK |
| 22 | + - 下载地址:[https://github.com/iBotPeaches/Apktool](https://github.com/iBotPeaches/Apktool) |
| 23 | + - 确保配置到环境变量 |
| 24 | +4. **Android SDK build-tools**:提供 `zipalign` 和 `apksigner` 工具 |
| 25 | + - 确保配置到环境变量 |
| 26 | + |
| 27 | +### 安装步骤 |
| 28 | + |
| 29 | +1. 克隆或下载本项目到本地 |
| 30 | +2. 安装上述依赖工具并配置环境变量 |
| 31 | +3. 准备好待修改的原始 APK 文件,命名为 `template.apk` 并放在项目根目录 |
| 32 | + |
| 33 | +## 使用方法 |
| 34 | + |
| 35 | +### 1. 配置修改参数 |
| 36 | + |
| 37 | +在项目根目录创建 `config.json` 文件,格式如下: |
| 38 | + |
| 39 | +```json |
| 40 | +[ |
| 41 | + ["com.example.newpackage", "New App Name", 9999, "9999.0.0"], |
| 42 | + ["com.another.package", "Another App", 8888, "8888.0.0"] |
| 43 | +] |
| 44 | +``` |
| 45 | + |
| 46 | +- 每个配置项包含四个元素: |
| 47 | + 1. 新包名(`new_package_name`) |
| 48 | + 2. 新应用名称(`new_app_name`) |
| 49 | + 3. 新版本 Code(`new_version_code`) |
| 50 | + 4. 新版本 Name(`new_version_name`) |
| 51 | + |
| 52 | +### 2. 运行脚本 |
| 53 | + |
| 54 | +在项目根目录执行以下命令: |
| 55 | + |
| 56 | +```bash |
| 57 | +# Windows |
| 58 | +python main.py |
| 59 | + |
| 60 | +# Linux/macOS |
| 61 | +python3 main.py |
| 62 | +``` |
| 63 | + |
| 64 | +### 3. 查看结果 |
| 65 | + |
| 66 | +修改后的 APK 文件会生成在 `output` 目录中,文件名以新包名命名。 |
| 67 | + |
| 68 | +## 工作原理 |
| 69 | + |
| 70 | +1. **依赖检查**:检查 `apktool`、`keytool`、`jarsigner`、`zipalign` 等工具是否安装 |
| 71 | +2. **生成签名**:生成与 Android Studio 一致的 Debug 签名文件 |
| 72 | +3. **反编译 APK**:使用 apktool 反编译原始 APK |
| 73 | +4. **修改配置**: |
| 74 | + - 修改 `AndroidManifest.xml` 中的包名、版本号 |
| 75 | + - 修改应用名称(优先修改 `strings.xml`,其次修改 `Manifest`) |
| 76 | + - 替换 Smali 代码中的包名引用 |
| 77 | + - 重命名 Smali 目录结构 |
| 78 | +5. **回编译 APK**:使用 apktool 回编译修改后的代码 |
| 79 | +6. **优化与签名**: |
| 80 | + - 使用 `zipalign` 优化 APK |
| 81 | + - 使用 `apksigner` 或 `jarsigner` 进行签名 |
| 82 | +7. **清理临时文件**:删除临时生成的文件和目录 |
| 83 | + |
| 84 | +## GitHub Action 集成 |
| 85 | + |
| 86 | +本项目已集成 GitHub Action,支持自动构建: |
| 87 | + |
| 88 | +1. 将代码推送到 GitHub 仓库的 `main` 分支 |
| 89 | +2. GitHub Action 会自动: |
| 90 | + - 安装所需依赖 |
| 91 | + - 运行修改脚本 |
| 92 | + - 上传生成的 APK 作为构建产物 |
| 93 | +3. 在 GitHub Actions 页面的 "Artifacts" 部分下载生成的 APK |
| 94 | + |
| 95 | +## 注意事项 |
| 96 | + |
| 97 | +1. **原始 APK**:请确保 `template.apk` 文件存在且未被加密或加固 |
| 98 | +2. **依赖配置**:确保所有依赖工具已正确安装并配置到环境变量 |
| 99 | +3. **签名冲突**:由于使用 Debug 签名,修改后的 APK 可以直接覆盖安装使用相同签名的应用 |
| 100 | +4. **兼容性**:部分 APK 可能由于混淆或特殊结构导致修改失败 |
| 101 | +5. **法律合规**:请确保修改和使用 APK 符合相关法律法规 |
| 102 | + |
| 103 | +## 许可证 |
| 104 | + |
| 105 | +本项目采用 MIT 许可证,详见 [LICENSE](LICENSE) 文件。 |
| 106 | + |
| 107 | +## 贡献 |
| 108 | + |
| 109 | +欢迎提交 Issue 和 Pull Request 来改进本项目。 |
| 110 | + |
| 111 | +## 联系方式 |
| 112 | + |
| 113 | +如有问题或建议,请通过 GitHub Issues 与我们联系。 |
0 commit comments