参考网址:  Android 8.1.0 AOSP源码下载及编译

参考网址:Ubantu18.04环境下编译android源码

参考网址:Mac 上玩 Linux(一)安装Ubuntu

参考网址:mac上用VMWare虚拟机装Ubuntu--及Ubuntu安装Vmware Tools

参考网址:清华大学开源软件镜像站---Android 镜像使用帮助

参考网址:清华 asop 下载版本列表

参考网址:android aosp 源码版本

参考网址:查看本地aosp的版本

参考网址:查看清华镜像的分支

参考网址:Android驱动下载列表

 由于本人在工作中习惯使用Ubuntu14.04,本文所有的操作都是基于14.04,至于其他版本的ubuntu的操作应该大同小异。至于Ubuntu的安装不是本文的重点,请自行百度。因为本人手里有一部nexus5x的手机,所以下面的编译的内容会涉及和nexus5x相关的内容,如果读者有google生产的其他类型手机,也可以参考本文编译对应的aosp镜像。

一、环境的搭建

Ubuntu14.04默认没有安装jdk,本文AOSP代码将采用8.1.0,需要使用openjdk1.8,接下来介绍openjdk1.8的安装

1、openjdk1.8的安装

    1.1 添加ppa

    sudo add-apt-repository ppa:openjdk-r/ppa

    1.2 安装openjdk1.8

    sudo apt-get update

    sudo apt-get install openjdk-8-jdk

    1.3  设置默认java和javac(可选)

    由于本人当前Ubuntu上没有安装其他版本的jdk,所以跳过此步骤

    sudo update-alternatives --config java

    sudo update-alternatives --config javac

    1.4 检查版本

    java -version

    当前版本为

    openjdk version "1.8.0_171"

    OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-2~14.04-b11)

    OpenJDK 64-Bit Server VM (build 25.171-b11, mixed mode)

    安装成功。

2、安装所需的软件软件包

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

二、源码下载

1.Nexus5x相关下载

    1.1确定branch

    参考https://source.android.com/setup/build-numbers#source-code-tags-and-builds

    部分内容如下:

Android 8.1.0 AOSP源码下载及编译_第1张图片

    可以看到Nexus5X有OPM5.171019.017这个版本,其对应的branch是android-8.1.0_r18,接下的代码我们就sync这个branch的代码

    1.2.下载Nexus5X特定驱动程序

    我们这里下载OPM5.171019.017版本的驱动程序,下载地址为:

    https://developers.google.com/android/drivers#bullheadopm5.171019.017

    在该网址中还有其他google设备的驱动程序。

Android 8.1.0 AOSP源码下载及编译_第2张图片

    提供上图文件的百度网盘下载地址:

    https://pan.baidu.com/s/1k3cMlg9jpqFavgl_mLIt9A

    https://pan.baidu.com/s/1tfGqHWEprq06rrZIV7C-Mw

    下载后是lge-bullhead-opm5.171019.017-b7cae183.tgz和qcom-bullhead-opm5.171019.017-8a9ac889.tgz两个文件。

2.AOSP源码下载

由于“墙”的原因,AOSP代码不直接从google下载,我们这里使用清华的AOSP源。

1.确保主目录下有一个 bin/ 目录,并且该目录包含在路径中

mkdir ~/bin
PATH=~/bin:$PATH

2.下载 Repo 工具,并确保它可执行

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

3.将repo的URL切换至清华的源

将如下内容复制到你的~/.bashrc的最后一行们只保留了.repo目录,下载后解压再repo sync一遍即可得到完整的目录。

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

然后执行如下命令使其生效

source ~/.bashrc

4.设置name和email

git config --global user.name "Your Name"

git config --global user.email "you@example.com"

5.下载初始化包,正常从AOSP源码,我们只需要执行5、6两步即可。即使使用国内的镜像源,repo sync也经常中断,大量的拉取操作对于镜像站也是一个很大的负担。所以我们采用镜像站推荐的先下初始化包的操作。初始化包中保留了.repo目录,下载后解压再repo sync一遍即可得到完整的源码。初始化包位于https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/中,我们使用如下命令下载最新的版本。-------如果需要某个特定的版本,可以不执行该操作,直接进入下一步

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar

tar xf aosp-latest.tar

cd aosp

6.如果需要某个特定的 Android 版本,可以使用-b来选择分支,我们这里选择为前面所需要的android-8.1.0_r18:

如果没有安装python,要先安装

sudo apt-get install python

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r18

7.同步代码

repo  sync

虽然使用的使国内的源,但是本人依然经历了漫长的下载和sync,也可能是和本人家里的网速有关。基本这些下载和sync的工作我都放到晚上睡觉的时候去做,因为还会出现一觉起来sync失败的情况,前前后后花了小一周的的时间。

查看镜像的命令如下:

Android 8.1.0 AOSP源码下载及编译_第3张图片

 

三、代码编译和烧写

编译的操作比较简单

1.将前面下载的lge-bullhead-opm5.171019.017-b7cae183.tgz和qcom-bullhead-opm5.171019.017-8a9ac889.tgz解压后放到aosp的根目录,分别是extract-qcom-bullhead.sh和extract-lge-bullhead.sh,这里面是一些和厂商相关的配置、so、img之类的,执行这两个脚步,根据提示进行操作:

./extract-lge-bullhead.sh
./extract-qcom-bullhead.sh

2.source操作

source ./build/envsetup.sh

3.lunch选择产品

lunch aosp_bullhead-userdebug 

Android 8.1.0 AOSP源码下载及编译_第4张图片

4.编译

make

make完成后可以看到out目录下已经生成了对应的img文件

5.烧写,进入img所在的目录,nexus5x的目录是out/target/product/bullhead/,使用如下命令进行烧写(Note:请确认adb devices和fastboot devices都能识别到设备):

adb reboot bootloader

fastboot flashall -w

烧写完成后,手机正常开机,如下图,可见当前的build number是我们预期的版本:

参考网址:

AOSP源码编译 --全部编译

AOSP 安卓源码7.1编译-真机运行

Android 8.1.0 AOSP源码下载及编译_第5张图片

Android 8.1.0 AOSP源码下载及编译_第6张图片

Android 8.1.0 AOSP源码下载及编译_第7张图片

更多相关文章

  1. :Android模拟器的基本操作
  2. 【基于zxing的编解码实战】zxing项目源码解读(2.3.0版本,Android部
  3. android国际化操作
  4. Android SMS 短信操作
  5. 我的android 第14天 - 使用SQLiteDatabase操作SQLite数据库

随机推荐

  1. FormatDateTime Java ,Android 常用的日
  2. Android(安卓)MQTT使用详解
  3. android fastboot 刷机 指令
  4. android SDK 无法更新
  5. Android 最大程度从App回到桌面 不被杀死
  6. Android应用程序键盘(Keyboard)消息处理机
  7. Android 图片缩放与旋转的实现详解
  8. 初窥Tizen
  9. 一个Android工程依赖了一个有 AndroidMan
  10. Android(安卓)Studio 提示错误:No IDEA an