Android应用程序相关目录

参考链接:http://www.2cto.com/kf/201405/299974.html


一个最一般的apk包(不是系统app,没有共享lib,不是装在sd上或是forward-lock的app)装完后内容会体现在这么几个目录:

/data/app // apk包

/data/app-lib// native lib

/data/data //数据目录,其中的lib目录指向上面的/data/app-lib目录

/data/dalvik-cache/data@[email protected]@classes.dex //优化或编译后的Java bytecode


Android启动时会把已有的app安装一遍,过程主要分三部分:读取安装信息,扫描安装,写回安装信息。读取和写回主要是针对于一坨安装信息文件。这些信息保证了启动后app与上一次的一致。关键步是扫描指定目录下的apk并安装。Android中apk主要分布在以下几个目录,意味着启动时要扫描的主要也是这几个目录:

系统核心应用:/system/priv-app

系统app:/system/app

非系统app:/data/app(安装于手机存储的一般app)或/mnt/asec//pkg.apk(sdcard或forward-locked)

受DRM保护app:/data/app-private

vendor-specific的app: /vendor/app

资源型app:/system/framework


现有app的安装信息放在/data/system/packages.xml里,由Settings管理。另外/data/system/packages.list记录了app的uid和数据路径以及permissions等信息。readLPw()就是用于恢复这些信息,实现位于/frameworks/base/services/java/com/android/server/pm/Settings.java。readLPw()先打开packages.xml,再通过XmlPullParser类来解析其内容。它会根据不同的tag调用相应的函数来读取信息。

你可能感兴趣的:(Android应用程序相关目录)