Android 无需 root 卸载系统应用

卸载应用的命令

adb shell pm uninstall [-k] [--user USER_ID] 包名

-k : 卸载应用但保留数据和缓存
--user 指定用户 id : Android 系统支持多个用户,默认系统用户只有一个,id=0。

卸载系统应用(例:系统自带的计算器)

  • 不指定用户ID

当我们不设置用户ID的时候,卸载系统应用是不成功的。

adb shell pm uninstall com.android.calculator2

返回:

Failure [DELETE_FAILED_INTERNAL_ERROR]
  • 指定用户ID

当我们设置了用户ID为系统用户即id=0时,可以成功的卸载系统应用。

adb shell pm uninstall --user 0 com.android.calculator2

返回:

Success

所以,当我们想卸载系统应用时,我们只需要指定其id=0即可。

那对于那些不知道其包名的应用怎么办?

通过下面的方法获取包名即可。

查看APP的包名

打开APP,然后再输入如下命令:

  • Linux系统

adb shell dumpsys window | grep mCurrentFocus

  • Windows系统

adb shell dumpsys window | findstr mCurrentFocus

结果:

  mCurrentFocus=Window{d7e79b8 u0 com.android.calculator2/com.android.calculator
2.Calculator}

通过这个命令我们就可以获取当前应用的包名和Activity名了。

恢复出厂设置

当我们不小心把系统核心应用给卸载了怎么办?那就只能恢复出厂设置来解决了。如果有幸,你的设备Launcher应用可以正常使用,那就打开系统设置,然后去恢复出厂设置即可。如果无法操作系统设置怎么办?那就使用adb命令的方法来实现。以前有一种发广播的方式adb shell am broadcast -a android.intent.action.MASTER_CLEAR,但现在好像实现不了。来看看用adb的方式:

adb root
adb shell "echo \"--wipe_data\" > /cache/recovery/command"
adb reboot recovery

总结

我们想要卸载应用(包括系统应用)只需要分两步:

第一步:获取应用的包名(当前打开的应用)

Windows 系统:
adb shell dumpsys window | findstr mCurrentFocus
或者 Linux 系统:
adb shell dumpsys window | grep mCurrentFocus

第二步:使用卸载命令

adb shell pm uninstall --user 0 包名

你可能感兴趣的:(android之路)