Android 7.1 源码编译

一、下载源码

需要curl和git,没有需要装一下

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

git需要配置用户名和邮箱

git config --global user.name "xxxxxx"
git config --global user.email "[email protected]"

用curl下载一份repo文件,这是个python脚本

curl https://storage.googleapis.com/git-repo-downloads/repo > repo

移到/usr/bin/里去

sudo mv repo /usr/bin/

由于某些原因,直接下载源码是下不来的,需要使用大陆镜像。可以用清华的镜像
将REPO_URL配置到环境变量里

sudo gedit /etc/profile

添加

export REPO_URL=https://aosp.tuna.tsinghua.edu.cn/git-repo

终端输入如下使之生效

source /etc/profile

选择想要下载的版本,版本号可以在这里查看
https://source.android.com/source/build-numbers#source-code-tags-and-builds

比如需要下载7.1版
先建个文件夹

mkdir android-7.1

进文件夹初始化

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-7.1.1_r24

同步源码到本地,不加-f有可能报错

repo sync -f -j4

等着,大概3、40G

二、编译源码

1. 操作系统要求

Android版本 编译要求的Ubuntu最低版本
Android 6.0至AOSP master Ubuntu 14.04
Android 2.3.x至Android 5.x Ubuntu 12.04
Android 1.5至Android 2.2.x Ubuntu 10.04

2. JDK版本要求

Android版本 编译要求的JDK版本
AOSP的Android主线 OpenJDK 8
Android 5.x至android 6.0 OpenJDK 7
Android 2.3.x至Android 4.4.x Oracle JDK 6
Android 1.5至Android 2.2.x Oracle JDK 5

3. 依赖库

Ubuntu16.04中的依赖

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib flex bison gperf build-essential libncurses5-dev:i386 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev libsdl1.2-dev libesd0-dev gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev libgl1-mesa-dev libxml2-utils xsltproc unzip m4 lib32z-dev ccache

7.1的编译需要openjdk-8
没有需要安装一下

sudo apt install openjdk-8-jdk-headless

如果同时存在多个Java版本,需要切换一下

sudo update-alternatives --config java
sudo update-alternatives --config javac

修改jack的配置,不知道这不是不是必须的,我不改的话会报错

build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed

修改android-7.1/prebuilts/sdk/tools/jack-admin,找到

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"

改为

JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096M -cp $LAUNCHER_JAR $LAUNCHER_NAME"

然后在android-7.1目录执行

source build/envsetup.sh
lunch

选择要编译的版本,可以选aosp_arm-eng的,编译

sudo make -j8

你可能感兴趣的:(android,android,源码)