Android源码下载编译刷机指南


1.   环境配置

本节介绍如何设置你的本地工作环境来构建Android的源文件。你将需要使用Linux OS,目前不支持Windows下的建筑。

该源码下载约8.5GB大小。您将需要超过30GB可用来完成一个单一的构建,以及高达100GB(或以上)的全套版本。

本文档完全参考android官方网站:http://source.android.com/source/initializing.html

Linux编译环境搭建

Android的构建经常在Ubuntu LTS(12.04)版本做编译,而且操作系统版本为64-bit。

安装JDK

库依赖安装

$ sudo apt-get install git gnupg flex bison gperf build-essential \
  zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev \
  libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 \
  libgl1-mesa-dev g++-multilib mingw32tofrodos \
  python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

2.   源码下载

Android的源代码树位于由谷歌托管的一个Git仓库。本节介绍如何下载源代码树中特定Android版本源代码。

安装repo

repo是一种工具,可以更容易地使用Git在了Android的环境中工作,它是下载源码的主要工具。

1.     在主目录下创建bin文件夹,并添加进入环境变量

$ mkdir ~/bin
$ PATH=~/
bin:$PATH

2.     下载repo工具,并且赋予可执行权限

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

初始化repo客户端

安装完repo后,设置下载android源码的路径,开始下载源码

1.     创建一个源码存放路径,然后进入该路径

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

2.     运行 repo init 来初始化你想要下载的源码,使用-b选择源码版本

$ repo init -u https://android.googlesource.com/platform/manifest-b android-4.4.4_r1

注:源码版本需要根据安卓机器型号和版本参照,详细参照下面链接

http://source.android.com/source/build-numbers.html

下载源码

$ repo sync

3.   编译源码

下载专有驱动文件

Android的开源项目,不能只从纯粹的源代码给不同手机终端使用,需要额外的不同机器硬件相关的专利库运行,专为硬件图形加速,这种库称为专有驱动。这些专有驱动是不开源的,需要去相关网站下载。

https://developers.google.com/android/nexus/drivers

如下所示,以nexus5为例,

Nexus 5 (GSM/LTE) binaries for Android4.4.4 (KTU84P)

Hardware Component

Company

Download

MD5 Checksum

SHA-1 Checksum

NFC, Bluetooth, Wi-Fi

Broadcom

Link

3b0c5fc786daf79f016493c05bf5f0f2

5ddada9ea77f750d3a032e62f1ef9d324b4fa152

Camera, Sensors, Audio

LG

Link

a4c4935fcb438ea72782d7179596ea13

a691be8188d179a3951b8af4551b2595d81156bd

Graphics, GSM, Camera, GPS, Sensors, Media, DSP, USB

Qualcomm

Link

f1cb5b7c87cddb6cc0493eb9e53c6ee4

88178b6deb2ffc8481588004ac9061398ed43f0d

% cd WORKING_DIRECTORY

% wgethttps://dl.google.com/dl/android/aosp/lge-mako-jwr66y-a85ca75e.tgz

% tar -zxvf lge-mako-jwr66y-a85ca75e.tgz

% ./extract-lge-mako.sh # (view the license and then type"I ACCEPT")

...

% wgethttps://dl.google.com/dl/android/aosp/qcom-mako-jwr66y-a5becaf1.tgz

% tar -zxvf qcom-mako-jwr66y-a5becaf1.tgz

% ./extract-qcom-mako.sh # (view the license and thentype "I ACCEPT")

...

% wgethttps://dl.google.com/dl/android/aosp/broadcom-mako-jwr66y-137ef66d.tgz

% tar -zxvf broadcom-mako-jwr66y-137ef66d.tgz

% ./extract-broadcom-mako.sh # (view the license and thentype "I ACCEPT")

解压专有文件后,通过脚本释放文件到源码中,准备编译工作。

初始化编译

$ . build/envsetup.sh

选择编译目标

通过lunch命令选择相应的目标,它由BUILD-BUILDTYPE形式组成,build是各个手机版本代号,buildtype为编译的类型。

$ lunch aosp_hammerhead-userdebug

Build

Device

Code name

Build configuration

Nexus 5 (GSM/LTE)

hammerhead

aosp_hammerhead-userdebug

Nexus 7 (Wi-Fi)

razor (flo)

aosp_flo-userdebug

Nexus 7 (Mobile)

razorg (deb)

aosp_deb-userdebug

Nexus 10

mantaray (manta)

full_manta-userdebug

Nexus 4

occam (mako)

full_mako-userdebug

Nexus 7 (Wi-Fi)

nakasi (grouper)

full_grouper-userdebug

Nexus 7 (Mobile)

nakasig (tilapia)

full_tilapia-userdebug

Galaxy Nexus (GSM/HSPA+)

yakju (maguro)

full_maguro-userdebug

Galaxy Nexus (Verizon)

mysid (toro)

aosp_toro-userdebug

Galaxy Nexus (Experimental)

mysidspr (toroplus)

aosp_toroplus-userdebug

PandaBoard (Archived)

panda

aosp_panda-userdebug

Motorola Xoom (U.S. Wi-Fi)

wingray

full_wingray-userdebug

Nexus S

soju (crespo)

full_crespo-userdebug

Nexus S 4G

sojus (crespo4g)

full_crespo4g-userdebug

 Buildtype

Buildtype

Use

user

开放功能最少,适合编译发行版rom

userdebug

user版本很类似,但是开放调试功能

eng

配置了额外的编译选项

 

开始编译

使用GNU make编译,并行任务-JN,n表示的硬件CPU的能力。例如2个CPU,每个核心最多建立四个线程,最快建立J8。

$ make j8

4.   刷机

解锁bootloader

bootloader默认情况下是锁定的。在设备处于FASTBOOT模式,引导程序执行以下命令被解锁。

fastboot oem unlock

烧录镜像

在编译完后,输出目录会生成相应的rom镜像文件,使手机进入fastboot模式,输入以下命令,即可完成刷机。

% cd out/target/product/ # (replace  with correct value for your device)
% fastboot flash boot boot.img
% fastboot flash system system.img
% fastboot flash userdata userdata.img

 

你可能感兴趣的:(刷机,编译)