如何将APP预置为系统应用

这篇博客详细介绍了如何将一个APP预置为系统应用,包括检查Root权限,将APK拷贝到system/app目录并赋予777权限,以及获取系统签名权限的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如何将APP预置为系统应用

1.首先判断系统是否具有Root权限

cmd下执行如下内容:

adb root
结果:
adbd is already running as root //具有Root权限
adbd cannot run as root in production builds //没有root权限

2.将apk拷贝到 system/app目录下,并执行777命令

(1)remount

一般情况下system/app都是read only,所以需要adb remount (这是一个重新mount你的分区的命令,让system分区从只读变成可读可写,获得了root权限才可运行)
继续执行如下命令

adb remount
结果:remount successfully

(2)拷贝

进入shell后,如果是当前的user用户,则需进入超级用户。

执行下边操作前我已经将APNSetting.apk(需要预置为系统应用的app)放入到sd卡中。

adb shell
su // 切换到 root 用户。如果没有获得 Root 权限,这一步不会成功。
mount //显示当前mount情况
mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system // 让分区可写。
cat /sdcard/APNSetting.apk > /system/app/APNSetting.apk //拷贝system/app目录下
chmod 777 /system

<think>我们正在讨论如何通过ADB删除Android预置系统应用。根据用户提供的信息,预置应用分为三种类型:不可卸载、可卸载可恢复、可卸载不恢复。我们的目标是使用ADB命令来卸载这些应用,但需要注意:-不可卸载的应用(如核心系统应用Phone,Message等)通常无法通过常规ADB卸载,因为这可能导致系统不稳定。-可卸载可恢复的应用:用户可卸载,但恢复出厂设置后会重新出现。这类应用通常预装在系统分区(如/system/app,/system/priv-app等),但允许卸载。-可卸载不恢复的应用:预装在data分区,恢复出厂设置会被清除。根据引用[2],我们可以通过ADB命令卸载预装应用,但需要知道应用的包名。之前我们已经介绍了如何获取包名(通过`adbshellpmlistpackages`等命令)。现在,我们将重点放在卸载上。重要提示:卸载系统应用需要谨慎,因为可能导致系统不稳定。建议只卸载你明确知道可以卸载的应用(如一些第三方预装应用)。步骤:1.获取预装应用的包名(特别是第三方预装应用):-使用命令:`adbshellpmlistpackages`列出所有包名。-为了区分系统应用和第三方应用,可以使用:-系统应用:`adbshellpmlistpackages-s`-第三方应用:`adbshellpmlistpackages-3`-但是,预装的第三方应用可能不会被`-3`列出,因为它们可能被标记为系统应用。我们可以通过查看安装位置来区分:-安装在系统分区的应用:`adbshellpmlistpackages-s|whilereadline;doecho${line:8};adbshellpmpath${line:8};done`-这个命令会列出每个系统应用的安装路径(如package:com.example.app和它的apk路径)。2.确定要卸载的应用的包名。例如,假设我们要卸载一个名为“垃圾应用”的预装应用,包名为`com.example.junk`。3.卸载应用:-对于安装在data分区的应用(可卸载不恢复),可以直接使用`adbuninstall`命令:```adbuninstallcom.example.junk```-对于安装在系统分区的应用(可卸载可恢复),我们需要使用`adbshellpmuninstall`命令,但注意:在非root设备上,我们无法直接删除系统分区的apk文件,但我们可以通过禁用应用或卸载用户更新后的版本(如果有)来达到类似卸载的效果,或者使用以下命令来卸载用户权限下的应用(实际上只是卸载更新并禁用):```adbshellpmuninstall-k--user0com.example.junk```解释:-`--user0`表示用户0(即主用户),这是Android的多用户支持。-`-k`表示保留数据和缓存目录(通常我们不需要保留,所以可以不加)。**注意**:这个命令实际上并不会从系统分区中删除应用,而是从当前用户(user0)中卸载该应用,相当于禁用。这样应用就不会出现在启动器中,也不会运行。恢复出厂设置后,由于系统分区还在,所以会重新启用。但如果你只想在当前禁用,这个命令非常有效。4.对于不可卸载的应用(核心应用),上述命令可能无效。如果你有root权限,可以尝试挂载系统分区为可写,然后手动删除apk文件。但非root设备无法做到。因此,对于没有root权限的设备,我们主要使用`adbshellpmuninstall--user0<package-name>`来禁用预装应用系统应用)。总结步骤:1.连接设备并开启USB调试:`adbdevices`确认设备已连接。2.获取包名:使用`adbshellpmlistpackages`结合其他参数找到目标包名。3.卸载/禁用:-对于用户应用(安装在data分区):`adbuninstall<package-name>`-对于系统应用(安装在系统分区):`adbshellpmuninstall--user0<package-name>`示例:卸载华为手机预置的某个第三方应用(比如抖音国际版TikTok,包名为`com.zhiliaoapp.musically`):```adbshellpmuninstall--user0com.zhiliaoapp.musically```注意事项:-此操作不可逆,除非恢复出厂设置或重新安装。-错误的包名可能导致卸载失败,请仔细核对。-卸载系统核心应用可能导致系统不稳定,请确保你知道该应用的作用。引用说明:-引用[2]提到预装应用的三种类型,并说明非root权限下不可卸载的核心应用不能卸载,但可卸载可恢复的应用可以通过上述方法禁用(卸载用户关联)。[^2]相关问题:-如何恢复通过ADB禁用的预装应用?-如何通过ADB重新启用被禁用的应用?-如何判断一个预装应用是安装在系统分区还是data分区?-没有root权限如何彻底删除预装应用?-使用ADB卸载预装应用有哪些风险?</think>### 如何通过 ADB 删除 Android 预置系统应用 根据引用[2],Android 预置应用分为三类: 1. **不可卸载**:核心系统应用(如 Phone、Message),无 root 权限无法删除 2. **可卸载可恢复**:第三方预装应用(如厂商预置 App),用户可卸载但恢复出厂后会还原 3. **可卸载不恢复**:存放在 `/data` 分区的测试工具,恢复出厂后自动清除 以下是 **免 root 环境**下通过 ADB 删除预置应用的步骤: --- #### 步骤 1:获取预置应用包名 ```bash # 列出所有系统预装应用 adb shell pm list packages -s # 列出禁用/冻结的应用(含预装) adb shell pm list packages -d ``` 输出示例: ``` package:com.huawei.android.launcher # 华为桌面 package:com.miui.weather2 # 小米天气 ``` > **技巧**:结合 `grep` 过滤厂商标识(如 `huawei`, `xiaomi`, `samsung`) --- #### 步骤 2:卸载预置应用 ```bash # 对可卸载应用执行卸载(保留数据) adb shell pm uninstall -k --user 0 <package_name> # 完全卸载(删除数据) adb shell pm uninstall --user 0 <package_name> ``` **关键参数说明**: - `--user 0`:操作主用户空间(Android 多用户机制) - `-k`:保留应用数据和缓存(不加则彻底删除) **示例**(卸载华为预置游戏中心): ```bash adb shell pm uninstall --user 0 com.huawei.gamebox ``` > **注意**:此操作不会物理删除系统分区文件,恢复出厂设置后应用可能回归[^2]。 --- #### 步骤 3:禁用核心系统应用(替代删除) ```bash # 禁用应用(隐藏且无法运行) adb shell pm disable-user --user 0 <package_name> # 重新启用应用 adb shell pm enable <package_name> ``` **适用场景**: - 不可卸载的核心应用(如厂商浏览器、应用商店) - 需要临时停用服务(如系统更新) **示例**(禁用小米广告服务): ```bash adb shell pm disable-user --user 0 com.miui.systemAdSolution ``` --- #### 注意事项 1. **风险控制**: - 先通过 `adb shell pm path <package_name>` 确认应用路径 - 系统关键应用(如 `com.android.phone`)禁用可能导致崩溃 2. **效果验证**: ```bash # 检查应用是否仍存在 adb shell pm list packages | grep <package_name> # 检查应用状态 adb shell pm dump <package_name> | grep "enabled" ``` 3. **恢复方法**: - 启用应用:`adb shell pm enable <package_name>` - 重置设备:恢复出厂设置 > **重要**:操作前备份数据,错误卸载系统组件可能导致启动失败[^2]。 --- ### 相关问题 1. 如何通过 ADB 恢复被卸载的预置应用? 2. 哪些 Android 系统核心应用绝对不能卸载? 3. 免 root 环境下如何彻底删除 `/system` 分区的预装应用? 4. ADB 卸载应用和手机自带卸载功能有何区别? 5. 如何批量卸载多个预置应用? [^1]: Android 系统权限和应用存储路径相关说明,涉及系统分区保护机制[^1]。 [^2]: ADB 卸载预装应用的分类和限制,解释可恢复/不可恢复应用的差异[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值