首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过adb shell pm删除域名的包

通过adb shell pm删除域名的包
EN

Stack Overflow用户
提问于 2013-03-17 16:28:48
回答 3查看 5.3K关注 0票数 3

有一个命令可以减轻管理Android手机软件包的痛苦,

代码语言:javascript
运行
复制
adb shell pm uninstall org.kde.necessitas.example.one
adb shell pm uninstall org.kde.necessitas.example.two

但我有许多电话,只是想删除他们上的特定域名的所有包。

这是不可能的

代码语言:javascript
运行
复制
adb shell pm uninstall org.kde.necessitas.example.*

你有什么建议吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-03-17 16:37:56

您可以在批处理文件中使用以下内容:(我假设是Windows )

代码语言:javascript
运行
复制
  adb shell pm list packages org.kde.necessitas.example > packages.txt

  for /F "tokens=2 delims=:" %%a in (packages.txt) do adb shell pm uninstall %%a

您可以更进一步,将搜索文本设置为参数:

代码语言:javascript
运行
复制
  adb shell pm list packages %1 > packages.txt

  for /F "tokens=2 delims=:" %%a in (packages.txt) do adb shell pm uninstall %%a

这会将pm list packages命令的输出通过管道传输到文本文件中,然后遍历文本文件的每一行。它为该行中的每个第二个令牌调用adb shell pm uninstall,在本例中是包名。

票数 4
EN

Stack Overflow用户

发布于 2013-09-25 16:50:30

如果你坐在手机的外壳里,你可以这样做(如果你愿意,全部在一条线路上):

代码语言:javascript
运行
复制
for i in $(pm list packages com.your.domain ) ; do
    pm uninstall ${i#*:} ;
done

如果你在主机上,你正在使用Unixy - Linux,Mac,Cygwin -那么类似的东西也可以在那里工作,但是你需要把'adb shell‘塞进去:

代码语言:javascript
运行
复制
for i in $(adb shell pm list packages com.your.domain ) ; do
    adb uninstall ${i#*:} ;
done

由于您正在讨论从所有连接的电话中删除软件包,因此您还需要另一个循环:

代码语言:javascript
运行
复制
for d in $(adb devices | sed '/List/d; /\*/d; s/device$//') ; do
    for i in $(adb -s $d shell pm list packages com.your.domain ) ; do
        adb -s $d uninstall ${i#*:} ;
    done
done
票数 1
EN

Stack Overflow用户

发布于 2017-07-07 23:03:59

对于mac用户:

代码语言:javascript
运行
复制
adb shell pm list packages com.your.domain \
| cut -d ':' -f 2 \
| tr -d '\r' \
| xargs -L1 -t adb uninstall
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15458909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档