一个简单易用的 APK 自动修改工具,支持批量修改 APK 的包名、应用名称、版本号,并重新签名。
- 批量修改:支持同时处理多个 APK 配置
- 包名修改:修改 APK 的包名,包括 Smali 代码中的引用
- 应用名称修改:修改应用的显示名称
- 版本号修改:修改版本 Code 和版本 Name
- 自动依赖检查:运行前自动检查所需工具是否安装
- 跨平台支持:支持 Windows、Linux 和 macOS
- GitHub Action 集成:支持通过 GitHub Action 自动构建
- Python 3.6+:运行脚本的基础环境
- JDK+:提供
keytool和jarsigner工具 - apktool:用于反编译和回编译 APK
- 下载地址:https://github.com/iBotPeaches/Apktool
- 确保配置到环境变量
- Android SDK build-tools:提供
zipalign和apksigner工具- 确保配置到环境变量
- 克隆或下载本项目到本地
- 安装上述依赖工具并配置环境变量
- 准备好待修改的原始 APK 文件,命名为
template.apk并放在项目根目录
在项目根目录创建 config.json 文件,格式如下:
[
["com.example.newpackage", "New App Name", 9999, "9999.0.0"],
["com.another.package", "Another App", 8888, "8888.0.0"]
]- 每个配置项包含四个元素:
- 新包名(
new_package_name) - 新应用名称(
new_app_name) - 新版本 Code(
new_version_code) - 新版本 Name(
new_version_name)
- 新包名(
在项目根目录执行以下命令:
# Windows
python main.py
# Linux/macOS
python3 main.py修改后的 APK 文件会生成在 output 目录中,文件名以新包名命名。
- 依赖检查:检查
apktool、keytool、jarsigner、zipalign等工具是否安装 - 生成签名:生成与 Android Studio 一致的 Debug 签名文件
- 反编译 APK:使用 apktool 反编译原始 APK
- 修改配置:
- 修改
AndroidManifest.xml中的包名、版本号 - 修改应用名称(优先修改
strings.xml,其次修改Manifest) - 替换 Smali 代码中的包名引用
- 重命名 Smali 目录结构
- 修改
- 回编译 APK:使用 apktool 回编译修改后的代码
- 优化与签名:
- 使用
zipalign优化 APK - 使用
apksigner或jarsigner进行签名
- 使用
- 清理临时文件:删除临时生成的文件和目录
本项目已集成 GitHub Action,支持自动构建:
- 将代码推送到 GitHub 仓库的
main分支 - GitHub Action 会自动:
- 安装所需依赖
- 运行修改脚本
- 上传生成的 APK 作为构建产物
- 在 GitHub Actions 页面的 "Artifacts" 部分下载生成的 APK
- 原始 APK:请确保
template.apk文件存在且未被加密或加固 - 依赖配置:确保所有依赖工具已正确安装并配置到环境变量
- 签名冲突:由于使用 Debug 签名,修改后的 APK 可以直接覆盖安装使用相同签名的应用
- 兼容性:部分 APK 可能由于混淆或特殊结构导致修改失败
- 法律合规:请确保修改和使用 APK 符合相关法律法规
本项目采用 MIT 许可证,详见 LICENSE 文件。
欢迎提交 Issue 和 Pull Request 来改进本项目。
如有问题或建议,请通过 GitHub Issues 与我们联系。