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 框架流程

Android设置镜像语言textview显示属性_应用程序

第一个阶段,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等一系列服务。

启动完所有服务之后,这个时候就需要进入我们的桌面了,从此后我们就可以在桌面点击各个应用入口,去看到各种各样的信息。

这里再放上几张图,看不清楚的话微信联系明哥,发你高清版。

Android设置镜像语言textview显示属性_android_02

Android设置镜像语言textview显示属性_android_03

Android设置镜像语言textview显示属性_系统进阶_04

Android设置镜像语言textview显示属性_android_05


Android设置镜像语言textview显示属性_应用程序_06

后续会进行语音视频讲解,感兴趣的可以加星球(长按下方图片进入星球),更快速的成长。