LineageOS 源碼編譯

基礎(chǔ)環(huán)境

主機(jī): windows 10
虛機(jī): ubuntu 20.04 LTS (4 C 12G M 300G D)
手機(jī):  Mi 10 Lite 5G / Redmi K40

虛機(jī)配置有點(diǎn)高,否者會(huì)編譯的非常慢偏友,硬盤和內(nèi)存不足導(dǎo)致失敗了很多次,最后將 硬盤更新到 300G 之后編譯成功????

環(huán)境安裝

# 安裝基礎(chǔ)庫(kù)
sudo apt install -y bc bison build-essential ccache curl flex g++-multilib gcc-multilib git gnupg gperf lib32ncurses5-dev lib32readline-dev lib32z1-dev liblz4-tool libncurses5 libncurses-dev libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc zip zlib1g-dev

# 安裝其他依賴庫(kù)
sudo apt install -y imagemagick libbz2-dev libssl-dev lzma ncftp bash-completion

# 安裝 python
sudo apt install -y python

代碼同步

基于清華源同步全量 LineageOS 代碼

  • 配置 repo
# 下載 repo
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

# 配置環(huán)境變量
cat >> ~/.bashrc <<_EOF
 
# set PATH so it includes user's private bin if it exists
if [ -d "\$HOME/bin" ] ; then
    PATH="\$HOME/bin:\$PATH"
fi
_EOF

# 使能環(huán)境變量
source ~/.bashrc
  • 初始化 git / repo 版本信息
# 創(chuàng)建工作目錄
mkdir -p lineageos
cd lineageos

# 查看版本
git --git-dir=.repo/manifests/.git/ branch -a 

# 初始化版本
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/LineageOS/android.git -b lineage-19.1
  • 修改 repo 同步地址

修改 .repo/manifests/default.xml 文件

<!-- 添加 tuna 源 -->
-  <remote  name="github"
-           fetch=".."
-           review="review.lineageos.org" />
+  <remote  name="github"
+           fetch="https://github.com/" />
+
+ <remote  name="lineage"
+           fetch="https://mirrors.tuna.tsinghua.edu.cn/git/lineageOS/"
+           review="review.lineageos.org" />

<!-- 修改 aosp 源地址 -->
-  <remote  name="aosp"
-           fetch="https://android.googlesource.com"
+  <remote  name="aosp"
+           fetch="https://mirrors.tuna.tsinghua.edu.cn/git/AOSP"

<!-- 修改默認(rèn) git 地址 -->
-  <default revision="..."
-           remote="github"
+          remote="lineage"
  • 同步代碼
repo sync -j4 -c --no-clone-bundle

再次同步時(shí)使用 repo sync --no-clone-bundle

編譯

  • 添加 ccache 支持

添加緩存加速編譯的作用, 可以使用 ccache -o compression=true 命令來(lái)壓縮 ccache

echo export USE_CCACHE=1 >> ~/.bashrc
prebuilts/misc/linux-x86/ccache/ccache -M 50G
  • 選擇設(shè)備
source build/envsetup.sh

# 小米 Redmi K40
breakfast alioth
# 小米 Mi 10 Lite 5G
breakfast monet

# 鏈接手機(jī)到 ubuntu 系統(tǒng)
./extract-files.sh

先安裝 adbfastboot 工具, 下載 Google工具包

# 下載工具包
wget https://dl.google.com/android/repository/platform-tools-latest-linux.zip

# 解壓工具包
unzip platform-tools-latest-linux.zip -d ~

# 配置環(huán)境變量
cat >> ~/.profile <<_EOF

if [ -d "$HOME/platform-tools" ] ; then
    PATH="$HOME/platform-tools:$PATH"
fi
_EOF

# 使能變量
source ~/.profile

也同樣可以從線刷包中提取相關(guān)的文件,具體操作如下:

# 創(chuàng)建基礎(chǔ)目錄
mkdir /srv/workspace/alioth-signed

