由亚行外壳下午
问题描述:
有个命令,以减轻管理软件包用于Android手机的疼痛,由亚行外壳下午
adb shell pm uninstall org.kde.necessitas.example.one
adb shell pm uninstall org.kde.necessitas.example.two
删除域的软件包,但我有很多的手机,只是想从一个特定域删除所有包装他们。
它不能被
adb shell pm uninstall org.kde.necessitas.example.*
你有什么建议呢?
答
您可以使用批处理文件如下:(我假设的Windows虽然)
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
你可以把它更进一步,使搜索文本参数:
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
,在这种情况下是包名。如果你的主机上,你
for i in $(pm list packages com.your.domain) ; do
pm uninstall $(i#*:} ;
done
”:
答
如果你在手机本身的壳坐着,你可以做到这一点(全部在一行,如果你想)重新使用的东西Unixy - 在Linux,Mac,Cygwin的 - 那么类似的东西会在那里工作过,但你需要在推“亚行壳”:
for i in $(adb shell pm list packages com.your.domain) ; do
adb uninstall $(i#*:} ;
done
既然你在谈论的所有连接的手机取出包,您还需要另一个循环:
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
答
对于Mac用户:
adb shell pm list packages com.your.domain \
| cut -d ':' -f 2 \
| tr -d '\r' \
| xargs -L1 -t adb uninstall
+0
只是使用@ android.weasel的答案中的第一个选项。它是独立于平台的(整个命令在'adb shell' )。 – 2017-07-08 21:25:16
其实,这是一种有效的方法, 但我不知道是否有一个更简单/更好的方法。 – Saeed 2013-03-17 11:58:54
不需要使用'find' - 只要执行'pm list packages org.kde.necessitas.example'。 'pm list'命令也会以'package:com.example.package.name'的格式打印出软件包名称 - 在使用之前需要先移除'package:'部分 – 2013-03-17 18:20:29
@AlexP。谢谢亚历克斯,我编辑过。关于不需要查找的好处。 – Simon 2013-03-17 18:51:02