Android 编译说明
硬件
- 环境:ubuntu 16.04 64位
- CPU:2个CPU,2核
- 内存:8G
- swap:8G
- 硬盘:300G(源码占45G,编译后总共200G左右)
系统环境
1. 依赖库
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev g++-multilib tofrodos python-markdown libxml2-utils xsltproc libssl-dev cmake
2. JDK8
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
编译
1. 目标
- ARM:msm8953
- Android版本:Android 9.0.0
- 内核版本:4.9
- 交叉编译器:
2. 编译脚本
#!/bin/bash
###
# @Description: 编译Android9.0 源码
# @Version: 1.0
# @Autor: lhgcs
# @Date: 2020-07-13 14:04:12
# @LastEditors: lhgcs
# @LastEditTime: 2020-07-13 14:07:56
# @FilePath: /kernel/home/xiaobao/Desktop/build.sh
###
# 源码目录
SC60_SDK="SC60_SC600_Android9.0.0_kernel4.9_r029"
# 分支名称
SC60_branch="SC60_SC600"
###
# @description: 查看分支
# @param {type}
# @return:
###
function check_branch() {
local branch=$(git branch 2>/dev/null | grep "^\*" | sed -e "s/^\*\ //")
if [ "${branch}" = "$1" ];then
return 0
fi
return 1
}
echo "******* start work *******"
cd ${SC60_SDK}
# 切换到SC60_SC600分支
check_branch ${SC60_branch}
if [ $? -ne 0 ];then
echo "checkout"
git checkout ${SC60_branch}
fi
check_branch ${SC60_branch}
if [ $? -ne 0 ];then
echo "can not checkout ${SC60_branch}"
exit 1
fi
# 初始化编译环境
source build/envsetup.sh
# 编译目标msm8953
lunch msm8953_64-userdebug
# 编译
make clean
make -j12
# 最快3个小时
echo "******* end work *******"
exit 0
备注
可能因为内存+swap分区过小导致编译失败
作者 [@lhgcs]
2020 年 07月 07日