android源码编译以及查看

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

你可能感兴趣的:(android源码编译以及查看)