有一个命令可以减轻管理 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.*
你的建议是什么?
有一个命令可以减轻管理 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——那么类似的东西也可以在那里工作,但你需要将“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
对于 mac 用户:
adb shell pm list packages com.your.domain \
| cut -d ':' -f 2 \
| tr -d '\r' \
| xargs -L1 -t adb uninstall