问题描述
在Android设备上使用 pm uninstall -k –user 0
命令禁用了某些应用后,想要生成一个这些特定应用(或所谓的”bloatware”)被卸载的列表。直接从 /system/app
目录中列出文件名,并查找哪些是禁用的以及它们的包名会相当繁琐。虽然 pm list -d
选项可以在设备内未开启的情况下显示已禁用的应用,但它仅适用于通过系统菜单取消启用的应用。
解决方案
方案1
注意:本操作可能因设备版本差异而有所不同,请在执行前确认系统版本及备份重要数据。
使用ADB命令可以通过pm list packages -u
列出所有”被卸载”的包。此命令适用于非root且运行Android 6.0.1的设备。
步骤如下:
- 打开终端或命令提示符;
- 输入以下命令并按下回车键:
bash
adb shell pm list packages -u - 将输出结果保存为一个文件以便以后查看和分析。
- 为了确保准确,可以将
pm list packages
的输出与带-u
选项的输出进行比较。运行如下命令以获取差异:
bash
diff <(adb shell pm list packages) <(adb shell pm list packages -u)
这个差异将显示出未通过UI卸载的应用,帮助你识别被禁用而非手动移除的应用。
方案2
该方法可能增加复杂度,并且需要确认设备上的应用是否正确标记为”uninstalled”状态。
若在执行pm list packages -u
后仍存在疑问或差异情况不明显,可以尝试通过自定义shell脚本来更加精确地查找特定包。
步骤如下:
编写一个简单的bash脚本用于自动化此过程。例如,在终端中输入以下内容并根据需要修改变量:
“`bash
#!/bin/bashdisabled_packages=$(adb shell pm list packages -u)
installed_packages=$(adb shell pm list packages)for package in $disabled_packages; do
if [[ ! “$installed_packages” =~ ${package} ]]; then
echo “Unlisted Package Found: $package”
fi
done
“`保存并给脚本文件执行权限:
bash
chmod +x list_uninstalled_packages.sh- 随后运行该shell脚本以检查哪些包未在列表中出现。
注意事项
- 以上方法有效但依赖于设备版本的支持情况,建议提前查看是否需要适配。
- 对比操作有助于确认具体哪些包被“禁用”而非实际卸载。