问题描述
想要了解 Android 应用程序的存储位置。例如,如果安装了一个包名为 xx.yyy
的程序,那么会在 /data/app
目录下看到 xx.yyy-1.apk
,在 /data/data
下看到 xx.yyy
,在 /data/dalvik-cache
下看到 data@app@xx@yyy-1apk@classes.dex
。用户想要了解其他程序可能存储的地方,并且希望能够手动移除程序时知道程序可能占据的位置,以及每个文件的作用是什么,比如 /data/dalvik-cache
中的 data@app@xx@yyy-1apk@classes.dex
文件的作用是什么。
解决方案
请注意以下操作可能涉及系统核心部分,谨慎操作并做好备份。
存储位置
Android 应用程序可能存储在以下位置:
- /data/app-private: 这是第三方受保护应用程序的另一个位置。
- /system/app: ROM 预装的系统应用程序存储在只读的此目录下。
- /data/dalvik-cache: 包含每个已安装应用程序的优化字节码,可以让系统更快地启动应用程序。这些
...@classes.dex
文件在安装/更新时或首次启动时为预装的应用程序生成。
另外,从 Android 2.2 开始,Google 引入了将应用程序移动到 SD 卡的功能。当您执行此操作时,会在 /dev/block/dm-X
下创建一个新的虚拟挂载点(其中 “X” 是从 1 开始的顺序号),该挂载点指向 /mnt/asec/xx.yy-1
。
- /data/data/: 此目录包含所有应用程序的设置、偏好和缓存,每个应用程序都在以其包名命名的文件夹中,例如
/data/data/xx.yyy/
。
文件作用
在 /data/dalvik-cache
中,data@app@xx@yyy-1apk@classes.dex
文件的作用是存储相应应用程序的优化字节码,以便系统能够更快地启动该应用程序。
另外,应用程序可以在 SD 卡上创建任何文件/文件夹,因此除了上述位置外,用户可能还需要手动检查和删除 SD 卡上的文件。
示例
以下是一个简单的 bash 脚本示例,可以用于手动移除应用程序:
#!/bin/bash
# 停止应用程序(如果正在运行)
adb shell am force-stop xx.yyy
# 移除应用程序
adb uninstall xx.yyy
# 清除应用程序数据和缓存
adb shell pm clear xx.yyy
在这个示例中,我们使用了 adb
工具来强制停止应用程序、移除应用程序以及清除应用程序数据和缓存。
以上是关于 Android 应用程序存储位置的解决方案,希望对您有所帮助!