Created: October 12, 2021 1:14 PM
我使用的是 ubuntu20.04 64位系统。
源码下载
- 安装repo
sudo apt install repo -y
sudo apt-get install curl -y
//配置环境变量
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
然后慢慢等待,中途可能会出现各种问题,例如repo的问题,一般网络上都会找到解决方案。
要确保有足够的磁盘空间,一般来说200g的磁盘空间足够了。
构建
构建需要openjdk, 本人是自行安装的oracle java,所以还需要安装openjdk并自行配置环境变量。
- 安装各种依赖
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
有的依赖会安装不了, 这时候需要更改源, 或者到网络上寻找其他解决方案。
- 编译
修改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开发的时候,下载源码后,查看只能看到java层的源码,查看c或c++的源码有点不太方便。这时候我们可以自己编译然后导入。
前提是已经进行过一次完成的编译,不编译是无法进行源码导入的
cd ~/document/android8source
mmm development/tools/idegen
这里会报 mmm命令找不到, 我们需要先执行如下命令:
source ~/document/android8source/build/envsetup.sh
然后再执行
cd ~/docuemnt/android8source
mmm development/tools/idegen
成功后再执行
sudo sh ~/document/android8source/development/tools/idegen/idegen.sh
执行后会生成这几个文件 android.iws, android.ipr, android.iml
然后使用androidstudio file→open 选择android.ipr文件即可