在Ubuntu16.04上下载并编译Android源代码

本文详细介绍了如何在Ubuntu16.04上下载和编译Android源代码,包括安装Repo、初始化、下载源代码、安装依赖库、配置JDK、编译以及运行模拟器的步骤。通过执行`repo init`、`repo sync`、`make`等命令,最终在/aosp/out/target/product/generic目录下生成系统镜像文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android源代码位于Google的Git代码库中,由于Android源代码工程过于复杂庞大,所以Google以Git为基础用Python脚本,写了一个管理工具Repo。

1.安装Repo

在安装Repo之前,假定已经安装好了git。

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo

2.初始化Repo

首先创建一个文件夹,用来装即将下载的代码。

madir aosp
cd aosp/

配置Git

git config --global user.name "windcake"
git config --global user.email "windcakewang@gmail.com"

执行init

repo init -u https://android.googlesource.com/platform/manifest

这样下载下来的是master的代码。我个人想研究6.0的代码所以使用-b指定了分支

repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r17

3.下载

repo sync -j4

sync命令用于同步代码,-j4告诉Repo用4个线程下载。

4.安装依赖库

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev
g++-multilib git flex bison gperf build-essential libncurses5-dev:i386
tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev
libsdl1.2-dev libesd0-dev 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
ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4

5.安装JDK

add-apt-repository ppa:openjdk-r/ppa
apt-get update
apt-get install openjdk-7-jdk

然后配置JAVA环境,在/etc/profile文件中加入如下几行。

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

重启系统或者执行如下命令让更改生效

source /etc/profile

然后检查JAVA环境是否配置正确

java -version

6.开始编译

为了提高编译效率,需要设置缓存。

echo export USE_CCACHE=1 >> ~/.bashrc
prebuilts/misc/linux-x86/ccache/ccache -M 50G

然后导入编译所需要的环境

source build/envsetup.sh

运行lunch选择编译目标

lunch

选择1后,执行make命令开始编译

make -j8

编译成功之后会有如下日志输出

Creating filesystem with parameters:
    Size: 1610612736
    Block size: 4096
    Blocks per group: 32768
    Inodes per group: 8192
    Inode size: 256
    Journal blocks: 6144
    Label: system
    Blocks: 393216
    Block groups: 12
    Reserved block group size: 95
Created filesystem with 1682/98304 inodes and 139413/393216 blocks
Install system fs image: out/target/product/generic/system.img
out/target/product/generic/system.img+ maxsize=1644333504 blocksize=2112 total=1610612736 reserve=16610880

且在/aosp/out/target/product/generic目录下会有system.img、userdata.img和ramdisk.img等文件。

7.运行模拟器

模拟器运行需要四个文件,分别是Linux Kernel镜像zImage和Android镜像文件system.img、userdata.img和ramdisk.img。
执行emulator命令时,如果不带任何参数,则Linux Kernel镜像默认使用AOSP已经编译好的,
而Android镜像文件则默认使用ANDROID_PRODUCT_OUT目录下的system.img、userdata.img和ramdisk.img文件。
所以我们需要预先配置环境

export PATH=$PATH:/aosp/out/host/linux-x86/bin
export ANDROID_PRODUCT_OUT=/aosp/out/target/product/generic

然后执行

emulator

与从Android Studio的图形界面里调起模拟器一样,首次启动需要漫长的等待。同时,如果启动成功,这个漫长的等待也会放大成功的喜悦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值