代驾app系统开发如何推动出行服务的智能化与便捷化
2302
2022-11-22
Android 10 根文件系统和编译系统(一):根文件系统目录结构
前言
主要讲解根文件系统目录结构, 让大家在运行Android系统时, 对根目录各个目录的作用有个清晰的理解。
说明
系统:AOSP Android10.0
设备:Android模拟器
一、Android10.0 根文件系统目录结构
通过adb或者串口,进入到Android设备的根目录下, 可以看到根文件系统目录下文件如下:
dr-xr-xr-x root root 0 2021-05-11 acctdrwxr-xr-x root root 280 2021-05-11 apexlrw-r--r-- root root 11 2021-05-06 bin -> /system/binlrw-r--r-- root root 50 2021-05-06 bugreports -> /data/user_de/0/com.android.shell/files/bugreportsdrwxrwx--- system cache 4096 2021-04-28 cachelrw-r--r-- root root 19 2021-05-06 charger -> /system/bin/chargerdrwxr-xr-x root root 0 2021-05-11 configlrw-r--r-- root root 17 2021-05-06 d -> /sys/kernel/debugdrwxrwx--x system system 4096 2021-05-11 datadrwxr-xr-x root root 4096 2021-04-28 debug_ramdisklrw------- root root 23 2021-05-06 default.prop -> system/etc/prop.defaultdrwxr-xr-x root root 1400 2021-05-11 devlrw-r--r-- root root 11 2021-05-06 etc -> /system/etclrwxr-x--- root shell 16 2021-05-06 init -> /system/bin/init-rwxr-x--- root shell 1653 2021-04-28 init.environ.rc-rwxr-x--- root shell 33692 2021-04-28 init.rc-rwxr-x--- root shell 7690 2021-04-28 init.usb.configfs.rc-rwxr-x--- root shell 5649 2021-04-28 init.usb.rc-rwxr-x--- root shell 563 2021-04-28 init.zygote32.rc-rwxr-x--- root shell 959 2021-04-28 init.zygote32_64.rc-rwxr-x--- root shell 981 2021-04-28 init.zygote64_32.rcdrwx------ root root 16384 2021-05-06 lost+founddrwxr-xr-x root root 4096 2021-04-28 metadatadrwxr-xr-x root system 260 2021-05-11 mntdrwxr-xr-x root root 4096 2021-04-28 odmdrwxr-xr-x root root 4096 2021-04-28 oemdr-xr-xr-x 1 root root 0 2021-05-11 proclrw-r--r-- root root 15 2021-05-06 product -> /system/productlrw-r--r-- root root 24 2021-05-06 product_services -> /system/product_servicesdrwxr-xr-x root root 4096 2021-04-28 resdrwxr-x--- root shell 4096 2021-04-28 sbinlrw-r--r-- root root 21 2021-05-06 sdcard -> /storage/self/primarydrwxr-xr-x root root 60 2021-05-11 storagedr-xr-xr-x root root 0 2021-05-11 sysdrwxr-xr-x root root 4096 2021-05-06 system-rw-r--r-- root root 2608 2021-04-28 ueventd.rcdrwxr-xr-x root root 4096 2021-04-28 vendor
二、根文件系统目录讲解
1.顶层目录
apex | apex文件安装路径, android10引进的技术, Android Pony EXpress (APEX) , APEX和APK类似,它原来存在于只读系统分区的功能模块搞成一个个可更新升级的模块,然后可以单独升级这些模块,这样就没必要升级整个系统。其apex就是一个压缩包,后缀名叫.apex,apex中独立配置运行时的加载的java库, c库等信息。apex文件安装的时候会通过关联loop设备挂载在/apex/xxx目录下 |
acct | Android Cgroup的挂载点, Cgroup是control group的缩写。这是一个Linux内核的特性。用来对组内进程所使用的资源(如CPU、内存、磁盘输入输出等)进行限制、统计与隔离 |
charger | charger -> /system/bin/charger, 软连接, 充电模式下系统显示的图标进程。 |
config | 用于配置系统某些子模块的入口 |
d -> /sys/kernel/debug | debugfs 文件系统是用于(输出)内核级的调试信息的。驱动以及类似的子系统可以自由地把驱动的调试信息转储到这个文件系统中 |
debug_ramdisk | 用于在兼容性测试时挂载ramdisk的。 |
default.prop | 系统默认属性文件,init进程启动时会读取该文件。 |
res | 资源图片,比如存放充电时的图标。 |
sdcard | 一个符号链接,一般指向外部存储的挂载点。 |
storage | 外部SD卡所在目录。 |
cache | 在系统升级的过程中使用 /cache 分区的。系统升级包会被-到这。 |
bin | 为android系统提供各种命令, 如cp, ls, input, dumpsys等。当然还包括各种android的本地进程对应的二进制文件, 如app_process,netd等 |
dev | 设备节点存放路径,内存文件系统, 掉电消失,开机重新创建 |
proc | Procfs文件系统挂载点,记录系统信息,如cpuinfo, meminfo, filesystem, interrupt等。 |
sys | syscfs文件系统挂载点,记录驱相关信息,如class, bus, kernel等。 |
etc | 系统配置文件, 包括部分硬件。 |
data | 存放用户安装的软件以及各种数据 |
init | Andrid祖先进程,第一个用户空间进程。 |
Init.rc | Init进程的启动脚本, 里面设置了init进程启动之后还需要做什么事情。 |
mnt | 子目录中包含内部和外部存储的挂载路径,同时还是其他文件系统的挂载点。/mnt/asec 目录是一个 tmpfs 文件系统的挂载点,它是 Android 安全机制的一部分。/mnt/obb 目录是一个 tmpfs 文件系统的挂载点,它用来存储应用程序文件超出 50MB 后的扩展文件。/mnt/secure 目录是 Android 安全机制的另外一个组件。你也可以看到一个或多个 USB 设备的挂载点。 |
odm | ODM相关定制,主要包括lib, bin, jar等 |
oem | 和product类似。 |
vendor | 硬件厂商相关定制, 主要包括lib, bin, jar等。 |
product | OEM相关定制,主要包括Apps,产品sysprops等 |
system | 系统核心目录, 包含各种lib, bin, framework库。 |
uevent.rc | 设备创建或者热拔插时,设备的配置规则,如权限等。 |
2. /data目录重要的文件
anr | 应用发生无响应时,系统存放无响应的先关记录。 |
app | 用户自己安装的应用,-下来的 .apk 文件都可以在这里被找到。 |
app-lib | 应用(不论是系统应用还是用户自己安装的应用)的 JNI 库都可以在这里被找到。 |
app-private | OEM相关定制,主要包括Apps,产品sysprops等 |
dalvik-cache | 用于存放优化过的系统应用手日用户安装的应用的 classes.dex 。每个应用的 dex 文件名都是它 apk 包的存放路径,并用“@”替换掉了路径分隔符。 |
data | 各个己安装应用的数据目录。 |
misc | 供各个组件存放“各式各样的”数据和配置文件的目录。如adb存储可信的允许进行 ADB 连接的电脑的公钥,sensors用于存储传感器调试数据, sms存储短信(sms) codes 数据库, wifi用于存储 Wi-Fi 子系统的配置文件(比如:wpa_supptdcant.conf)和套接字(socket) |
property | 存放持久性属性。 |
system | 存放了大量系统配置文件,目录中含有对维护设备状态非常重要的文件,访问该目录需要 root 权限。 如packages.list用于PackageManager 列出所有安装在系统中的包(APK) |
tombstones | 用于存放由 debuggerd 生成的应用崩溃报告。。 |
user | 不同的用户会把各自的数据和应用存储/安装在 /data/user/用户号/(用户号从 0 开始顺序编号,0 ,1...)下的各个目录中,系统运行时,把 /data/data 下的对应目录做符号链接,使之指向 /data/user/用户号/ 下的对应目录,以这种方式让 Android 系统能支持“多用户”。在一个单用户系统中, /data/data 会被直接指向 /data/user/0符。 |
data | 各个己安装应用的数据目录。 |
3. /etc目录重要的文件
其实是一个软连接, 链接到了/system/etc
asound.conf | 设备 ALSA ( Advanced Linux Sound Architecture )的配置文件,它会在某些设备上被使用。 |
event-log-tags | 各个不同 Android 系统组件的日志 tag(被 android.util.EventLog 使用)。 |
gps.conf | GPS 配置文件。 |
media_codecs.xml | 列出了 Stage Fright 所支持的所有 codec(编码/译码器)。 |
permissions | 存放了多个 XML 文件,每个 XML 文件规定了个内置应用(不论是 AOSP 的还是厂商提供的〕的权限,它会被 PackageManager 使用。 |
wifi/ | WPA supplicant 适配层的配置目录,用于控制 Wi-Fi 和 Wi-Fi P2P 连接活动。 |
4. /system目录重要的文件
app | 内置app,都是apk。 |
priv-app | 内置特权app,都是apk |
etc | 系统配置文件 |
bin | 系统命令二进制目录, 包含各种命令, 如ls, cp等 |
framework | Android系统框架层的java代码二进制文件,以jar文件存在, 如framework.jar, service.jar |
lib | 32位的系统动态库 |
lib64 | 64位的系统动态库 |
xbin | 特殊命令, 如su |
fonts | 系统字体库 |
apex | 系统内置apex安装包,类似内置apk, 里面都是apex文件 |
usr | 用户配置文件, 如输入设备的kl, idc文件等 |
三、源码out目录生成根文件系统目录
Android的文件系统实际是通过源码编译出来的, 最后的文件都生成在out/target/product/产品名/目录下, 以下几个目录组合成了上面一章节中提到的完整根文件系统:
out/target/product/产品名/root | 根目录顶层目录机构, 编译系统称为TARGET_ROOT_OUT |
out/target/product/产品名/system | 系统目录,提供各种二进制程序和动态库, java框架代码二进制程序,编译系统称为TARGET_SYSTEM_OUT |
out/target/product/产品名/ vendor | 厂商定制目录 |
out/target/product/产品名/data | 用户和系统应用数据目录,里面文件基本都是在系统运行中产生,编译时较少 |
可以对比更文件系统目录和out目录下的各个目录结构,会发现是一样的:
总结
Android根文件系系统目录是在Android系统运行的时候可以看到, 了解根文件系统目录下的子目录的作用,对于操作和开发都有很好作用。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~