赞
踩
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$
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。