Android源码编译过程及原理(一)

早上看了篇文章《你没穷过你不懂》我觉得从社会层面来看说的有一些道理,但是从个人来说,我觉得人的一生钱虽然很重要,但是追求人生的意义更重要,不然我们比动物也强不到哪去。


主要涉及内容

  1. android 源代码的下载以及编译
  2. android源代码的目录结构

android 源代码的下载以及编译

下载代码比较简单,相信使用过Ubuntu的程序员,下载代码更是小菜一碟。(以下都是在Ubuntu上进行操作

  1. 下载并安装repo,repo是对git的封装和增强,主要用来管理android的源代码
mkdir ~/bin    创建bin目录
PATH=~/bin:$PATH  将bin目录放到环境变量PATH中
下载repo并且让它可执行
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo 
chmod a+x ~/bin/repo
  1. 下载源代码
创建存放源码的目录
mkdir ~/androidsource
cd androidsource
与android源码库进行关联
repo init -u https://android.googlesource.com/platform/manifest -b android-8.0.0_r17
进行同步
repo sync -c -j4 --no-tags  

这个网址可以查看对应版本的分支名 https://source.android.com/source/build-numbers#source-code-tags-and-builds
由于代码较多,下载时间可能会长。另外因为国内无法访问google需要翻墙才行

  1. 编译源代码
    3.1 配置环境主要就是openjdk1.8其他的缺什么到时候就下载什么就好了
    3.2 进行编译
进入android源码根目录
source build/envsetup.sh
lunch
make -j4

在执行了lunch后会提示选择对应的产品(在后面会讲)如果仅仅是为了看源码,执行编译随便选就可以,或者不执行lunch 而直接make。
这个过程同样需要花费很多的时间
3.3 进入out/target目录,里面存放的就是你编译的结果

android源代码的目录结构

目录 作用
abi 不详(没有用过)
art 不详(没有用过)
bionic 标准的C库源文件,在编译的时候会使用
bootable 引导程序的源码,主要是recovery的代码
build 编译的核心位置,里面存放着大量的编译脚步.mk文件
cts 兼容性测试代码,如果想要通过google的认证,必须要通过兼容性测试
dalvik 和dalvik相关的代码
developers 包含了gradle以及一些sdk的例子,如Camera2 API的使用demo
development 开发android工程所涉及到的一些配置文件等
device 包含了不同产品的相关编译脚本
docs 和android源码相关的文档,其实就是source.android.com
external 系统所涉及的外部库,例如sqlite等 c/c++的代码比较多
frameworks android framework的核心
hardware 硬件抽象层HAL定义的头文件
libcore dalvik 所涉及到的java库
ndk 编译ndk 所需要的相关文件
packages android系统自带的一些应用如Setting
pdk 是在新的android版本发布之前,提供给芯片厂商和OEMS的简化版android新系统,为了更好的完成迁移工作
prebuiltes 包含了不同平台的ARM编译器
sdk 编译sdk所需要的相关文件
system 包含了android所需要的一些工具如adb等
tools 一些辅助性工具
vendor 和产品相关的私有文件,一般来说是目标文件,也就是说vendor下的内容并不是开源的,是各个厂商自己的东西

你可能感兴趣的:(Android源码编译过程及原理(一))