Android分区
在Android目录下,总是能够看到system,data等文件夹,这里简单对Android分区的概念进行简单的整理。在PMS进行初始化的时候,在扫描阶段会去创建分区的子目录,例如: /system/framework、/system/priv-app和/system/app。
首先来简单了解下System分区的部分子目录及其含义。
目录 | 含义 |
---|---|
app | 存放系统App,包括Google内置的App,也有厂商或运营商提供的App |
framework | 存放应用框架层的jar包 |
priv-app | 存放特权App |
lib | 存放so文件 |
fonts | 存放系统字体文件 |
media | 存放系统的各种声音,比如铃声、提示音以及系统启动播放的动画 |
上面是比较官方的说明,但我的理解,对于app的子目录,我认为可以用系统应用来进行描述,这个路径下App的最突出的表现是App是无法直接卸载的,如果我们手动uninstall该应用的包名,那么就会报卸载失败的错误。我们能看到的就是停用系统App。如果我们有足够的权限,其实我们也可以让一个普通的apk变成为一个系统App。简单的做法就是将我们自己的Apk推到/system/app
路径下,重启下设备就能够让我们的这个Apk变成一个系统App。重启就涉及到了应用安装,后面会继续进行整理。另外priv-app
子目录和app
子目录相比,就是多了个权限,也就是说这个路径下的apk需要对应的权限配置,当然不用加也是可以的。一般在将该路径下的apk编入系统时,可以在配置文件中添加上对应的权限文件。
system分区简单了解完了,再来了解下 data分区。
目录 | 含义 |
---|---|
app | 存储用户自己安装的App |
data | 存储所有已安装的App数据,每个App都有自己单独的子目录 |
app-private | App的私有存储空间 |
app-lib | 存储所有App的Jni库 |
system | 存储系统配置文件 |
anr | 用于存储ANR发生时系统生成的traces.txt文件 |
对于应用的数据来说,数据信息都是存储在/data/data路径下,不论是用户自己安装的还是系统应用,都是通过包名来进行区分。说到按照包名区分,如果一个App修改了包名,再去安装,就相当于是有了两个不同包名,相同功能的app。所以如果修改包名,并且不要受旧包名的影响,需要将旧的Apk卸载,同时要将其缓存文件删除也就是在data/data
路径下找到对应的文件,并且将其删除。