> 系统分区

# adb shell

# mount

rootfs / rootfs ro 0 0
tmpfs /dev tmpfs rw,mode=755 0 0
devpts /dev/pts devpts rw,mode=600 0 0
proc /proc proc rw 0 0
sysfs /sys sysfs rw 0 0
none /acct cgroup rw,cpuacct 0 0
tmpfs /mnt/asec tmpfs rw,mode=755,gid=1000 0 0
none /dev/cpuctl cgroup rw,cpu 0 0
/dev/block/mtdblock0 /system yaffs2 ro 0 0
/dev/block/mtdblock1 /data yaffs2 rw,nosuid,nodev 0 0
/dev/block/mtdblock2 /cache yaffs2 rw,nosuid,nodev 0 0
/dev/block/vold/179:0 /mnt/sdcard vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,err  ors=remount-ro 0 0
/dev/block/vold/179:0 /mnt/secure/asec vfat rw,dirsync,nosuid,nodev,noexec,uid=1000,gid=1015,fmask=0702,dmask=0702,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf  8,errors=remount-ro 0 0
tmpfs /mnt/sdcard/.android_secure tmpfs ro,size=0k,mode=000 0 0

  以上就是 Android 系统的分区结构,可见其挂载方式和 Linux 非常类似,熟悉
Linux 的朋友应该能很容易的看出这些分区的作用大概是什么。

其中需要说明一下的可能是 /dev/block/mtdblock* 这几个核心分区(写入 ROM 的),他们都是使用 yaffs2 文件系统(基于 FLASH 存储),

其中是 /system 这个分区只有特殊的 ro 只读权限,由此可见 Android 在安全性设计方面所下的一些功夫。另外 /dev/block/vold 据说是设计

来替代 udev 的功能,主要用于支持一些热插拔设备。

> 目录概览

# ls -l

dr-x------ root     root              2011-08-18 10:36 config
drwxrwx--- system cache 2011-06-21 05:32 cache
lrwxrwxrwx root root 2011-08-18 10:36 sdcard -> /mnt/sdcard
drwxr-xr-x root root 2011-08-18 10:36 acct
drwxrwxr-x root system 2011-08-18 10:36 mnt
lrwxrwxrwx root root 2011-08-18 10:36 d -> /sys/kernel/debug
lrwxrwxrwx root root 2011-08-18 10:36 etc -> /system/etc
drwxr-xr-x root root 2010-06-30 21:06 system
drwxr-xr-x root root 1970-01-01 00:00 sys
drwxr-x--- root root 1970-01-01 00:00 sbin
dr-xr-xr-x root root 1970-01-01 00:00 proc
-rwxr-x--- root root 12995 1970-01-01 00:00 init.rc
-rwxr-x--- root root 1677 1970-01-01 00:00 init.goldfish.rc
-rwxr-x--- root root 107412 1970-01-01 00:00 init
-rw-r--r-- root root 118 1970-01-01 00:00 default.prop
drwxrwx--x system system 2011-08-12 06:54 data
drwx------ root root 2010-01-28 00:59 root
drwxr-xr-x root root 2011-08-18 10:36 dev

  以上是 Android 根目录下文件目录,根据之前的分区结构可以大致看出每个目录的所处位置和大致功能,

以下是几个重要目录/文件的说明:

  1、mnt                挂载点目录

  2、etc                系统主要配置文件

  3、system            Android 系统文件

  4、sys                Linux 内核文件

  5、proc                运行时文件

  6、init.rc            启动脚本

  7、default.prop        系统属性配置文件

  8、data                用户程序目录

  9、dev                设备文件

system目录:

# ls -l /system

drwxr-xr-x root     root              2010-06-30 21:03 usr
drwxr-xr-x root root 2010-06-30 21:07 app
drwxr-xr-x root root 2010-06-30 21:05 lib
drwxr-xr-x root root 2010-06-30 21:07 etc
drwxr-xr-x root root 2010-06-30 21:06 framework
-rw-r--r-- root root 1532 2010-06-30 20:58 build.prop
drwxr-xr-x root shell 2010-06-30 21:04 xbin
drwxr-xr-x root root 2010-06-30 21:00 tts
drwxr-xr-x root root 2010-06-30 21:00 media
drwxr-xr-x root root 2010-06-30 21:00 fonts
drwxr-xr-x root shell 2010-06-30 21:04 bin
drw-rw-rw- root root 2011-08-18 10:36 lost+found

