安卓从入门到进阶第一篇(环境搭建)
1.4 目录结构
1.4.1 主目录结构
abi 应用程序二进制接口
art ART虚拟机
bionic Android移植的C库
bootable 引导程序以及recovery
build 存放系统编译规则及generic等基础开发包配置
cts Android兼容性测试套件标准
dalvik dalvik虚拟机
developers 开发者目录
development 应用程序开发相关
device 项目配置相关内容
docs 参考文档
external 三方开源库
frameworks 应用程序框架层,Android应用开发核心代码,由Java和C++编写
hardware 硬件抽象层代码
libcore 核心库相关文件
libnativehelper 动态库,实现JNI库的基础
ndk NDK相关库和代码
out 编译过程和结果输出目录
packages 应用程序包,Settings/Dialer等系统应用都在这里
pdk Plug Development Kit 的缩写,本地开发套件
platform_testing 平台测试
prebuilts 预编译的一些资源,参与编译过程
sdk sdk和模拟器
system 底层文件系统库、应用和组件
toolchain 工具链文件
tools 工具文件
Makefile 全局Makefile文件,用来定义编译规则
kernel Linux内核
vendor 厂商定制部分,比如MTK/展讯三方客制化部分
1.4.2 out目录结构
out/ 编译输出目录
out/host/ 主机可执行文件,作为工具使用
out/target/product/product 目标文件
boot.img Android启动映像(Linux内核+根FS)
system.img Android核心支撑镜像
userdata.img Android开发应用程序和数据库,挂载在data分区
root/ 编译到ramdisk.img且合并到boot.img
system/ 整体打包成system.img
obj/ 中间对象文件
include/ 来自组件的已编译包含文件
lib/ 引用的库文件
STATIC_LIBRARIES/ 每个子目录显示对应的静态库生成过程文件
SHARED_LIBRARIES/ 每个子目录显示对应的动态库生成过程文件
EXECUTABLES/ 每个子目录显示对应的可执行文件生成过程文件
APPS/ 每个子目录显示对应的APK文件生成过程文件
out/target/common/obj/APPS
symbols/ 所有目标二进制代码的符号,在出现native异常时候使用addr2line工具定位代码位置
1.4.3 手机目录结构
init.rc 初始化配置文件
dev/ 驱动节点
proc/ 虚拟节点,存储进程相关的内容
sys/ 系统/内核配置,可以通过此处驱动节点,读写驱动数据
sbin/ 系统启动二进制代码(ADB后台程序;只读
system/ 来自system.img(读-写)
– bin/ Android系统二进制代码
– lib/ Android系统库
– xbin/ 非必要二进制代码
– framework/ Android框架组件(Java)
– app/ Android应用程序(Java)
– priv-app/ 系统级别的应用程序
– etc/ Android配置文件
– etc/permissions 权限信息
– etc/wifi wifi配置信息
– etc/bluetooth蓝牙配置信息
vendor 方案公司的相关框架内容
media 铃声和开关机动画资源
fonts 字体相关
tts 语音播报资源
recovery/ 放置进入recovery模式的相关配置及应用
sdcard/ SD卡挂载点
data/
– app/ 用户安装的Android应用程序
– tombstones/ Android崩溃日志
- anr/ 出现anr时出现的目录
1.5 框架流程
第一个阶段,bootloader。
系统在上电的时候,系统会从固定的地方加载一段代码进入内部ram进行运行。
这段代码通常是使用汇编语言编写,主要进行硬件的简单初始化,创建一个c语言所需要的堆栈区域,然后加载c的代码运行。c的代码完成更多的硬件设置,然后加载kernel,进入操作系统初始化。
2操作系统初始化
当我们将kernel加载进入内存,从它的入口点进行继续初始化系统。第一阶段将硬件的状态准备就绪,操作系统进行初始化所有配置的驱动代码,完成硬件驱动任务。然后在这个阶段,将管理内存,网络,以及进程等等,完成了这些内容后,将启动第一个进程。
3init进程
当系统整个环境OK之后,就开始进入init进程,此进程进行挂载一些目录,解析init.rc配置脚本,创建一些守护进程,在这些进程里面,主要的便是zygter,因为它是我们Android上层架构的入口。
zygter进程
这个进程完成了Android JAVA虚拟机的构建,同时通过JNI配置,将本身zygter的c系统进行关联,将系统预置的资源,以及动态库进行加载,然后创建我们Android的系统服务进程。
系统服务进程,zygter完成了虚拟机的创建后,这时候就要进入Android的系统服务进程。系统服务进程将我们应用开发的所需的服务启动起来,这里有AMS,WMS,PMS等一系列服务。
启动完所有服务之后,这个时候就需要进入我们的桌面了,从此后我们就可以在桌面点击各个应用入口,去看到各种各样的信息。
这里再放上几张图,看不清楚的话微信联系明哥,发你高清版。
后续会进行语音视频讲解,感兴趣的可以加星球(长按下方图片进入星球),更快速的成长。
退出那些无效的群
年轻,就要多做一些事情
不惧风霜