Android——4.2.2 文件系统文件夹分析
近期公司要整android内部培训,分配给我写个培训文档。这里记录例如以下:
撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/40897703
导读:
这里补充下android执行时的文件系统结构,
相同。资料网上有非常多,仅仅是简介我常涉及到的,个人观点。仅供參考~
各个厂商平台可能会有出入.这里单以我这边mstar的平台
以“/”代表文件系统的根文件夹.
——jscese
2014/11/7
文件系统生成
眼下android编译出来的镜像基本都是ext4格式,可用file命令查看,不再是之前的yaffs2,由于之前用的是nand,如今的主流已是emmc,可是在制作android文件系统时挂载的类型就五花八门了,各种都有.
可在系统启动时/system/core/init/init.c中的main中查看mount类型.
对文件系统的创建语句基本都写在/system/core/rootdir/init.rc,这个文件语法可參考/system/core/init/readme.txt。交由init.c负责解析运行.当中init.rc还会载入平台rc运行一些自己的操作:import/init.${ro.hardware}.rc一般的.rc都放在“/”文件夹下.
关于init.rc中的语句怎么被运行。这里不多描写叙述。可另行參考init机制,能够看到里面非常多对分区以及文件的shell命令,比方mount,mkdir,symlink。chmod...
mount上去的文件类型大体有这几种:
tmpfs devpts proc sysfsrootfs
yaffs2 cgroup ext4 debugfs
这些文件系统类型可去维基百科查,每一种都有自己的特性.可在shell终端输入mount查看挂载情况.
我们通过shell终端看到的文件系统文件夹是终于制作完毕的产物,有的文件文件夹下是挂载的分区,假设改动就是实际改动的nand/emmc上面的内容,有的可能仅仅是制作过程中从分区某个地方copy放在那个文件夹下的。你删除了。下次重新启动依然还会存在。这个就要依据详细情况而推断了.
这个的生成过程还是非常繁杂的,这里就不一一述说.以下介绍下经常使用到的文件夹文件.
具体可參考:Android——启动过程具体解释
/cache
缓冲区文件夹,用于存放暂时文件,眼下我这边用到的地方就是存放从网络下载OTA包用于更新.
/data
顾名思义,主要用于存放数据的地方,往下的文件夹都是存放app的相关分类数据.
当中/data/app文件夹下存放的就是用户安装的apk文件.
/data/data文件夹下存放的是系统中全部app的数据文件,以apk包名区分,当中会有提交的数据库以及xml数据文件.
/dev
linux设备文件夹,存放设备节点文件。挂载的是tmpfs格式文件系统,断电后数据将会消失.android系统上的设备都会在这个文件夹底下创建设备文件,
秉承linux的理念:一切设备皆文件.而且都是能够通过文件对设备进行操控管理.
当中/dev/block下列出全部emmc存储设备的全部block
/etc
软连接指向/system/etc。这个文件夹一般用于存放系统中的各种配置文件。没什么好说的.
/mnt
外部挂载点文件夹。作为外部存储设备的挂载点路径,往下的分支经常使用的包含/mnt/sdcard为android默认SD卡挂载点.其他的不同平台可能会有大的差异。比方挂载usb设备的挂载点,我这边挂载在/mnt/usb
/proc
一个虚拟的文件系统,由kernel提供。不是实际的存储空间,存在kenel管理的内存中,应用层可通过/proc下的文件动态获取kernel中系统进程(process)的执行信息.也可通过/proc/sys文件夹下可写文件改动kernel执行状态。实现与kernel的交互.
在init.c中挂载到/proc文件上.
当中比較经常使用的获取文件:/proc/cpuinfo/proc/meminfo
/proc/mounts /proc/version ...
顾名思义.能够在shell使用cat*查看
设置/proc/sys/kernel状态值。init.rc中就有设置。能够參考。大部分设置在/proc/sys/kernel下
shell下可使用echo*
> * 重定向设置状态值.
/sbin
存放root用户可运行文件的文件夹。一般存在这以下的就是adbd
/sdcard
软连接上面说到的/mnt/sdcard,SD卡的挂载点
/sys
类似/proc。也是虚拟的文件系统.
差别在于这个文件系统提供的是关乎kernel中的设备驱动.
/sys/devices下就是已经注冊到总线上的全部物理设备.
/sys/dev以下是blockchar设备的节点文件,链接到真实设备.
/sys/module这里能够看已经insmod的kerneldevice
driver
同/proc下一样可使用cat查看
/sys/kernel下的是可写的设备值。同/proc一样操作写入控制.
/system
这个是android系统最关键的文件文件夹了,能够在rc中看到挂载的是system分区,也就是源代码编译出来的system.img镜像,基本的执行机制也就全在这个文件夹下了,默认是挂载成ext4仅仅读.
/system/app系统预置的apk存放路径,仅仅有root才有写权限
/sysem/bin这个以下所有是android系统可运行文件
/system/build.prop编译过程中收集的各种属性
/system/etc上面有提到。配置文件
/system/fonts字库
/system/framework以下全是jar包也就是源代码中frameworks编译出来的系统框架,核心所在
/system/lib存放差点儿全部编译出来的动态库(.so)
/system/vendor存放一些厂商的东西一般有applib之类的
这几个应该算是最重要的,其他的文件夹不一一列出.
假设想要改动/system以下的内容,可在shell终端输入:mount-o
remount rw /system
重挂载为可读写.
/tmp
暂时文件
Android——4.2.2 文件系统文件夹分析的更多相关文章
- Android.mk文件简单分析
Android.mk文件简单分析 一个Android.mk文件用来向编译系统描写叙述须要编译的源码.详细来说:该文件是GNUMakefile的一小部分.会被编译系统解析一次或多次. 能够在每个Andr ...
- 【Android】图片(文件)上传的请求分析结构
怎么在android中上传文件,即怎么用Java向服务器上传文件.上传图片,这是个老问题了,在网上能搜到现成的代码,很多朋友用起来也比较熟了,但是为什么这么写,可能很多朋友并不清楚,这篇文章就来分析一 ...
- Android内存管理(12)*「实例」用Monitor 生成.hprof文件 并分析内存泄漏
参考 http://blog.csdn.net/xiaanming/article/details/42396507 基本步骤: 1,准备一个有内存泄漏的代码 2,如何发现内存泄漏 3,生成.hpro ...
- Android学习2--项目文件列表简单分析
使用Eclipse创建的默认项目文件列表如下: src:src目录是Android工程的源程序目录,该目录用于存放Java项目的源代码 gen:gen目录存放所有自动生成的文件,在这个目录中最关键的文 ...
- android 常见死机问题--log分析
http://blog.csdn.net/fangchongbory/article/details/7645815 android 常见死机问题--log分析============ ...
- 转——Android应用开发性能优化完全分析
[工匠若水 http://blog.csdn.net/yanbober 转载请注明出处.] 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉 ...
- Android 4.4 音量调节流程分析(二)
之前在Android 4.4 音量调节流程分析(一)里已经有简单的分析音量控制的流程,今天想接着继续分析下音量大小计算的方法.对于任一播放文件而言其本身都有着固定大小的音量Volume_Max,而在A ...
- Android 应用开发性能优化完全分析
1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关于性能的建议,感觉大家你一总结.我一总结的都说到了很多优化注意事项,但是看过这些文章后大多数存在一个问题就是只 ...
- 【转】Android应用开发性能优化完全分析
http://blog.csdn.net/yanbober/article/details/48394201 1 背景 其实有点不想写这篇文章的,但是又想写,有些矛盾.不想写的原因是随便上网一搜一堆关 ...
随机推荐
- CSS3新增的属性有哪些:
CSS 用于控制网页的样式和布局. CSS3 是最新的 CSS 标准. CSS3新增了很多的属性,下面一起来分析一下新增的一些属性: 1.CSS3边框: border-radius:CSS3圆角边框. ...
- sed 替换 引用变量值,记录一个自己学习错误的地方。
先上脚本,脚本的目的是虚拟机克隆-连接克隆,然后修改ip这个搞定,修改hostname就很简单了 declare oldipdeclare -i Anamedeclare newipoldip=`ca ...
- pytorch 2 variable 变量
import torch from torch.autograd import Variable tensor = torch.FloatTensor([[1, 2], [3, 4]]) variab ...
- 【codeforces 67A】Partial Teacher
[题目链接]:http://codeforces.com/problemset/problem/67/A [题意] 给一个长度为n-1的字符串; 每个字符串是'L','R','='这3种字符中的一个; ...
- Android 开发者不得不面对的六个问题
一份关于移动应用开发的调查报告显示,Androdid开发者对谷歌的移动操作系统平台的兴趣正在下降.尽管依然有79%的开发者表示对Android “非常感兴趣”,但调查报告显示,一些迹象表明在2012到 ...
- JVM分代通俗解释
JVM分代通俗解释 学习了:https://www.cnblogs.com/zgghb/p/6428395.html
- Unity渲染
我们先大概了解一下对渲染的优先级有影响的几个因素 1.Camera.Depth 不同相机的深度,在渲染顺序的优先度里面是最高的,Depth越大,渲染的图像越靠前 2.Render.SortingOrd ...
- Android中的AsyncTask异步任务的简单实例
在 Android中的AsyncTask异步任务的简介 一文中.已经对 安卓 异步任务操作做了简单的介绍.这里,直接将上文中的异步任务做了一个实例.实现异步操作更新UI线程,相比开启子线程更新来说逻辑 ...
- 6、Java类、对象、构造器、引用类型内存基本知识、引用类型值传递
1.面向对象三大特征: 封装:encapsulation 继承:inheritance 多态:polymorphism 2.类中 数据特征(property):属性(attribute)静态的stat ...
- QT跟VC++结合来进行插件的验证机制(遍历vtable,保证虚函数的个数一致,也可使用Q_INVOKABLE宏定义)
由于最近公司要开发一个以C++插件机制为主的,主要有一个问题就是C++的二进制兼容性的问题.一旦类使用虚函数,只要随便改动下增删查改下头文件的虚函数,就会导致程序在跑的时候进行乱跳,因为这个时候exe ...