Android 由adb shell pm删除域的包
有一个命令可以减轻管理Android手机软件包的痛苦Android 由adb shell pm删除域的包,android,adb,packagemaker,Android,Adb,Packagemaker,有一个命令可以减轻管理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.* 您的建议是什么?您可以在批处理文件中使用以下内容:(我
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 %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
,每一行中的第二个令牌(在本例中为软件包名称)。如果您坐在手机本身的外壳中,您可以执行此操作(如果需要,全部在一行上):
如果您在主机上使用的是Unixy—Linux、Mac、Cygwin—那么类似的东西也可以在主机上使用,但您需要加入“adb外壳”:
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
这实际上是一种有效的方法,但我想知道是否有一种更简单/更好的方法。无需使用
find
-只需执行pm list packages org.kde.incidentias.example
。另外,pm list
命令以package:com.example.package.name
格式打印包名-使用前需要删除package:
部分it@AlexP. 谢谢亚历克斯,我已经编辑过了。关于不需要查找的优点。为什么我们必须将列表保存到文件中?为什么我们不能把清单列出来?我已经厌倦了adb shell pm列表包com.ubaier.test | cut-d':'-f2 | xargs-L1 adb卸载。。但是它不起作用:(…我只是想了解为什么?只需使用@android.weasel答案中的第一个选项。它是独立于平台的(整个命令在adb shell
中运行)。这个答案对我有帮助,尽管我必须首先通过将$(I#*:}
实例更改为${I#*:}来纠正参数扩展中的括号
()由于某些原因,这在带有Android棒棒糖的设备上不起作用(如三星Note 3)。您可能知道的任何解决方法?该错误只会显示为失败[DELETE_FAILED_INTERNAL_error]。
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
adb shell pm list packages com.your.domain \
| cut -d ':' -f 2 \
| tr -d '\r' \
| xargs -L1 -t adb uninstall