Android 源碼下載與編譯

環境 ubuntu 18

構建編譯環境

repo 下載環境

sudo apt-get install git
sudo apt-get install curl

配置git
git config --global user.name “xxx”
git config --global user.email “[email protected]

編譯環境

安裝 openjdk8
sudo apt-get install openjdk-8-jdk
如果ubuntu版本低
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
sudo apt-get install openjdk-8-jdk
sudo update-alternatives --config java
sudo update-alternatives --config java

ubuntu 14
sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g+±multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

ubuntu18
軟件裝多了沒事,裝少了麻煩
sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g+±multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-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
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-get install git-lfs

下載

下載repo

Repo 命令參考文檔

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
複製 export REPO_URL=‘https://mirrors.tuna.tsinghua.edu.cn/git/git-repo’ 到 ~/.bashrc
chmod a+x ~/bin/repo

init 清單文件

repo init
-p linux //platform
–depth 1 //不需要看以前的歷史記錄
-u https://xxx/platform/manifest
-b android-xxx
-m xxx.xml //默認 default.xml

如果提示沒有python 就裝一個
如果提示-m 的文件不存在可以把.repo/manifests/default.xml 改名爲xxx

repo init \
-p linux \
--depth 1 \
-u git://mirror.core.archermind.com/android/aosp/platform/manifest \
-b android-9.0.0_r55 \
-m android-9.0.0_r55.xml

查看分支
cd .repo/manifests
git branch -a | cut -d / -f 3

同步到本地倉庫

repo sync
–nmu //使用現有清單,不更新清單
-m xxx.xml //默認 default.xml
-c //只更新當前分支
-f //如果sync失敗,繼續同步
-n // 遠程更新到.repo
–prune //刪除遠程不再存在的引用
–no-tags //不獲取標籤
–no-clone-bundle //不使用clone.bundle
–force-sync //如果文件目錄有差異,強制覆蓋掉

本地倉庫到本地文件

repo sync
–nmu //使用現有清單,不更新清單
-m xxx.xml //默認 default.xml
-c //只更新當前分支
-f //如果sync失敗,繼續同步
-l // .repo 更新到本地
–prune //刪除遠程不再存在的引用
–no-tags //不獲取標籤
–no-clone-bundle //不使用clone.bundle
–force-sync //如果文件目錄有差異,強制覆蓋掉

repo sync \
-c \
-f \
-l \
--no-tags \
--no-clone-bundle \
--force-sync \
-m android-9.0.0_r55.xml

//如果本地代碼改動過
repo forall -c git reset --hard

編譯

source build/envsetup.sh
lunch xxx (如:aosp_arm64-eng)
make -j8

運行模擬器

emulator

如果報錯請百度

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章