以上是 system 目录下面的主要文件目录下面也简单介绍一下:

  1、usr            用户文件夹,包含共享、键盘布局、时间区域文件等

  2、app            常规下载的应用程序,这些 apk 包都是受保护的哦

  3、lib            系统底层库,如平台运行时库

  4、etc            系统的配置文件,比如APN接入点设置等核心配置等

  5、framework    Android 系统平台核心
framework 的文件

  6、build.prop    Android 系统属性配置文件

  7、xbin            常用开发工具,比如 tcpdump/sqlite3 等

  8、bin            系统工具,比如 ps/cp/pm 等

data目录:

# ls -l /data

drwx------ root     root              2011-06-22 02:32 property
drwxrwx--t system misc 2011-06-21 05:32 misc
drwxrwx--x shell shell 2011-06-21 05:32 local
drwxrwx--x system system 2011-06-21 05:32 app-private
drwx------ system system 2011-06-21 05:33 backup
drwxrwxr-x system system 2011-08-12 06:54 anr
drwxrwx--x system system 2011-08-20 06:50 app
drwxrwx--x system system 2011-08-20 06:50 data
drwxr-x--- root log 2011-06-21 05:32 dontpanic
drwxrwx--x system system 2011-08-20 06:50 dalvik-cache
drwxrwxr-x system system 2011-08-22 06:40 system
drwxrwx--- root root 2011-06-21 05:32 lost+found 

  可以看到 /data 目录下结构都和应用有关,平时安装的用户应用/游戏程序,对应APP的数据,

都被安装在 /data/app 下就可以了。

查看系统变量:

# set

ANDROID_ASSETS=/system/app
ANDROID_BOOTLOGO=1
ANDROID_DATA=/data
ANDROID_PROPERTY_WORKSPACE=9,32768
ANDROID_ROOT=/system
ASEC_MOUNTPOINT=/mnt/asec
BOOTCLASSPATH=/system/framework/core.jar:/system/framework/ext.jar:/system/framework/framework.jar:/system/framework/android.policy.jar:/system/framework/services.jar
EXTERNAL_STORAGE=/mnt/sdcard
IFS='
'
LD_LIBRARY_PATH=/system/lib
OPTIND=1
PATH=/sbin:/system/sbin:/system/bin:/system/xbin
PS1='# '
PS2='> '
PS4='+ '
PWD=/
_=/system/xbin

从系统变量我们也可以看到一些系统使用中的重要目录。

> 进程分析

# ps

USER     PID   PPID  VSIZE  RSS     WCHAN    PC         NAME
root 1 0 312 220 c009b74c 0000ca4c S /init
root 2 0 0 0 c004e72c 00000000 S kthreadd
root 3 2 0 0 c003fdc8 00000000 S ksoftirqd/0
root 4 2 0 0 c004b2c4 00000000 S events/0
... ...
root 27 1 740 196 c0158eb0 afd0d8ac S /system/bin/sh
system 28 1 808 204 c01a94a4 afd0db4c S /system/bin/servicemanager
root 29 1 3736 372 ffffffff afd0e1bc S /system/bin/vold
root 30 1 3716 336 ffffffff afd0e1bc S /system/bin/netd
... ...
system 59 33 183396 25580 ffffffff afd0db4c S system_server
app_0 108 33 134184 14876 ffffffff afd0eb08 S com.android.inputmethod.pinyin
radio 112 33 147300 15804 ffffffff afd0eb08 S com.android.phone
app_25 122 33 149408 19932 ffffffff afd0eb08 S com.android.launcher
system 124 33 136708 13172 ffffffff afd0eb08 S com.android.settings
app_0 148 33 148892 18044 ffffffff afd0eb08 S android.process.acore

  从这里我们可以看出和 Linux 一样所有进程的入口都是 init,接下来的系统进程也和 Linux 类似,

再接下来就是一些系统的守护程序(Native
Service),最后是系统重要的应用程序。

通过这个列表大家也可以看出 Android 启动过程的一些端倪。

  来自:http://blog.csdn.net/shagoo/article/details/6709430

