- 浏览: 237156 次
- 性别:
- 来自: 湖南
最新评论
-
yuxuejun1123:
为什么没有powerPC,个人觉得这篇文章把mips和powe ...
ARM MIPS PowerPC比较 -
yy232:
我刚学这个,有点疑问,希望你能为我解答 你说 “任何人只 ...
centos的用户、组权限、添加删除用户等操作的详细操作命令 -
wstxdz1023:
就那么几句代码,全是问题
socket 心跳
经过这几天在网上搜索关于Android
文件
系统
的相关资料,发现已经有很多高手
分析了Android的文件系统,这些高手多从不同的方面分析了其文件系统的结构和运行原理。我这里就写一下自己的理解。
首先是Android的文件系统根目录的结构:
# pwd && ls -a -l
/
drwxrwxrwt root root 2009-06-10 09:53 sqlite_stmt_journals
drwxrwx--- system cache 2008-09-06 22:51 cache
d---rwxrwx system system 1970-01-01 08:00 sdcard
lrwxrwxrwx root root 2009-06-09 22:11 etc -> /system/etc
drwxr-xr-x root root 2008-09-06 22:45 system
drwxr-xr-x root root 1970-01-01 08:00 sys
drwxr-x--- root root 1970-01-01 08:00 sbin
-rw-r--r-- root root 117 1970-01-01 08:00 runme.sh
dr-xr-xr-x root root 1970-01-01 08:00 proc
-rwxr-x--- root root 1704 1970-01-01 08:00 init.trout.rc
-rwxr-x--- root root 9329 1970-01-01 08:00 init.rc
-rwxr-x--- root root 1677 1970-01-01 08:00 init.goldfish.rc
-rwxr-x--- root root 106636 1970-01-01 08:00 init
-rw-r--r-- root root 118 1970-01-01 08:00 default.prop
drwxrwx--x system system 2008-09-06 22:51 data
drwx------ root root 2009-06-07 16:29 root
drwxr-xr-x root root 2009-06-09 22:11 dev
sqlite_stmt_journals
:一个根目录下的tmpfs文件系统,用于存放临时文件数据。
cache
: 是缓存临时文件夹,据说是除了T-mobile的OTA更新外,别无用处。
sdcard
:是SD卡
中的FAT32文件系统挂载的目录
etc
:指向 /system/etc ,众所周知的配置文件存放目录
system
:是一个很重要的目录,系统中的大部分东西都在这里了,以下是目录结构:
# ls -a -l /system
drwxr-xr-x root 208 1970-01-01 08:00 xbin
drwxr-xr-x root root 1970-01-01 08:00 modules
drwxr-xr-x root root 2008-08-01 20:00 framework
drwxr-xr-x root root 2008-08-01 20:00 fonts
drwxr-xr-x root root 2008-08-01 20:00 etc
-rw-r--r-- root root 2197 2008-08-01 20:00 build.prop
drwxr-xr-x root root 2008-08-01 20:00 media
drwxr-xr-x root shell 2008-08-01 20:00 bin
drwxr-xr-x root root 2008-08-01 20:00 usr
drwxr-xr-x root root 2008-08-01 20:00 app
drwxr-xr-x root root 2008-09-06 22:45 lost+found
drwxr-xr-x root root 2008-08-01 20:00 lib
drwxr-xr-x root root 2008-08-01 20:00 sd
-rw-r--r-- root root 145 2008-08-01 20:00 init.rc
sys
:用于挂载 sysfs文件系统。 在设备模型中,sysfs文件系统用来表示设备的结构.将设备的层次结构形象的反应到用户空间中.用户空间可以修改sysfs中的文件属性来修改设备的属性值
sbin
: 只放了一个用于调试的adbd程序
。
proc
:/proc
文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。
data
:存放用户安装的软件
以及各种数据。
root
:什么都没有。
dev
:不用多说了,设备节点文件的存放地。
下面介绍非目录的文件:
runme.sh用于 SD 卡中 EXT2文件系统的自动
挂载动作的脚本。
init.trout.rc,init.rc,init.goldfish.rc 是初始化文件.
init是系统启动到文件系统的时候第一个运行的程序。
从以上的根目录分析来看,Android的根文件系统并非标准的Linux文件系统,所以以后还得仔细分析一下启动过程,才能认识Android系统。
今天要来分析一下Android
文件
系统
的/system目录的结构。
/system目录是在Android文件系统占有及其重要的位置,基本上所有的工具
和应用程序
都在这个目录下,我看来是一个真正的root
fs。他在Android手机
中存放在nandflash的mtd3中,是一个yaffs2文件系统,在启动时被挂载在root的/system目录下,其中包含有:
# pwd && ls -a -l
/system
drwxr-xr-x root 208 1970-01-01 08:00 xbin
drwxr-xr-x root root 1970-01-01 08:00 modules
drwxr-xr-x root root 2008-08-01 20:00 framework
drwxr-xr-x root root 2008-08-01 20:00 fonts
drwxr-xr-x root root 2008-08-01 20:00 etc
-rw-r--r-- root root 2197 2008-08-01 20:00 build.prop
drwxr-xr-x root root 2008-08-01 20:00 media
drwxr-xr-x root shell 2008-08-01 20:00 bin
drwxr-xr-x root root 2008-08-01 20:00 usr
drwxr-xr-x root root 2008-08-01 20:00 app
drwxr-xr-x root root 2008-09-06 22:45 lost+found
drwxr-xr-x root root 2008-08-01 20:00 lib
drwxr-xr-x root root 2008-08-01 20:00 sd
-rw-r--r-- root root 145 2008-08-01 20:00 init.rc
下面逐个分析其中的目录:
xbin
:下放了很多系统管理工具,这些工具不是到toolbox的链接,每个都是可执行程序。如果你看
到这些命令你会发现他们根本不常用,他们都是为系统管理员准备的,是一些系统管理和配置工具。这个文件夹的作用相当于标准Linux文件系统中的
/sbin。我的手机此目录下有busybox,肯定是改过的,应该是破解者加上的。
modules
:使用来存放内核模块(主要是fs和net)和模块配置文件的地方。
framework
: 是JAVA平台
的一些核心文件,属于JAVA平台系统框架文件。里面的文件都是.jar和.odex文件。
备注:什么是odex文件? odex是被优化过的JAVA程序文件,体积通常是.jar的4倍左右。执行效率比.jar高。
fonts
:很显然,这是字体库文件的存放目录。
etc
:这里存放了系统中几乎所有的配置文件,根目录下的/etc就链结于此。
build.prop
:是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置
和改变,类似于/etc中的文件。
media
:里面主要是存放了系统的铃声
的,分为 notifications(通知)、ui(界面)、alarms(警告)和ringtones(铃声),里面都是.ogg音频文件。
bin
:众所周知,是存放用户常用的工具程序的,其中大部分是到toolbox的链接(类似嵌入式Linux中的busybox)。toolbox应该是google简化版的busybox,我还没深入研究过。
usr
:用户的配置文件,如键盘
布局、共享、时区文件等等。您可以cat 来看看。
app
:顾名思义,存放的是Android系统自带的JAVA应用程序。
lost+found
:yaffs文件系统固有的,类似回收站的文件夹,只有是yaffs文件系统都会有。
lib
:存放几乎所有的共享库(.so)文件。
sd
:SD卡
中的EXT2分区的挂载目录
init.rc
:一个初始化脚本,用于将/system/modules和/system/xbin挂载为cramfs,避免系统被无意破坏。
好了,/system目录的结构的结构就简单分析到这里.
发表评论
-
Linux x86 编译 Android 遭遇 gnu/stubs-64.h
2011-08-19 10:43 1858这两天心血来潮,执行完 repo sync 后,顺手来了一下 ... -
使用Cygwin下载Android代码树
2011-03-16 20:45 1578--官方说明-- To set up y ... -
Cygwin在win下下载android源代码
2011-03-16 20:43 1072首先下载cygwin,cygwin是一个类linux平台。即在 ... -
Android NDK 环境搭建 - 安装配置 Cygwin
2011-03-16 20:40 29561. NDK 下载 最新版 Android NDK 开发工具包 ... -
Android-触感反馈和声音反馈的效果实现
2011-03-15 12:07 29451)只有系统设置中打开触感反馈选项,方法performHa ... -
socket的服务端框架
2011-03-07 14:17 2701最近查了不少java下面nio ... -
android UI 优化系列之 创建RGB565的缓存
2011-03-05 16:42 1891关于如何优化activity的 ... -
SocketChannel 和 DatagramChannel
2011-03-05 16:19 1922SocketChannel 叫套接字通道,面向流,就是通 ... -
Android 调试工具集
2011-03-05 13:25 12511.TraceView1)功能:用于热点分析和性 ... -
Android 中文API (33) —— Checkable
2011-03-03 17:45 1110声明 欢迎转载,但请保留文章原始出处:) ... -
Toast 和 Looper
2011-03-03 09:02 1138Toast 和 Looper,一个属于 android.w ... -
Activity 与 Main Loope
2011-03-03 08:59 1024上文抛出了一个疑问:UI 线程是在哪里绑定 Looper ... -
Class loading in Android : Begin with PathClassLoader
2011-03-03 08:56 1175Google 在 Android 文档里的《What is ... -
Linux x86 编译 Android 遭遇 gnu/stubs-64.h
2011-03-03 08:54 1253这两天心血来潮,执行完 repo sync 后,顺手来了一 ... -
读《Multitasking the Android Way》(一)
2011-03-03 08:50 1169Android Developers Blog 发表了一篇 ... -
从 Remote Service Binding 学习 AIDL 与 IPC
2011-03-03 08:47 1550默认情况下,一个应用不管有多少个 Activity、Ser ... -
Android SDK Add-on Configure, Compile and Release
2011-03-03 08:44 1900SDK Add-on 是一个比较小众的话题,一是通常厂商不 ... -
Activity Task 与 Intent Filter Flag
2011-03-03 08:42 1247接触 Android 以来,一直觉得对 task、affi ... -
android的原理,不需要太多的剩余内存
2011-03-02 16:05 924不用在意剩余内存的大 ... -
Android IPC框架分析 Binder,Service,Service manager
2011-03-02 15:19 1375我首先从宏观的角度 ...
相关推荐
### Android根文件系统分析总结 #### 一、Android源代码文件系统部分介绍 在深入了解Android根文件系统的构建之前,我们先来简要回顾一下Android源代码的组织结构。当从Google获取到完整的Android源代码后,经过在...
本文将深入分析Android根文件系统的结构及其主要组件。 首先,Android根目录下包含了多个关键目录和文件。如`/sqlite_stmt_journals`是一个临时文件系统,用于存储SQLite数据库执行过程中产生的临时数据。`/cache`...
### Linux内核启动过程及Android根文件系统的挂载 #### Linux内核启动流程概览 Linux内核的启动过程是一个复杂而有序的过程,涉及到多个关键步骤。为了更好地理解这一过程,我们将从架构特定的启动代码开始,逐步...
Android系统采用Linux内核,因此其文件系统与传统的Linux文件系统类似,主要由以下几个部分组成: 1. /system:包含系统核心文件,如库、框架和预装应用。 2. /data:存储应用程序数据,如数据库、缓存和用户配置...
2. **ramdisk.img**:作为初始的只读文件系统,ramdisk.img在内核启动时加载,用于执行初始化脚本(如/init),并帮助挂载真正的根文件系统。它包含了一些基本的工具和配置文件,是系统启动的第一步。 3. **...
在本文中,我们将深入探讨“树形结构文件系统”以及基于Android的文件管理系统的设计与实现。树形结构文件系统是计算机科学中的基本概念,它用于组织和存储数据,尤其是在操作系统中。在Android平台上,文件管理器是...
在管理U盘文件时,需要确保正确处理文件路径,因为U盘的根目录通常不同于手机内部存储或SD卡。 设计用户界面(UI)是另一个关键点。一个良好的文件管理器应提供浏览、创建、删除、重命名、复制和移动文件的功能。你...
《Android核心技术与实例详解》PPT ...Android根文件系统分析总结.pdf Android入门之HelloWorld.pdf Android系统开发--HAL层开发基础(1).doc Android硬件驱动开发关键技术和HAL移植要领.pdf HAL_sensor模型分析.doc
1. Android文件系统:Android采用Linux内核,因此其文件系统与传统的Linux文件系统类似,包括根目录、挂载点、文件和目录等。 2. Android存储空间:Android设备通常有两种存储方式,内部存储(Internal Storage)和...
Android设备的文件系统分为不同的分区,如内部存储和外部存储(SD卡)。用户文件通常存储在`Android/data/your_package_name/files`或`Android/media/your_package_name`等路径下。在处理文件选择时,我们需要获得...
Android系统源代码情景分析光盘资料 目录 第1篇初识Android系统 第1章 准备知识................................................................ 2 1.1 Linux内核参考书籍......................................
《Android系统源代码情景分析》随书光盘内容(源代码) 目录如下: 第1篇 初识Android系统 第1章 准备知识 1.1 Linux内核参考书籍 1.2 Android应用程序参考书籍 1.3 下载、编译和运行Android源代码 ...
通过 `adb` 命令,我们可以将模拟器中的数据目录复制到本地,然后覆盖到目标设备的根文件系统中。在某些情况下,可能需要修改 `init.rc` 文件以适应特定的文件系统格式,例如取消对非当前使用的文件系统的挂载。 ...
通过分析和学习这个源代码,你可以掌握Android应用开发的基本技巧,了解如何与文件系统交互,并提升在实际项目中的应用能力。同时,这也是一个锻炼面向对象编程、用户界面设计和系统级编程的绝佳实例。
Android文件管理器通常基于Android的文件系统结构,如Linux的EXT4文件系统,这包括根目录、内部存储、外部存储(SD卡)等。源码会展示如何遍历这些目录,并显示在UI上。在Android中,文件和目录的访问通常通过`java....
在Android平台上,读取Excel文件是一项常见的需求,例如在数据导入、数据分析或报表展示等场景。本项目将探讨如何在Android Studio开发环境中实现这一功能。首先,我们需要了解Android对文件操作的基本方法,以及...
首先,我们需要了解Android的文件系统结构。Android采用Linux内核,因此其文件系统基于POSIX标准,主要包括以下部分: 1. `/`: 根目录,包含系统的主要分区,如系统分区(`/system`),数据分区(`/data`)等。 2. `/...
本文将对“android 存储简要分析”这一主题进行深入探讨,基于提供的博客链接(尽管未给出具体内容,但我们将根据一般知识进行讲解)以及文件“android存储的学习.txt”的暗示,来详细解析Android中的存储机制。...
1. **文件系统结构**:Android基于Linux内核,因此其文件系统遵循Unix-like的目录结构,包括根目录(/)、系统目录(如/system、/data等)、用户数据目录(/data/data)和外部存储(/storage/emulated/0)等。...
《Android系统源代码情景分析》随书光盘内容(源代码) 目录如下: 第1篇 初识Android系统 第1章 准备知识 1.1 Linux内核参考书籍 1.2 Android应用程序参考书籍 1.3 下载、编译和运行Android源代码 1.3.1 下载...