最近跟朋友組了個(gè)局,一起學(xué)習(xí)framework相關(guān)的源碼。學(xué)習(xí)源碼,首先就是要下載,編譯源碼啦。恰巧Android10的源碼在本周剛剛發(fā)布,所以索性就拿它來進(jìn)行framework的研究" />

国产成人精品无码青草_亚洲国产美女精品久久久久∴_欧美人与鲁交大毛片免费_国产果冻豆传媒麻婆精东

15158846557 在線咨詢 在線咨詢
15158846557 在線咨詢
所在位置: 首頁 > 營銷資訊 > 網(wǎng)站運(yùn)營 > 啟航!Android10源碼編譯之深入折騰Vmware虛擬機(jī)

啟航!Android10源碼編譯之深入折騰Vmware虛擬機(jī)

時(shí)間:2023-06-29 19:36:01 | 來源:網(wǎng)站運(yùn)營

時(shí)間:2023-06-29 19:36:01 來源:網(wǎng)站運(yùn)營

啟航!Android10源碼編譯之深入折騰Vmware虛擬機(jī):
前言
最近跟朋友組了個(gè)局,一起學(xué)習(xí)framework相關(guān)的源碼。學(xué)習(xí)源碼,首先就是要下載,編譯源碼啦。恰巧Android10的源碼在本周剛剛發(fā)布,所以索性就拿它來進(jìn)行framework的研究學(xué)習(xí)

因?yàn)槲夷壳笆褂玫氖荕ac的本子,但是在Mac上搭建環(huán)境進(jìn)行源碼下載和編譯會(huì)出現(xiàn)各種問題,所以使用Wmware加載ubanbu系統(tǒng)的方式來進(jìn)行下載和編譯。雖然說解決了一部分問題,但是也產(chǎn)生了新的問題,也算是填了不少的坑

這篇文章主要是記錄下遇到的坑以及填坑的過程,給其他也有著相同問題的小伙伴把路鋪平,盡快下載并編譯起源碼,開始源碼學(xué)習(xí)

正文

準(zhǔn)備階段

在源碼下載和編譯的過程中,真的是感覺各種勸退。我先說說我準(zhǔn)備什么硬件和軟件吧

準(zhǔn)備清單

源碼下載

一切準(zhǔn)備就緒(默認(rèn)認(rèn)為你已經(jīng)在虛擬機(jī)中跑起了ubantu系統(tǒng)),就可以搭建編譯和下載的環(huán)境了,這個(gè)直接按章Google官方文檔去配置相關(guān)環(huán)境就ok了

配置完環(huán)境,就可以準(zhǔn)備下載源碼了,這里我們需要下載的分支是android_10.0.0-r2,因?yàn)閲鴥?nèi)網(wǎng)絡(luò)環(huán)境原因,這里使用清華源替換Google的下載源進(jìn)行下載,具體看這篇文章,寫的很詳細(xì)了,不再重復(fù)贅述

還需要提醒的一點(diǎn)是,整個(gè)AOSP的源碼大概需要100G左右的磁盤空間,如果加上編譯,至少需要300G,所以在創(chuàng)建虛擬機(jī)的時(shí)候要提前分配好足夠的磁盤空間,物理磁盤空間也必須保證足夠,這就是準(zhǔn)備清單里為什么有固態(tài)硬盤這一項(xiàng)。當(dāng)然內(nèi)存空間足夠的可以忽略。

還有一點(diǎn),源碼下載和編譯的環(huán)境是必須區(qū)分的內(nèi)存分區(qū)格式,Mac上下載和編譯出現(xiàn)各種問題也是跟這一點(diǎn)有很大關(guān)系

重要的指令

$ git clone https://aosp.tuna.tsinghua.edu.cn/git-repo$ repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-11.0.0_r8$ repo sync接下來就是等著下載完就OK了

源碼編譯

