当前选择环境
Ubantu18.04环境下编译android源码
安装vmware和ubuntu18.04搭建基础环境
编译安卓环境我推荐300G磁盘,repo拉出来的源码应该有30多个G编译啥啥啥的一会儿就100多G,我看有人直接跑200G,所以我为了保险直接300G,之前一个50G的磁盘1小时下载直接爆掉,扩容半天太麻烦了,还是直接跑300G保险保险
设置apt镜像
sudo su
apt install vim -y
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
文件内容
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
sudo apt-get update
安装android 需要的环境
环境搭建文档:
https://source.android.com/setup/build/initializing
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.安装repo
# 安装基础软件
sudo apt install git vim curl -y
# 配置git
git config --global user.name "your name"
git config --global user.email "XXX@XXX.com"
# 安装git-repo ,如果使用snap安装会很慢,所以直接用git拉
git clone https://aosp.tuna.tsinghua.edu.cn/git-repo/ git-repo
# 增加执行权限
chmod a+x git-repo/repo
# 修改镜像地址
vim ./git-repo/repo
# 按 /REPO_URL 进行查找然后修改,如图1
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
图1
2.down android源码
查看android版本:
https://source.android.com/setup/start/build-numbers
环境搭建文档:
https://source.android.com/setup/build/initializing
第一种repo直接同步
# 创建存放源码的文件目录
mkdir -p ~/android/source
# 初始化 执行版本的分支
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.2_r39
# 同步最新代码 -j线程
repo sync -j16 -f
第二种初始包同步
#第二种Android源码的方式是先下载个初始包,然后在执行repo sync进行代码同步即可
wget -c -t 0 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
tar -xvf aosp-latest.tar
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.2_r39
repo sync -j8
#在最终 同步完代码后,建议最后执行一次,同步基本不会出问题保证
repo sync
3.开始编译源码
1.初始化编译环境
# !!以下操作在一个terminal中发生
# 进入到android目录,执行初始化环境变量
chmod +x ./build/envsetup.sh
# 直接执行lunch,如果没有就需要使用apt进行安装即可
source ./build/envsetup.sh
2.设置编译目标
# aosp表示Android Open Source Project
# arm64表示是使用arm64 cpu的设备,eng表示engineer版本
lunch aosp_arm64-eng
3.执行编译
make -j8
4.启动镜像进行测试
QA
Q: build/core/ninja.mk:148: recipe for target ‘ninja_wrapper’ failed
A:Just replace your make by export LC_ALL=C make or put the export in your .bashrc
参考:http://www.programmersought.com/article/3467813162/
export LC_ALL=C make