【问题标题】:How can I use adb to uninstall all 3rd party user apps?如何使用 adb 卸载所有 3rd 方用户应用程序?
【发布时间】:2013-08-17 02:46:54
【问题描述】:

我正在尝试创建一个脚本,该脚本将通过adb 在一个批处理操作中检索和卸载所有用户应用程序。有谁知道我将如何做到这一点?

我目前可以通过

列出所有第 3 方应用程序
adb shell pm list packages -3

我能否以某种方式将生成的软件包列表引导到 adb 中的卸载命令中?

【问题讨论】:

标签: android adb xargs


【解决方案1】:

似乎是什么问题?可以用这个单线来完成:

adb shell "pm list packages -3 | cut -c9- | xargs pm uninstall"

【讨论】:

  • 我正在测试的手机没有root,没有root有什么办法吗?
【解决方案2】:

试试:

adb shell pm list packages -3 |剪切-d':' -f2 | tr '\r' ' ' | xargs -r -n1 -t adb 卸载
  • 第一部分是获取 3rd 方应用包名称
  • 第二部分是使用分隔符:分割包名
  • 第三部分是用空格替换回车(有时在linux机器上会出现问题。尝试删除这部分并检查是否遇到它)
  • 最后一个是一个一个卸载
    • 如果没有安装第三方应用,r 选项将阻止 xargs 运行命令
    • n1 选项是一次将一个结果值作为参数传递给命令
    • t 用于打印正在执行的命令)

希望对你有帮助!!!

【讨论】:

  • 我已经执行了上面的命令。它告诉'cut' in not识别为内部或外部命令、可运行程序或批处理文件。请告诉我我在哪里失败。我的 adb 已启动并正在运行,它列出了设备序列号。
  • cut 是一个 linux 命令。您似乎在 Windows 上运行。
  • 将 adb 命令的输出写入文件并使用“for 循环”进行剪切和卸载。例如:stackoverflow.com/a/4442121/3604656
  • 但是,在我的另一台 Windows 机器上,相同的命令正在运行。这里有什么区别吗??两台 Windows 机器的配置相同。
  • Mac OS X 终端给了我:“xargs: 非法选项 -- r”。我尝试删除第 3 部分,将错误更改为:“xargs:replaces must be a number”。我相信我的 ADB 设置正确。
猜你喜欢
  • 1970-01-01
  • 2021-06-14
  • 2015-04-28
  • 2010-09-11
  • 2021-05-06
  • 2018-08-21
  • 2022-07-19
  • 1970-01-01
  • 2019-08-05
相关资源
最近更新 更多