Android Framework

如何玩Android系统源码

2019-08-17  本文已影响0人  Stan_Z

原创内容,转载请注明出处,多谢配合。

这里简单说下如何玩Android系统代码。

一、rom的下载、编译和刷机

1)rom下载与编译

对应的环境和工具就不提了,网上一搜一大把。
repo init 地址 拉下.repo
repo sync -c - -no-tags 同步
source ./build/envsetup.sh 在当前bash环境下读取并执行build/envsetup.sh脚本中的命令。
lunch 选择对应的包
make -jn 编译

rom局部编译
系统开发就是编译费劲,但是也不用每次都全编,因为一次全编多则几小时,少则也要半小时,如果是改局部模块可以只编译局部就好了:
比如:
Frameowork编的比较多的:
frameworks/base/services mm可以单独编 对应service.jar push到system/framwork。
虚拟机:
make libart 生成libart.so push到system/lib
make install 生成installd push到system/bin
等等不一一例举。

2)rom刷机

编译好的内容在工程out目录下
fastboot flash boot system userdata vendor 常见的就是刷这几个,如果机器没全image,那还是按脚本来刷一次全的, 包括dtbo、 vbmeta等好多image。
各image介绍:
boot.img: 主要包括kernel。
system.img:包括了主要的包、库等文件。
userdata.img:包括了一些用户数据,刷了之后用户数据和安装的应用全部丢失,还原成出场设置。
vendor.img :带有品牌标识和驱动的包,与芯片厂商相关:比如qcom ,mtk等。谷歌要把系统和驱动分开,方便之后升级系统。

二、版本控制:

这里简单例举下最常用的一些命令。

1)git 命令:
2)repo命令

repo init 、repo sync 、repo start 、repo upload

3)adb 命令:

三、Android系统模块了解

1)基本概念

一个android项目包括许多的模块,所有项目模块通过repo中的manifest.xml统一管理,repo init的时候会拉下来一个.repo里面就有它,之后repo sync的工程内容就是manifest.xml对应的模块。这里还牵扯到共线与共分支的问题,共线就是芯片相关平台基线,共分支就是模块各自的版本控制。这里不细说,做过系统的自然懂,玩aosp的不用懂。

2)核心模块
3).mk、.dp文件

makeFile是一份定义了源文件间依赖关系、如何编译各个源文件并生成可执行文件的说明书,决定整个工程的编译规则,实现自动化编译。android P版本开始陆续用dp取代mk。

我这里就是记了个简单的流水账,了解上面这些之后,基本上就能比较顺利的开始玩Android系统源码了。

上一篇 下一篇

猜你喜欢

热点阅读