如何玩Android系统源码

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

这里简单说下如何玩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 命令:
  • 基本命令
    git init、git clone、git remote 、git show、git blame 、git status、git branch、git log、git diff、git cherry-pick、git revert

  • 分支管理
    git add、git commit -s /-m /—amend 、git pull 、git push 、git merge、git reset (- - hard HEAD^) 、git checkout

  • rebase:回溯(修改或删除)之前的提交
    git rebase
    git rebase git rebase -i【当前修改的提交的前一个】
    做修改
    git add .
    git commit —amend
    git rebase —continue
    没有问题可以 - - skip
    退出rebase - - abort

  • 暂存:可用来暂存当前正在进行的工作, 比如想pull 最新代码, 又不想加新commit, 或者另外一种情况,为了fix 一个紧急的bug, 先stash, 使返回到自己上一个commit, 改完bug之后再stash pop, 继续原来的工作。
    git stash
    do some work
    git stash pop

  • patch移植:将本地修改的change保留成文件,可以应用于跨工程的patch移植。
    git am使用:将本地修改的change保留成文件,可以应用于跨工程的patch移植
    git am —keep-non-patch *.patch one by one地应用分支
    如果有冲突:
    $git apply —reject patch名
    生成.rej文件,是描述冲突的问题,按它的提示把对应文件的冲突解掉
    解完冲突删掉.rej文件,然后git add 修改文件
    最后:git am --resolved

2)repo命令

repo init 、repo sync 、repo start 、repo upload

3)adb 命令:
  • 基本操作:cd、pwd、ls、vim、cat、reboot
  • 文件:mkdir、touch 、cp、rm、mv、push、pull
  • 权限:chmod、chown、chgrp、root、disable-verity、remount
  • 进程:ps -A 、kill
  • 查询: 全局搜某个字符串 grep -r "XXXX" ./* 全局搜某个文件 find -name XXX
  • dumpsys相关 window、activity、meminfo、package等等,查看对应的系统log信息。

三、Android系统模块了解

1)基本概念

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

2)核心模块
  • build/soong 和 build/make 主要是跟编译规则相关的,大部分都是一些mk配置,来决定系统按什么顺序来串联和编译。他俩适配好了,基本上就可以lunch了。
  • system/core/ 包括不少系统核心工具,这部分可以单独编译boot image。
  • frameworks/base/ 这里是系统framework部分,包括java和native,编译后会生成两个核心文件:framework.jar和services.jar
  • art/ 虚拟机内容
  • packages/apps 系统app
  • out/target/product/ 编译生成的文件存在这目录下
3).mk、.dp文件

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,820评论 6 515
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,648评论 3 399
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 168,324评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,714评论 1 297
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,724评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,328评论 1 310
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,897评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,804评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,345评论 1 318
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,431评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,561评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,238评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,928评论 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,417评论 0 24
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,528评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,983评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,573评论 2 359