AOSP源码下载和编译

1.编译环境搭建(Ubuntu14.0.4 编译android8.1.0_r52)

1.1更换数据源到阿里
sudo gedit sources.list
所用阿里源:
deb http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-security main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-updates main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-proposed main restricted universe multiverse

deb-src http://mirrors.aliyun.com/ubuntu/ trusty-backports main restricted universe multiverse

1.2更新apt源

sudo apt-get update
sudo apt-get upgrade

1.3安装VIM

# 安装VIM
sudo apt-get install vim

1.4JDK和依赖包下载

$ sudo apt-get install openjdk-8-jdk #下载openjdk8

1.5安装其他依赖

$ 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 ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

1.6USB设备权限配置

在 GNU/Linux系统下(比如Ubuntu),普通用户默认是没有权限去访问USB设备的,如果希望某个用户访问,可以以root身份在/etc/udev/rules.d/ 目录下创建一个rules规则文件,AOSP提供的rules里配置了常见Android设备。

sudo curl --create-dirs -L -o /etc/udev/rules.d/51-android.rules -O -L https://raw.githubusercontent.com/snowdream/51-android/master/51-android.rules
sudo chmod a+r /etc/udev/rules.d/51-android.rules
sudo service udev restart

2.源码下载和管理

注意:安卓源码分几个部分:内核源码、驱动、AOSP安卓源码

2.1替换AOSP源码地址为国内镜像

# 1. 下载repo创建~/bin目录并加到环境变量
$ mkdir ~/bin
$ PATH=~/bin:$PATH
# 下载repo脚本到本地并配置可执行权限
# 清华大学提供的repo
$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
$ export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
$ chmod a+x ~/bin/repo #所有用户可执行

# 2. 初始化本地repo
# 创建工作目录,用于保存下载的AOSP源码
$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

# 配置git账户信息,用于提交代码到Gerrit(code-review代码审查)上
$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

# 初始化repo,指定要下载的android源码分支名。不指定,默认下载master分支代码(最新版本代码)。执行完以后WORKING_DIRECTORY下会生成.repo目录。
$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r52

# 3.下载,同步。会将repo所维护的服务器上对应分支的所有project的.git仓库更新下载到本地并checkout代码到WORKING_DIRECTORY目录
$ repo sync #如果添加了openGapps 需要执行:git lfs pull 同步一下大文件; 如果后面执行异常,到vendor/opengapps/sources/all路径下执行git ifs pull

整个过程很久,建议晚上挂着,空出至少150G以上内存

注:如果想添加Google全家桶,可以https://github.com/opengapps/aosp_build将这个项目引用到aosp中,原生的aosp界面实在太丑了

2.2下载驱动

到官网下载Nexus 6P binaries for Android 8.1.0 (opm7.181205.001)
对应的Vendor image 和 高通的设备驱动
https://developers.google.com/android/drivers#angleropm7.181205.001

分别解压到AOSP根目录,执行脚本后一个个确认,最后一步输入"I ACCEPT"。最后会生成一个ventor文件夹里面就是驱动代码;

2.3下载内核

参考这篇文章:https://www.jianshu.com/p/a51f4b9e8d22
cd aosp/kernel/msm
export ARCH=arm64
export CROSS_COMPILE=/home/konga/bin/aarch64-linux-android-4.9/bin/aarch64-linux-android-
make angler_defconfig
make
编译完后把arch/arm64/boot/Image.gz-dtb 复制到aosp/device/huawei/angler-kernel/
cp arch/arm64/boot/Image.gz-dtb ../../device/huawei/angler-kernel/

或者导出如下变量:
export TARGET_PREBUILT_KERNEL=$KERNEL_DIR/arch/arm64/boot/Image.gz-dtb

2.4编译源码

$source build/envsetup.sh
$lunch #选择28. aosp_angler-userdebug
$make -j10 #make -j10 ANDROID_COMPILE_WITH_JACK=false 说明:jack-server编译最好选择关闭  不然编译会出现莫名的问题,虽然它可以提速  [https://www.jianshu.com/p/dc85817b78f8](https://www.jianshu.com/p/dc85817b78f8)

或者使用
make 'ANDROID_COMPILE_WITH_JACK:=false' #禁用Jack吧

如果是需要发布版本和签名,请看使用make dist编译正式版;

3.烧录设备

3.1先下载官方镜像(需要获取引导启动镜像)

先从https://developers.google.com/android/images#bullhead 下载Nexus6P出厂镜像:8.1.0 (opm7.181205.001, Dec 2018),一定要校验has256值防止文件不完整,主要提取bootloader-angler-angler-03.84.img 、radio-angler-angler-03.88.img这两个文件

3.2 Fastboot烧录

插入Nexus 6p设备

#重启进入bootloader
$adb reboot bootloader
$fastboot flash bootloader bootloader-angler-angler-03.84.img
$fastboot flash radio radio-angler-angler-03.88.img
#烧录驱动
$fastboot flash vendor vendor.img
#烧录内核
$fastboot flash boot boot.img
$fastboot flash recovery recovery.img
#烧录安卓系统   加-S 100M 防止FAILED(remote:data too large)情况
$fastboot flash -S 100M system system.img
$fastboot reboot-bootloader


你可能感兴趣的:(AOSP源码下载和编译)