Android 源码编译步骤实录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、系统环境
  • 二、Linux换源
    • 1.备份并替换默认源文件
  • 三、基本环境安装
    • 1、repo下载安装
    • 2、git安装
    • 3、python3安装
  • 四、使用repo下载Android源码
  • 五、源码编译
    • 1、编译环境准备
    • 2、python2安装
    • 3、开始编译
  • 总结


前言

新公司入职,领了新的Linux电脑,身为一名光荣的Android开发者,电脑上Android源码肯定得有一套的,所以借此契机,整理一套Android源码下载与编译基本流程。当然Google官方已经整理得很详细了,详参Google开发者流程。废话不多说,直接开干


一、系统环境

系统:Ubuntu18.04 LTS

二、Linux换源

这一步主要是将Ubuntu系统默认的源换成国内的镜像源,推荐清华源,他们官方文档写得很详细

1.备份并替换默认源文件

一名合格的程序员都会为自己留一条后路,记得备份原本的默认源文件:Ubuntu 的软件源配置文件是 /etc/apt/sources.list。将系统自带的该文件做个备份,将该文件替换为下面内容,即可使用清华源的软件源镜像。

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

文件内容替换完成后Update一下

sudo apt-get update

三、基本环境安装

1、repo下载安装

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo

这里使用的是清华源的git-repo文件地址,如果提示curl命令找不到,请按Linux提示安装curl,也可以直接暴力点击进入https://mirrors.tuna.tsinghua.edu.cn/git/git-repo进行下载

repo的运行过程中会尝试访问官方的git源更新自己,如果想使用tuna的镜像源进行更新(推荐),可以将如下内容复制到你的~/.bashrc

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

2、git安装

sudo apt-get install git

配置自己Git用户名和邮箱

git config --global user.name "your_name"
git config --global user.email "your_email"

3、python3安装

注:源码下载需要python3版本支持

sudo apt-get install python3

四、使用repo下载Android源码

创建源码本地保存路径

mkdir AOSP
cd AOSP

初始化代码仓库

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-security-9.0.0_r76

-b后面跟的是Android版本,详见Android版本列表选择自己想要下载的Android版本

同步源码树(以后只需执行这条命令来同步)

repo sync -c -d --no-tag

接下来等待源码下载完成就可以啦(这个过程很漫长)
注:如果在初始化代码仓库的时候报SSL协议的CA证书问题,就把上面所有https的地址换成http就好,然后把代码仓库里的.repo文件夹删除,再初始化。当然这是最暴力的手段,官方还是推荐使用https协议下载源码的,安全!!!

五、源码编译

1、编译环境准备

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

如果存在部分安装失败,可以尝试将镜像源文件里的注释给解开,update后再试。或者运行sudo apt-get install -f自动卸载未安装的软件。
这是Ubuntu18.04的环境,官方也给出了其他Ubuntu版本的环境安装命令。
Ubuntu14.04:

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

Ubuntu12.04:

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

Ubuntu10.04-11.10:

sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc

在 Ubuntu 10.10 中,请运行以下命令:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

在 Ubuntu 11.10 中,请运行以下命令:

sudo apt-get install libx11-dev:i386

2、python2安装

注:这里比较坑的是,源码下载要用python3,源码编译要用python2(裂开)

sudo apt-get install python2.7

安装完之后得配置一下python版本的优先级

# 进入ubuntu 软件安装的文件夹
cd /usr/bin/
# 过滤 python,查看python各版本文件名路径
ll | grep python
# 配置优先级,150>100
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 150
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 100
# 查看当前默认 python 版本,确认优先级是否配置成功
python --version
# 显示是python2.x就成功了

3、开始编译

进入本地代码路径

cd AOSP
# clean一遍
make clobber
# 开始民工三连
source build/evnsetup.sh
lunch
# 这时候需要选择一个镜像编译版本,根据你的需求和机型来,输入版本前面对应的数字序号
1
# 整编,-j参数根据你的cpu线程数自己决定
make -j8

理想情况下几个小时后就收到编译成功的通知了~

单编的话就进入到子模块目录(带Android.mk文件目录)下mm -j8就好

总结

文章只是整理了部分步骤,还有很多的不足,请谅解

你可能感兴趣的:(android)