android根文件系统目录结构

来源:互联网 发布:淘宝网货到付款 编辑:程序博客网 时间:2024/05/17 22:52

1.Android系统分区

 


2.根文件系统目录结构

cache :是缓存临时文件夹,

etc :指向 /system/etc ,众所周知的配置文件存放目录

system :是Android根文件系统中一个很重要的目录,系统中的大部分东西都在这里了

sys:用于挂载 sysfs文件系统。。

proc :/proc 文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用。

mnt:U盘等外部存储设备挂载路径

data :存放用户安装的软件以及各种数据。

dev :设备节点文件的存放地。

tmp:写权限最近在做一个项目,需要应用将一个程序(比如testcmd)放到/data/local/tmp中执行。

storage:外部SD卡所在目录

Init: 是系统启动到文件系统的时候第一个运行的程序

init.rc :系统初始化脚本


Android中的内核启动后,kernel会启动第一个用户级别的进程:init,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。init始终是第一个进程。

 

2.2.2---init 进程

 

Init源码位置:JB目录下system/core/init/init.c中。

Init作用:

(1)、 创建一些linux根文件系统中的目录

(2)、读取并且解析init.rc文件

(3)、读取并且解析硬件相关的init.magellanbroad.rc脚本文件

(4)、初始化动态设备管理,设备文件有变化时反应给内核

(5)、启动系统属性服务: system property service

(6)、启动init.rc中定义的boot 等各种action和service.

………

 

 

2.2.2---system目录结构

 

System 目录结构分析

\system\app

这个里面主要存放的是常规下载的应用程序,可以看到都是以APK格式结尾的文件, 在这个文件夹下的程序为系统默认的组件,自己安装的软件将不会出现在这里,而是\data\app。

\system\bin

这个目录下的文件都是系统的本地程序,从bin文件夹名称可以看出是binary二进制的程序,里面主要是Linux系统自带的组件

\system\etc

从文件夹名称来看保存的都是系统的配置文件

\system\fonts

字体文件夹,除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库

\system\framework

framework主要是一些核心的文件,从后缀名为jar可以看出是是系统平台框架

\system\lib

lib目录中存放几乎所有的共享库(.so)文件

\system\media

铃声音乐文件夹,除了常规的铃声外还有一些系统提示事件音

\system\xbin

系统员管理工具

build.prop

系统全局属性

……..

…….

特别说明:

build.prop 是一个属性文件,在Android系统中.prop文件很重要,记录了系统的设置和改变,类似於/etc中的文件。

1、查看build.prop

#getprop

……

[ro.secure]: [0]

[ro.serialno]: []

[ro.sf.lcd_density]: [160]

[ro.wifi.channels]: [14]

[service.adb.tcp.port]: [5555]

[service.bootanim.exit]: [1]

[sys.boot_completed]: [1]

[sys.usb.config]: [adb]

…..

 

# getprop ro.sf.lcd_density  //查看单个属性

2、设置属性

#setprop ro.sf.lcd_density  240

 

 

 

 

一、替换android系统文件

分别可通过U盘copy 和adb push等方式替换

U盘里放需要替换的文件

1、  U盘插进板子USB接口、usb会自动mount在系统跟目录的/mnt/udisk目录下

2、  先删除掉系统中需要替换的文件

3、  命令cp 相应文件到自己的目录

adb push方式

1、  adb连接设备

2、  adb push 本地替换文件目录  android系统相关目录

 

ps:替换android 系统apk(atv.apk)

1、 系统apk 存放在/system/app目录下,系统system分区默认为只读的,首选需要重新mountsystem 目录 成为可读写

#mount –o remount rw /system

2、 删除atv.apk 

#rm /system/app/atv.apk

如需为了push进系统的apk里面生效我们还需删除掉apk在/data/data目录下生成的相应数据

#pm install com.realtek.atv

3、  push 新的apk进系统

#adb push d:\atv.apk /system/app

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二、 android 独立模块的编译(apk、so、jar档等)

 

 android的编译命令有m mm mmm等三个编译命令

 

m:编译所有的模块 
mm:编译当前目录下的模块,当前目录下要有Android.mk文件 
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件

 

想使用这些命令,首先需要在android源码根目录执行.build/envsetup.sh 脚本设置环境

#source ./build/envsetup.sh或者#. build/envsetup.sh

 

Ps:

1、编译apk    Y:\Workspace\kernel\android\JB\device\realtek\app\atv

phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$ TARGET_PRODUCT=magellan_tv010 mmm ./device/realtek/apps/Atv/

将会在下面的目录下生成atv.apk

Y:\Workspace\kernel\android\JB\out\target\product\magellan_tv010\system\app/atv.apk

 

2、编译jar档Y:\Workspace\kernel\android\JB\frameworks\base\services\java

phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$ TARGET_PRODUCT=magellan_tv010 mmm ./ frameworks/base/services/java

将会在下面的目录下生成services.jar

Y:\Workspace\kernel\android\JB\out\target\product\magellan_tv010\system\framework\ services.jar

 

为了每次都要输入TARGET_PRODUCT对应的产品编号可以做如下操作:

 

phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$lunch

You're building on Linux

 

Lunch menu... pick a combo:

 ……

13.rtk_magellan_tv001-eng

14. magellan_tv010-eng

…….

Which would you like? [full-eng] 14

….

phoenix@rtkPhoenix:~/Workspace/kernel/android/JB$


0 0
原创粉丝点击