恭喜進(jìn)行到第三步,你已經(jīng)超越了90%的人--因?yàn)榇蠖鄶?shù)卡在了第一步

編譯教程直接參考Google的這篇,基本上問題不大,如果想再電腦模擬器上運(yùn)行,最好執(zhí)行lunch后選擇x86的架構(gòu)來編譯

因?yàn)樵蹅兪窃谔摂M機(jī)環(huán)境下運(yùn)行的,所以我在這一步遇到的最大的問題只有一個(gè),就是內(nèi)存不足導(dǎo)致進(jìn)程被kill,甚至有一次我編譯了90%了,因?yàn)閮?nèi)存不足導(dǎo)致進(jìn)程被kill了,真是欲哭無淚...

在不增加現(xiàn)有硬件的情況下,我采用了兩個(gè)方法

方法一,給虛擬機(jī)分配更多的內(nèi)存空間和CPU核心數(shù)(為了加快編譯)
我Mac主機(jī)16G內(nèi)存,給虛擬機(jī)分了12G,你們可以看著辦,反正越多越好

方法二,增加SWAP空間大小
這個(gè)具體的原理還沒有深入去研究,反正參考這篇文章解決了。需要注意的是,增大2048MB是遠(yuǎn)遠(yuǎn)不夠的(多次編譯失敗的經(jīng)驗(yàn)...),我唯一成功的一次,直接增大到了8192MB

編譯過程中也可以另開一個(gè)terminal窗口,通過top指令查看實(shí)時(shí)的內(nèi)存使用情況

接下來的編譯時(shí)間大概需要3-8個(gè)小時(shí),根據(jù)硬件的不同,可以去休息下了...

運(yùn)行編譯鏡像

到了這一步基本上就算是完成了,那來運(yùn)行下我們編譯的鏡像吧!按照官方教程咱們現(xiàn)在模擬器上跑跑,直接運(yùn)行emulator! 然后過了好久...好久...好久...我發(fā)現(xiàn)就是運(yùn)行不起來啊

既然直接使用指令運(yùn)行不起來,那咱們換個(gè)思路,來個(gè)偷梁換柱!

打開咱們熟悉的工具AS,創(chuàng)建一個(gè)AVD虛擬機(jī),使用官方提供的Android10的鏡像。創(chuàng)建完畢后找到sdk所在的相關(guān)目錄sdk/system-images/android-P/google_apis/x86,然后找到我們編譯好的鏡像的目錄,大概在./out/target/product這個(gè)目錄中,也是找到編譯版本的目錄,我參考了這篇文章,找到編譯好的核心文件

把這四個(gè)文件替換創(chuàng)建AVD模擬器的相關(guān)目錄去,然后通過AS運(yùn)行模擬器,不出意外的話,你就可以看到編譯好的Android10運(yùn)行起來了。

恭喜你,完成所有下載和編譯工作,但是framework的學(xué)習(xí)之路才剛剛開始

一起,繼續(xù)加油吧!

后記
下載和編譯的過程中確實(shí)遇到了許多問題,感謝路遙大哥的相關(guān)指導(dǎo),和阿拉神農(nóng)(鄧?yán)蠋煟┨峁┑膶W(xué)習(xí)社群神農(nóng)班,以及一起學(xué)習(xí)的朋友提供的寶貴建議

最最重要的一點(diǎn)是,遇到困難不要放棄,攻克它,拿下下,然后收獲屬于自己的經(jīng)驗(yàn)

最后的最后
覺得不錯(cuò)?不妨點(diǎn)個(gè)贊,然后關(guān)注一下?

關(guān)鍵詞:折騰,深入,虛擬,編譯

74
73
25
news

版權(quán)所有? 億企邦 1997-2025 保留一切法律許可權(quán)利。

為了最佳展示效果,本站不支持IE9及以下版本的瀏覽器,建議您使用谷歌Chrome瀏覽器。 點(diǎn)擊下載Chrome瀏覽器
關(guān)閉