通过adb shell pm删除域包

时间:2013-03-17 08:28:48

标签: 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.*
你的建议是什么?

3 个答案:

答案 0 :(得分:4)

您可以在批处理文件中使用以下内容:(我假设是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,在这种情况下是包名称。

答案 1 :(得分:1)

如果你自己坐在手机壳上,你可以这样做(如果你愿意,可以在一条线上):

for i in $(pm list packages com.your.domain ) ; do
    pm uninstall ${i#*:} ;
done

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

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

答案 2 :(得分:0)

对于mac用户:

mongoose's setPassword function