android源碼編譯以及查看

Created: October 12, 2021 1:14 PM

我使用的是 ubuntu20.04 64位系統(tǒng)。

源碼下載

  • 安裝repo
sudo apt install repo -y
sudo apt-get install curl -y

//配置環(huán)境變量
export PATH=~/.local/bin:$PATH

//如果上面安裝不了, 那么自己下載安裝
curl https://https://storage.googleapis.com/git-repo-downloads/repo > ~/.local/bin/repo
chmod a+x ~/.local/bin/repo
  • 配置源

repo的運行過程會嘗試訪問官方的git源更新自己,如果想使用tuna的鏡像進行更新, 可以將如下內容復制到你的~/.bashrc里:

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

并編輯 ~/.local/bin/repo文件,找到REPO_URL這一行,然后將其內容修改(注釋并增加一行)為:

REPO_URL='https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'


echo "export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'" >> ~/.bashrc

cd ~/document
mkdir android8source
cd android8source
  • 初始化倉庫
mkdir ~/tabl
cd ~/tabl
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
cd ~/tabl/.repo/manifests/
git branch -a

同步8.1分支

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.1.0_r2

同步源碼到本地

cd ~/document/android8source
repo sync

然后慢慢等待,中途可能會出現(xiàn)各種問題,例如repo的問題,一般網(wǎng)絡上都會找到解決方案。

要確保有足夠的磁盤空間,一般來說200g的磁盤空間足夠了。

構建

構建需要openjdk, 本人是自行安裝的oracle java,所以還需要安裝openjdk并自行配置環(huán)境變量。

  • 安裝各種依賴
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib -y
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386 -y
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache
sudo apt install make make-guile -y
sudo apt-get install tofrodos -y
sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386

有的依賴會安裝不了, 這時候需要更改源, 或者到網(wǎng)絡上尋找其他解決方案。

  • 編譯

修改prebuilts/sdk/tools/jack-admin文件,找到文件中的這一行:
JACK_SERVER_COMMAND=”java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=LAUNCHER_NAME”

在 -cp 前加上-Xmx4096m (4096盡量為RAM也就是運行內存或者說swap的一半大小,其實看不見括號這句話也沒關系的)如:
JACK_SERVER_COMMAND=”java -Djava.io.tmpdir=LAUNCHER_NAME”

cd ~/document/android8source/prebuilts/sdk/tools/

./jack-admin install-serve jack-launcher.jar jack-server-4.11.ALPHA.jar

cd ~/android8source/

source build/envsetup.sh

lunch aosp_arm64-eng

make -j8

一般順利的話 幾個小時之后就編譯成功了。如果報錯就需要尋找解決方案。 例如我在編譯的時候就報了jack-server相關的問題,最后重新移除,安裝,啟動就好了。

androidstudio查看源碼

我們在androidstudio開發(fā)的時候,下載源碼后,查看只能看到java層的源碼,查看c或c++的源碼有點不太方便。這時候我們可以自己編譯然后導入。

前提是已經(jīng)進行過一次完成的編譯,不編譯是無法進行源碼導入的

cd ~/document/android8source
mmm development/tools/idegen

這里會報 mmm命令找不到, 我們需要先執(zhí)行如下命令:

source ~/document/android8source/build/envsetup.sh

然后再執(zhí)行

cd ~/docuemnt/android8source
mmm development/tools/idegen

成功后再執(zhí)行

sudo sh ~/document/android8source/development/tools/idegen/idegen.sh

執(zhí)行后會生成這幾個文件 android.iws, android.ipr, android.iml

然后使用androidstudio file→open 選擇android.ipr文件即可

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容