# push_apk **Repository Path**: No.N/push_apk ## Basic Information - **Project Name**: push_apk - **Description**: 用于备份、替换系统原有应用,以及安装应用。 支持鼠标右键一键推送、替换、安装操作。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-22 - **Last Updated**: 2026-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Android APK 替换与推包工具 (push_apk) 专为 Android 系统开发、车载系统 (IVI) 定制、ROM 固件维护以及日常应用调试量身打造的快速推包与系统应用替换工具。 --- ## 📁 目录文件清单 | 文件名 | 作用说明 | | :--- | :--- | | **`replace_apk.bat`** | 核心执行脚本(负责包名解析、分区检测、卸载冲突、备份、推包、赋权及重启) | | **`一键配置右键菜单.bat`** | **快速部署脚本**:自动识别当前所在路径,一键为 `.apk` 文件配置 Windows 鼠标右键菜单 | | **`一键卸载右键菜单.bat`** | **快速清理脚本**:一键从 Windows 鼠标右键菜单中移除相关项 | | **`Readme.md`** | 本工具使用与维护说明文档 | --- ## 🚀 核心功能与工作机制 ``` [输入目标 APK] │ [解析包名 (aapt/aapt2)] │ ┌─────────────┴─────────────┐ ▼ ▼ 【设备上未安装】 【设备上已安装】 │ │ 直接执行 adb install │ 覆盖安装,无需重启设备 ┌──────┴──────┐ │ ▼ ▼ [结束] 【存在 /data 后装】 【仅存在系统分区】 │ │ 先执行 pm uninstall │ 清除 /data 后装应用 │ │ │ └──────┬──────┘ ▼ [定位系统原始 APK 路径] │ [检测是否存在历史备份] ┌─────┴─────┐ ▼ ▼ 【未备份】 【已备份】 │ │ mv 备份为时间戳文件 跳过备份 (*.apk_back) 删除当前旧包 │ │ └─────┬─────┘ ▼ [推送新 APK 至原始目录同名] │ [修正 644 文件权限] │ [执行 adb shell sync] │ [询问用户是否重启] ┌─────┴─────┐ ▼ ▼ 【确认】 【取消/跳过】 │ │ 执行 adb reboot 直接结束任务 ``` ### 1. 全新应用直接安装(免重启、自动解除白名单限制) * 自动检测目标应用是否在设备上安装。 * 若系统中**完全不存在同包名应用**,先自动执行 `adb shell setprop persist.sys.block_apk_install 0` 解除车机安装白名单限制,然后调用 `adb install -r -d -t` 完成安装,**安装完成后直接退出,不重启设备**。 ### 2. 双分区检测与优先卸载后装版本 * 若目标应用在 **`/data` 分区** 与 **系统分区(`/system`、`/product`、`/system_ext`、`/vendor`)** 同时存在,表明系统预置应用被后装或升级版本覆盖; * 脚本会**优先执行 `pm uninstall <包名>` 卸载 `/data` 分区的版本**,使系统自动恢复系统分区原始挂载状态,确保后续精准替换底层 ROM 原始文件。 ### 3. 出厂原始文件时间戳安全备份 * 覆盖前自动提取 APK 主名称与设备时间戳,重命名保存为: `原始文件名_YYYYMMDD_HHMMSS.apk_back` *(例如:`Settings_20260904_181904.apk_back`)* * 采用 `.apk_back` 后缀,避免 Android 系统开机扫描到重名包产生冲突。 ### 4. 历史备份智能检测(防多次覆盖) * 执行备份前自动扫描同目录下是否已存在 `*.apk_back` 文件; * **若已存在历史备份,自动跳过备份步骤**,直接删除当前旧包并推入新包。有效保护出厂原始 ROM 文件不被后续 Debug 过程覆盖,同时防止多次备份占满系统分区闪存。 ### 5. 权限修正、缓存刷新与交互式重启确认 * 推包完成后,自动通过 `chmod 644` 修正读取权限,防止应用读取失败或开机崩退; * 执行 `adb shell sync` 强制刷写磁盘缓存,确保数据完全落盘; * 询问用户是否重启设备,仅在用户确认(输入 Y)时执行 `reboot` 重启,未确认则跳过重启并结束任务。 --- ## 💻 快速使用指南 ### 🌟 方式 1:鼠标右键直接推包(最推荐) 1. 在任何 `.apk` 安装包上点击**鼠标右键**; 2. 选择 **“推送到安卓设备 (替换APK)”** 即可自动开始推包! *(Win11 若使用紧凑菜单,可按快捷键 `Shift + F10` 或在“显示更多选项”中找到)* ### 🌟 方式 2:拖拽至脚本图标一键推包 * 在文件管理器中,鼠标选中 `.apk` 文件,直接**拖拽并扔到 `replace_apk.bat` 脚本图标上松开**即可启动。 ### 🌟 方式 3:双击运行并按回车(图形化弹窗选文件) 1. 双击运行 `replace_apk.bat`; 2. 看到提示时**直接敲回车**,系统会自动弹出一个原生的 Windows“打开文件”浏览窗口,鼠标点选 APK 即可。 ### 🌟 方式 4:命令行调用 在终端中执行: ```cmd replace_apk.bat "D:\path\to\your_app.apk" ``` --- ## 🔄 换电脑 / 跨设备迁移说明 换电脑后无需重新编写或手动修改注册表路径,仅需两步: 1. **整体拷贝**:将整个 `push_apk` 文件夹复制到新电脑的任意位置; 2. **一键激活**:在新电脑上双击运行 **`一键配置右键菜单.bat`**: * 脚本会自动识别新电脑的存放路径并重新绑定右键菜单; * 自动检测新电脑是否具备 `adb` / `aapt` 环境; * 免管理员权限,1 秒内完成配置。 --- ## 🛠️ 环境依赖要求 新电脑运行前请确保配置好以下两项 Android SDK 官方工具: 1. **`adb`**:来自 Android SDK `platform-tools`(需加入系统环境变量 PATH); 2. **`aapt` 或 `aapt2`**:来自 Android SDK `build-tools`(加入系统 PATH 或配置 `ANDROID_HOME` / `ANDROID_SDK_ROOT` 环境变量即可)。