Android平台根目录文件的更多相关文章

  1. cocos2dx 在android平台打开文件问题

        我们有一个项目是基于cocos2dx + lua,在网络部分用到了protobuf, 在初始化protobuf的时候须要读取本地文件,用lua的io.open读取文件在windows,ios上 ...

  2. ReactNative生成android平台的bundle文件命令

    ReactNative生成android平台的bundle文件命令 2016年11月03日 23:23:28 阅读数:4869 注:如果assets文件没有正确生成,需要手机创建或授权 网上的其它的很 ...

  3. Android平台dalvik模式下java Hook框架ddi的分析(2)--dex文件的注入和调用

    本文博客地址:http://blog.csdn.net/qq1084283172/article/details/77942585 前面的博客<Android平台dalvik模式下java Ho ...

  4. Cocos2dx-3.0版本 从开发环境搭建(Win32)到项目移植Android平台过程详解

    作为重量级的跨平台开发的游戏引擎,Cocos2d-x在现今的手游开发领域占有重要地位.那么问题来了,作为Cocos2dx的学习者,它的可移植特性我们就需要掌握,要不然总觉得少一门技能.然而这个时候各种 ...

  5. 关于文章“cocos2dx移植android平台-我的血泪史”需要注意事项

    关于文章"cocos2dx移植android平台-我的血泪史"需要注意事项 在上次转载的这篇文章中,按照配置一步一步的下去.发现工程中在Android.mk中有一处错误.直接bui ...

  6. cocos2dx使用了第三方库照样移植android平台-解决iconv库的移植问题

    当我写这篇文章的时候我是怀着激动的心情的,因为我又解决了一个技术问题.你可能对题目还一知半解,这是什么意思,我之所以要写这篇文章就是要解决当我们在cocos2dx中使用了第三方库的时候,移植到andr ...

  7. cocos2dx移植android平台-我的血泪史

    版权声明:本文由( 小塔 )原创,转载请保留文章出处! 本文链接:http://www.zaojiahua.com/android-platform.html 本人这几天一直都没有跟新自己的网站内容, ...

  8. Android平台NDK编程

    转自:http://blog.csdn.net/wangbin_jxust/article/details/37389383 之前在进行cocos2dx开发时,已经详细介绍了如何将win32的c++代 ...

  9. 深入了解android平台的jni(二)

    Android.mk是Android提供的一种makefile文件,用来指定诸如编译生成so库名.引用的头文件目录.需要编译的.c/.cpp文件和.a静态库文件等.要掌握jni,就必须熟练掌握Andr ...

随机推荐

  1. 物料分类新增&更新

    --新增 INV_ITEM_CATEGORY_PUB.Create_Category ( p_api_version IN NUMBER, p_init_msg_list IN VARCHAR2 DE ...

  2. SpriteKit中节点的z-position

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交 ...

  3. 带你深入理解STL之Set和Map

    在上一篇博客带你深入理解STL之RBTree中,讲到了STL中关于红黑树的实现,理解起来比较复杂,正所谓前人种树,后人乘凉,RBTree把树都种好了,接下来就该set和map这类关联式容器来" ...

  4. 10 GridView 样式属性

    GridView 样式属性: 1,android:numColumns="auto_fit" 显示的列数 如果android:numColumns不设置那么自动每行1列 如下图 2 ...

  5. Android Multimedia框架总结(一)MediaPlayer介绍之状态图及生命周期

    请尊重分享成果,转载请注明出处: http://blog.csdn.net/hejjunlin/article/details/52349221 前言:从本篇开始,将进入Multimedia框架,包含 ...

  6. Android触摸屏幕时间-android学习之旅(三)

    android的多点触摸是经常遇到的编程技巧,这一篇可以将详细的介绍这个问题. 简单实例 android的触摸需要实现OnTouchListener接口,继承里面方法. 布局代码: <?xml ...

  7. [ExtJS5学习笔记]第四节 欢迎来到extjs5-手把手教你实现你的第一个应用

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/38331347 本文作者:sushengmiyan ------------------ ...

  8. Sybase - tempdb

    前沿:换了新公司,公司使用的Sybase数据库.现在开始学习Sybase数据库了.希望未来的几个月能对Sybase由浅入深的了解和研究. Tempdb的作用 sybase server端内部使用 排序 ...

  9. 统计git代码提交量

    以下是我写的一个脚本,可以统计在某个项目中,自己修改代码的行数,包括增加多少行,删除多少行. 可以统计当天,24小时内或全部时间内.使用时需要把代码中的author对应的值换成自己的名字. 代码如下: ...

  10. 学习笔记3-开发与运行(卸载)第一个ANDROID应用

    新建Android项目 1.      配置好Android坏境以后,新建项目选择Android Project. 2.      选择针对哪个平台开发的应用(Android2/Android4等) ...