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文件即可