1.开篇提醒
本文全篇使用普通用户账户($),当然管理用户也是可以的,不受影响
1. 工具下载
repo工具的下载与源码的初始化
1. 首先安装需要的依赖
sudo apt install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf imagemagick lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5-dev libsdl1.2-dev libssl-dev libwxgtk3.0-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev
2. 下载repo工具
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
3. 建立工作目录并且进入工作目录
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
注意: "WORKING_DIRECTORY"可自行设置名称,作为工作目录
4. 初始化仓库
repo init -u https://github.com/LineageOS/android.git -b lineage-16.0
注意:部分仓库例如Lineage_framework_base同步的时候会出现bundle错误,
这时候可以使用命令repo sync --no-clone-bundle进行同步就没有问题了
5. 同步源码树:
repo sync
注意:务必确认在你设置好的工作目录中
2. 设置缓存
非必须,但是可以加速以后的编译速度,不用的话直接跳到第三大块
命令行运行,并且将它写入~/bashrc
中
export USE_CCACHE=1
然后,设置ccache最大空间使用量:
ccache -M 50G
注意:
其中50G对应50GB的缓存。这需要运行一次。
如果只为一台设备构建,那么25GB-50GB就可以了。
如果计划为多个不共享相同内核源的设备构建,请设置75GB-100GB。此空间将永久占用您的驱动器,因此请考虑到这一点
还可以启用可选ccache压缩。虽然这可能会导致性能略有下降,但它会增加适合缓存的文件数量
export CCACHE_COMPRESS=1
3. 配置参数
1. 配置jack内存使用量:
export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
注意:这里我们使用4G内存
4. 开始编译
我的手机为红米2,codename为wt88047,具体可以去LineageOS官网进行查询
1. 准备具体设备的代码(例如驱动,内核之类)
source build/envsetup.sh
breakfast your device codename
注意:确保在你的源码目录内
2. 添加vendor:
具体"device brand"可以去Github-Themuppets查询
<project name="TheMuppets/proprietary_vendor_your device brand" path="vendor/your device brand" remote="github" />
如果需要root权限:
(每次都要运行)export WITH_SU=true
3. 开始编译
make bison
WIP
brunch your device codename
并且编译64-bit bison
5. 解决flex报错问题
echo "export LANG=C" >> ~/.bashrc
source ~/.bashrc
6. 编译完毕
cd $OUT
在那里你可以找到所有创建的文件。更感兴趣的两个文件是:
recovery.img 恢复映像文件
lineage-15.1-20180827-UNOFFICIAL-bullhead.zip LineageOS安装程序包。
教程结束