Ubuntu20.04.06/Deepin2.09系統(tǒng)版本配置Android R源碼下載方式
針對Deepin系統(tǒng),有些環(huán)境配置是存在的,在安裝系統(tǒng)的時候,就已經(jīng)安裝好了,例如git,但是針對Ubuntu系統(tǒng),基本上還是零狀態(tài),所以我們以Ubuntu系統(tǒng)為例,如遇到Deepin系統(tǒng)需要特別注意的,再進行標(biāo)注;
AOSP 源碼下載環(huán)境配置
1.jdk配置(使用的是jdk 8)
安裝 jdk
dupz@dupz-pc:~$ sudo apt-get install openjdk-8-jdk
查看jdk版本信息
dupz@dupz-pc:~$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b01-1~deb9u1-b01)
OpenJDK 64-Bit Server VM (build 25.212-b01, mixed mode)
2.git配置
如果沒有安裝git,則通過apt命令安裝git
dupz@dupz-pc:~$ sudo apt install git
查看Ubuntu有沒有安裝git
dupz@dupz-pc:~$ git --version
給git設(shè)置用戶名和郵箱,用戶名和郵箱隨意設(shè)置
dupz@dupz-pc:~$ git config --global user.email "you@example.com"
dupz@dupz-pc:~$ git config --global user.name "Your Name"
查看設(shè)置的用戶名和郵箱是否生效
dupz@dupz-pc:~$ git config --global user.name
dupz@dupz-pc:~$ git config --global user.email
3.Python配置
安裝python
dupz@dupz-pc:~$ sudo apt-get install python
這里需要注意一下,從ubuntu 18之后(同樣也包括deepin20.9),python默認(rèn)軟連接著python2,即使已經(jīng)安裝了python3,但是也無法使用,而在后續(xù)使用repo init和sync代碼的時候,會提示repo指令錯誤,其實就是因為引用的python版本不正確導(dǎo)致的;
需要手動的配置一下python的軟連接
# 進入python指令存放路徑
dupz@dupz-pc:~$ cd /usr/bin/
# 查看和python相關(guān)的文件
dupz@dupz-pc:/usr/bin$ ls -l | grep python
-rwxr-xr-x 1 root root ? ? ? ? 1056 Mar? 4? 2019 dh_python2
lrwxrwxrwx 1 root root ? ? ? ? ? 23 Oct? 9? 2022 pdb2.7 -> ../lib/python2.7/pdb.py
lrwxrwxrwx 1 root root ? ? ? ? ? 23 Nov? 1? 2022 pdb3.7 -> ../lib/python3.7/pdb.py
lrwxrwxrwx 1 root root ? ? ? ? ? 31 Mar 26? 2019 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root root ? ? ? ? ? 16 Sep? 9 12:42 python -> python2
lrwxrwxrwx 1 root root ? ? ? ? ?? 9 Mar? 4? 2019 python2 -> python2.7
-rwxr-xr-x 1 root root ? ?? 3423088 Oct? 9? 2022 python2.7
lrwxrwxrwx 1 root root ? ? ? ? ?? 9 Mar 26? 2019 python3 -> python3.7
-rwxr-xr-x 2 root root ? ?? 4877856 Nov? 1? 2022 python3.7
-rwxr-xr-x 2 root root ? ?? 4877856 Nov? 1? 2022 python3.7m
lrwxrwxrwx 1 root root ? ? ? ? ? 10 Mar 26? 2019 python3m -> python3.7m
lrwxrwxrwx 1 root root ? ? ? ? ? 29 Mar? 4? 2019 pyversions -> ../share/python/pyversions.py
手動更改python的軟連接
# 將python軟連接的綁定修改為python3
dupz@dupz-pc:/usr/bin$ sudo ln -s python3 python
-rwxr-xr-x 1 root root ? ? ? ? 1056 Mar? 4? 2019 dh_python2
lrwxrwxrwx 1 root root ? ? ? ? ? 23 Oct? 9? 2022 pdb2.7 -> ../lib/python2.7/pdb.py
lrwxrwxrwx 1 root root ? ? ? ? ? 23 Nov? 1? 2022 pdb3.7 -> ../lib/python3.7/pdb.py
lrwxrwxrwx 1 root root ? ? ? ? ? 31 Mar 26? 2019 py3versions -> ../share/python3/py3versions.py
lrwxrwxrwx 1 root root ? ? ? ? ? 16 Sep? 9 12:42 python -> /usr/bin/python3
lrwxrwxrwx 1 root root ? ? ? ? ?? 9 Mar? 4? 2019 python2 -> python2.7
-rwxr-xr-x 1 root root ? ?? 3423088 Oct? 9? 2022 python2.7
lrwxrwxrwx 1 root root ? ? ? ? ?? 9 Mar 26? 2019 python3 -> python3.7
-rwxr-xr-x 2 root root ? ?? 4877856 Nov? 1? 2022 python3.7
-rwxr-xr-x 2 root root ? ?? 4877856 Nov? 1? 2022 python3.7m
lrwxrwxrwx 1 root root ? ? ? ? ? 10 Mar 26? 2019 python3m -> python3.7m
lrwxrwxrwx 1 root root ? ? ? ? ?? 7 Mar? 4? 2019 python_bat -> python2
lrwxrwxrwx 1 root root ? ? ? ? ? 29 Mar? 4? 2019 pyversions -> ../share/python/pyversions.py
4.安裝curl
通過apt命令安裝curl
dupz@dupz-pc:~$ sudo apt install curl
5.搭建repo
# 進入主目錄
dupz@dupz-pc:~$ cd ~
# 創(chuàng)建bin文件夾
dupz@dupz-pc:~$ mkdir bin
# 將bin文件夾加入系統(tǒng)路徑中
dupz@dupz-pc:~$ PATH=~/bin:$PATH
# 清華aosp
dupz@dupz-pc:~$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
dupz@dupz-pc:~$ chmod a+x ~/bin/repo
這里推薦直接使用清華源的repo,一般的工作環(huán)境無法連接google,使用google的repo可能后續(xù)會有一些問題;
6.修改repo的源鏈接
打開bin文件夾下的repo文件
dupz@dupz-pc:~$ gedit bin/repo
更換清華鏡像站下載鏈接
# 原先的鏡像地址
REPO_URL = 'https://gerrit.googlesource.com/git-repo'
# 更換為清華源
REPO_URL = 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
7.更新.bashrc文件
dupz@dupz-pc:~$ gedit .bashrc
同時還需要在用戶目錄下的 .bashrc文件中加入以下一行,最后保存;
# 這一句的做用是為了去除全部本地化的設(shè)置,讓命令能正確執(zhí)行
export LC_ALL=C
最后還需要source命令使其生效;
dupz@dupz-pc:~$ source .bashrc
上述下載aosp R的環(huán)境配置就完成了;
AOSP 源碼編譯環(huán)境配置
1.創(chuàng)建AOSP源碼目錄
dupz@dupz-pc:~$ mkdir code_r
dupz@dupz-pc:~$ cd code_r
# 初始化倉庫
dupz@dupz-pc:~/code_r$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-11.0.0_r36
# 同步源碼樹
dupz@dupz-pc:~/code_r$ repo sync
android-11.0.0_r36這個是需要用戶自己去配置,配置自己需要的分支;
2.配置AOSP編譯環(huán)境
這里面也是參考別人書寫的博客,我將其中的apt-get項都取過來了,后續(xù)在配置的時候,最好兩組都執(zhí)行一次,保證環(huán)境的完整性;
第一組
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 libncurses5
第二組
一般情況下,ubuntu 16版本需要配置的:
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
針對ubuntu 20版本還需要新增兩項配置:
sudo apt-get install python libncurses5
上述的兩組,絕大部分都是重復(fù)的,所以看情況而定吧。
3.AOSP 源碼編譯
dupz@dupz-pc:~/code_r$ source build/envsetup.sh
# 一般通過emulator指令啟動Android模擬器,選擇的都是這個lunch = aosp_x86_64-eng
dupz@dupz-pc:~/code_r$ lunch aosp_x86_64-eng
dupz@dupz-pc:~/code_r$ make -j8
Android Studio 導(dǎo)入 AOSP源碼
這個過程,需要保證處于可編譯狀態(tài),即:
dupz@dupz-pc:~/code_r$ source build/envsetup.sh
# 一般通過emulator指令啟動Android模擬器,選擇的都是這個lunch = aosp_x86_64-eng
dupz@dupz-pc:~/code_r$ lunch aosp_x86_64-eng
1.編譯idegen
編譯idegen,生成idegen.jar
mmm development/tools/idegen/
2.執(zhí)行idegen.sh
執(zhí)行idegen.sh,生成 android.ipr 和 android.iml
development/tools/idegen/idegen.sh
3.AS 導(dǎo)入 source code
File -> Open,選擇源碼目錄剛剛生成的android.ipr就可以導(dǎo)入了,這個過程第一次是比較慢的,大家需要耐心等待;
Ubuntu 模擬器
在ubuntu中,Android的模擬器有可能會出現(xiàn)閃退情況,這個大概是因為ubuntu安裝的顯卡驅(qū)動和設(shè)備主機的顯卡驅(qū)動不匹配導(dǎo)致的,這個需要自己根據(jù)實際的情況處理,更新一下驅(qū)動即可;