本文是Android底层开发系列的第二篇,了解前面的文章能更好的了解本文:



1.android底层开发(一)Linux环境搭建和下载源码


 

前言

(一). 编译环境的配置和添加 

(二). 软件包的安装

(三). 编译源码

 

上篇文章为大家讲述了 Android底层开发的环境和源码下载;本篇文章接着上篇内容继续为大家介绍  Android源码的编译编译配置。

 

(一). 编译环境的配置和添加 

 

上面一章我们把Android 9.0源码已经下载,接下来我们就来编译源码。

 

编译源码之前我们需要配置环境变量和配置资源包源;

 

#配置JDK

为什么要配置,JDK因为在编译中下载资源包的时候需要jdk的支持,我这里下载 jdk-8u231-linux-x64.tar.gz  大家可以去官网下载 需要版本。

 

下面我通过命令行 解压和配置环境变量:
#管理员身份设置

andychen@ubuntu:~$ sudo -i


#设置linux服务器密码
[sudo] password for andychen:


#进入opt目录
root@ubuntu:~# cd /opt

 

#创建Java目录
root@ubuntu:/opt# mkdir java


#复制共享文件   /mnt/hgfs/E/jdk-8u231-linux-x64.tar.gz  到 opt下的Java目录
root@ubuntu:/opt# cp /mnt/hgfs/E/jdk-8u231-linux-x64.tar.gz /opt/java/

 

#进入Java目录

root@ubuntu:/opt# cd java


#解压jdk
root@ubuntu:/opt/java# tar -zxvf jdk-8u231-linux-x64.tar.gz

android底层开发(二)源码编译_编译源码

 

#复制Java目录一份作为配置环境变量
root@ubuntu:/opt# cp /java
cp: missing destination file operand after '/java'
Try 'cp --help' for more information.

android底层开发(二)源码编译_android底层_02

配置 jdk环境变量

#执行如下命令 打开配置文件

root@ubuntu:~# vi /etc/profile

 

#配置如下信息

export JAVA_HOME=/opt/java/jdk1.8.0_231

export CLASSPATH=$JAVA_HOME/lib/

export PATH=$PATH:$JAVA_HOME/bin

export PATH JAVA_HOME CLASSPATH

root@ubuntu:~# source /etc/profile

执行上面的vi /etc/profile 命令行 进入配置  shift+g到配置文件底部,点击i进入标记状态

复制配置信息 放在该文件中,点击ESC退出 :wp!退出,


执行  root@ubuntu:~# source /etc/profile     命令保存配置

#验证环境是否配置正确

root@ubuntu:~# java -version
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)

 

配置如下图:

 

android底层开发(二)源码编译_java_03

 

(二). 软件包的安装

 

 

编译源码需要安装编译中使用的软件,如果使用国外的资源肯定是下载很慢的,甚至是无法下载,于是我们使用国内清华地址进行下载源。具体操作为:

首先执行命令 如下:
#进入 etc/apt文件目录

cd /etc/apt/
#执行命令打开文件

sudo gedit 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

 

#安装软件包

下面我们需要安装编译圆满需要的软件包,输入如下命令,进行安装即可。

sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib

sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386

sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev

sudo apt-get install git-core gnupg flex bison gperf 

sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib

sudo apt-get install libc6-dev-i386

sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev

sudo apt-get install lib32z-dev ccache

sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

sudo apt-get install libssl-dev

sudo apt-get install aptitude

 

经过上面的两个配置的添加,我们就能做代码编译了。

(三). 编译源码

编译时要保证虚拟机必须配置很大的内存,这里我使用8G编译的。尽量将自己的电脑升级到12G以上内存,这样会比较顺利一些。

#首先进入aosp文件目录 
执行 source ./build/envsetup.sh命令,将当前工程下的项目检索出来,同时生成一些简单命令,以供后续使用。输入命令后的界面如下:

 

android底层开发(二)源码编译_linux_04

 

然后执行 lunch 命令  ,会提示多种版本,我们需要选择一种来编译
这里选择 2   arm64的eng版本。

 

android底层开发(二)源码编译_编译源码_05

 

然后我们输入

 make -j4 | tee build.log

便开始漫长的编译过程,直到完成。模拟器编译很慢,只能慢慢等着,当编译完成后,会显示编译100%,完成。

 

编译成功界面如下图:

 

android底层开发(二)源码编译_linux_06

 

ok 看到上面的效果就说明编译源码成功了!

 

然后我们输入emulator启动模拟器,运行起来的效果会是如下:

android底层开发(二)源码编译_java_07

 

android底层开发(二)源码编译_linux_08

 

好了 到这里 针对9.0源码的编译已经完成了,有问题 大家可以关注公众号 加群 。

 

android底层开发(二)源码编译_android底层_09

 

- End -

 

android底层开发(二)源码编译_java_10

 

 

 

android底层开发(二)源码编译_java_11