编译 LineageOS 源码
资料来源如下
- 记录下编译LINEAGEOS的过程
- Ubuntu 16.04 LTS 下编译 LineageOS 源码
- Build for klte
编程环境
- Ubuntu16.04
导语
- 记录编译LineageOS 15.1的过程,备忘.
编译LineageOS源码
准备
硬件上
- 大于100G的硬盘剩余空间.SSD加速有奇效.
- 推荐i7+8G以上配置.(4代i7+16G+SSD编译时间2.5h参考)
软件
- google官方的教程是ubuntu版本为14.04,这里使用16.04
- 全翻墙的环境,下载的话源码大约20GB.
其他
- 足够耐心,相信大半问题都是网络导致的.
- 以下默认科学上网良好情况下进行.
编译环境
依赖组件
1
2
3sudo apt install -y bc bison build-essential curl flex gcc-multilib git git-core gnupg gperf g++-multilib libesd0-dev libgl1-mesa-dev liblz4-tool libncurses5-dev libreadline6-dev \
libsdl1.2-dev libwxgtk3.0-dev libxml2 libxml2-utils libx11-dev lib32ncurses5-dev lib32z1-dev lzop pngcrush schedtool squashfs-tools \
unzip xsltproc zip zlib1g-dev额外组件,可能会使用.
1
sudo apt install imagemagick libbz2-dev libssl-dev lzma ncftp bash-completion
LineageOS 14.1以上需要openjdk-8,这里是LineageOS 15.1.直接安装且不需要配置环境变量.
1
sudo apt install -y openjdk-8-jdk
- 安装完成后输入
java -version
,返回1.8
即正确安装.
- 安装完成后输入
安装repo
repo是google用来管理android源码的工具,基于git实现.android源码的代码量级,直接使用git…你可以试试…
repo实际上是个python2的脚本.
下载并设置环境变量
1
2
3
4
5mkdir -p ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
echo "export PATH=~/bin:$PATH" >> ~/.bashrc
source ~/.bashrcps
- 实在下载不下来,手动拖下来.
- 或者转清华源.
初始化 LineageOS 存储库
设置git
- 设置邮箱
1
2git config --global user.email "[email protected]"
git config --global user.name "Your Name" - 生成SSH key 添加到 github (LineageOS代码现在托管在github)
过程自行google吧.
- 设置邮箱
初始化存储
- 新建目录
1
mkdir -p ~/lineage-15.1
- 初始化LineageOS的repo
命令
1
repo init -u https://github.com/LineageOS/android.git -b lineage-15.1
Enable color display in this user account (y/N)? y
ubuntu16即使设置了终端使用http代理,但git还是需要手动设置才能通过代理访问网络(本地http代理端口为80)
1
git config --global http.proxy "localhost:80"
这里可能因为网络或其他原因失败,删除 lineage-15.1/.repo文件夹,重新初始化即可.
- 新建目录
同步源码
- 同步命令
1
repo sync -f -j4 -c --no-clone-bundle
- 注解:
-f : 强制
-j4 : 4线程,梯子良好情况下,更多线程无意义.
–no-clone-bundle : 忽略 clone 失败的信息 - 源码大约20G,国内的网络环境下需要很长一段时间了.
- 如果遇到同步失败,网络没问题情况下,执行
repo sync
即可,已经下载的数据不会再次重复.
- 同步命令
同步设备代码(这里是Galaxy S5 代号 klte )
命令
1
2source build/envsetup.sh
breakfast klte执行后会同步 S5 对应的设备文件,大约1G.
获取设备vendor文件
- 通过设备adb获取.
确保手机已经连接电脑,然后进入~/android/system/device/<厂商>/<设备>
目录。然后执行:1
./extract-files.sh
- 或者在TheMuppets获取.
- 手动下载添加.
- 或者在
LineageOS/.repo/local_manifests/roomservice.xml
最后添加1
<project name="TheMuppets/proprietary_vendor_samsung" path="vendor/samsung" remote="github"/>
- 执行
repo sync
会将三星的所有设备vendor文件同步到本地
- 通过设备adb获取.
编译
设置ccache,这里设置缓存50G
1
2
3sudo apt install ccache -y
echo export USE_CCACHE=1 >> ~/.bashrc
prebuilts/misc/linux-x86/ccache/ccache -M 50G设置 jack 使用更多的内存
- 命令
1
2export ANDROID_JACK_VM_ARGS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4G"
source ~/.bashrc - 有时需要重启jack
1
2out/host/linux-x86/bin/jack-admin kill-server
out/host/linux-x86/bin/jack-admin start-server
- 命令
编译变量
- 带root
export WITH_SU=true
- 设置编译变量
. ./build/envsetup.sh
- 带root
编译
- 命令
1
2croot
brunch klte - 之后是相当漫长的等待了.i7 16G SSD 2.5h.
- 命令
结束
在OUT文件夹中,有编译完成的ROM.
lineage-15.1-20180729-UNOFFICIAL-klte.zip
ROM的其他修改及优化,待续.