# 下載
wget https://mirrors.tuna.tsinghua.edu.cn/lineage-rom/full/alioth/20220730/lineage-19.1-20220730-nightly-alioth-signed.zip

# 解壓包
unzip path/to/lineage-*.zip 

# 解包
payload_dumper payload.bin

# mount system 鏡像
mkdir system/
sudo mount system.img system/

# 從 system 鏡像中抽取必要內(nèi)容
./extract-files.sh /srv/workspace/alioth-signed

安裝 payload_dumper 工具包

# 安裝 payload_dumper 工具包
pip install --user payload_dumper
或
git clone https://github.com/vm03/payload_dumper

# 解包
payload_dumper payload.bin

# 解部分內(nèi)容
payload_dumper --partitions boot,dtbo,vendor payload.bin

# 打 patch 包
payload_dumper --diff payload.bin
  • 多線程編譯
croot

# 編譯 Redmi K40
brunch alioth

# 編譯  Mi 10 Lite 5G
brunch monet

cd $OUT 進(jìn)入到 $OUT 目錄下存在 lineage-19.1-20220804-UNOFFICIAL-alioth.zip

執(zhí)行 brunch 命令時(shí)會(huì)自動(dòng)先執(zhí)行 breakfast 命令享怀,因此可以直接執(zhí)行 brunch 命令
breakfast 命令實(shí)際會(huì)同步 linux 內(nèi)核代碼等邏輯,此處主要是在 local_manifest.xml 中進(jìn)行配置的趟咆,因此同樣需要將其配置改為 清華源 即可快速同步下來(lái)

參考 lineageOS 源代碼鏡像使用幫助

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末添瓷,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子值纱,更是在濱河造成了極大的恐慌鳞贷,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,888評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件虐唠,死亡現(xiàn)場(chǎng)離奇詭異搀愧,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)疆偿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門咱筛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人杆故,你說(shuō)我怎么就攤上這事迅箩。” “怎么了反番?”我有些...
    開(kāi)封第一講書人閱讀 168,386評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵沙热,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我罢缸,道長(zhǎng)篙贸,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,726評(píng)論 1 297
  • 正文 為了忘掉前任枫疆,我火速辦了婚禮爵川,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘息楔。我一直安慰自己寝贡,他們只是感情好扒披,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,729評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著圃泡,像睡著了一般碟案。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上颇蜡,一...
    開(kāi)封第一講書人閱讀 52,337評(píng)論 1 310
  • 那天价说,我揣著相機(jī)與錄音,去河邊找鬼风秤。 笑死鳖目,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缤弦。 我是一名探鬼主播领迈,決...
    沈念sama閱讀 40,902評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼碍沐!你這毒婦竟也來(lái)了狸捅?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,807評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤累提,失蹤者是張志新(化名)和其女友劉穎薪贫,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體刻恭,經(jīng)...
    沈念sama閱讀 46,349評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瞧省,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,439評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鳍贾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鞍匾。...
    茶點(diǎn)故事閱讀 40,567評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖骑科,靈堂內(nèi)的尸體忽然破棺而出橡淑,到底是詐尸還是另有隱情,我是刑警寧澤咆爽,帶...
    沈念sama閱讀 36,242評(píng)論 5 350
  • 正文 年R本政府宣布梁棠,位于F島的核電站,受9級(jí)特大地震影響斗埂,放射性物質(zhì)發(fā)生泄漏符糊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,933評(píng)論 3 334
  • 文/蒙蒙 一呛凶、第九天 我趴在偏房一處隱蔽的房頂上張望男娄。 院中可真熱鬧,春花似錦、人聲如沸模闲。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,420評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)尸折。三九已至啰脚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間实夹,已是汗流浹背拣播。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,531評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留收擦,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,995評(píng)論 3 377
  • 正文 我出身青樓谍倦,卻偏偏與公主長(zhǎng)得像塞赂,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子昼蛀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,585評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容