[Android] Ubuntu下Android源码编译

安装Ubuntu

我用的windows系统,因此采取Oracle VM Virtual
Box虚拟机安装Ubuntu系统,Ubuntu系统自身选择的是Ubuntu14.04。
1、下载Oracle VM Virtual Box
https://www.virtualbox.org/wiki/Downloads
根据各自的网下载对应之版。
2、下载Ubuntu系统
http://www.ubuntu.com/download/desktop
本人选择的是 Ubuntu 14.04.4 LTS 64bit。
3、如何采取Oracle VM Virtual
Box安装Ubuntu,本人就非以召开过多的废话了,不明白者请查询相关资料。

布置虚拟机共享文件夹

为要下载的Android源代码能在Windows中动用SourceInsight开辟,所以待创造Windows共享文件夹,在Ubuntu中让源代码下载在共享文件夹着,或者吃Ubuntu共享代码下载的公文夹,在Windows中访问。本文为第一种办法吧条例阐述。

Paste_Image.png

这设置需要以关闭Ubuntu虚拟机的情景下设置。设置好之后,打开Ubuntu系统发现没权力去做客这个共享文件夹,解决方案是管当下用户加至一个被vboxsf的组中,执行令

sudo usermod -a -G vboxsf <你的用户名>

挂载的共享文件夹在/media

Paste_Image.png

此间我使用了SecureCRTSSH远程连接了Ubuntu

sudo apt-get install openssh-server // 安装SSH服务

设置必要之工具

1、git版本控制工具

sudo apt-get install git

配置git

git config --global user.email "<你的邮箱>"
git config --global user.name "<你的名字>"

2、curl,官方一点底传教就是是开源之文件传输工具。类似迅雷,或者wget

sudo apt-get install curl

3、
安装repo,Android使用Git作为代码管理工具,开发了Gerrit进行代码审核以便更好的针对性代码进行集中式管理,还出了Repo命令行工具,对Git部分令封装,将百大抵单Git库有效之展开集体。
新建一个bin目录

mkdir ~/bin

~/bin目上加到PATH中,编辑.bashrc于结尾加加

PATH=$PATH:~/bin

下载repo

curl https://storage-googleapis.lug.ustc.edu.cn/git-repo-downloads/repo > ~/bin/repo

上加而尽权

chmod a+x ~/bin/repo

采用repo下载Android系统源码

1、cd顶共享文件夹
新建一个文件夹存放Android源码

mkdir android && cd android

初始化工作目录,默认为master 分支

repo init -u  git://mirrors.ustc.edu.cn/aosp/platform/manifest

初始化工作目录,并指定分支

repo init -u  git://mirrors.ustc.edu.cn/aosp/platform/manifest -b <branch>

branch可查看网址
https://source.android.com/source/build-numbers.html\#source-code-tags-and-builds
[亟待翻墙]

附上一些比新的系统子

Build Branch Version
M5C14J android-6.0.1_r31 Marshmallow
LMY49J android-5.1.1_r37 Lollipop
KTU84Q android-4.4.4_r2 KitKat

要是想生拉并切换至Android 4.4.4,可以履一下指令

repo init -u  git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-4.4.4_r2

万一以初始化的上遇到以下问题

Paste_Image.png

旋即是一个Virtual
Box为了安全禁止了链接的不当,解决方案如下,请于关门虚拟机的图景下开展,
Windows 下cmd跻身及Virtual Box的安目录

Paste_Image.png

键入

VBoxManage setextradata <YOURVMNAME> VBoxInternal2/SharedFoldersEnableSymlinksCreate/<YOURSHAREFOLDERNAME> 1

<YOURVMNAME> = 虚拟机的讳
<YOURSHAREFOLDERNAME> = 设置共享的名
呼吁留心分寸写,例如

Paste_Image.png

Paste_Image.png

Paste_Image.png

设置好后,查看有无发生安成

VBoxManage getextradata <YOURVMNAME>  enumerate  

Paste_Image.png

初始化之后,目录下面多矣一个.repo隐身文件夹,查看该开头大小

Paste_Image.png

2、下拉代码

repo sync 

repo sync 下充斥最新本地工作文件,同步 repository 中的代码。
可以指定要创新的project ,
如果不点名其他参数,会共同整个所有的色。如果是首先不行运行 repo sync,
则这个命令相当给 git clone,会将 repository
中的装有内容还拷贝到本地。如果不是第一次等运行 repo sync, 则相当给
更新和活动合并动作,repo sync 会更新 .repo 下面的公文。 如果在merge
的进程中冒出冲, 这得手动运行 git rebase --continue

严防中途人离开出错,可以运用以下脚本

#!/bin/bash
echo "======start repo sync======"
repo sync
while [ $? == 1 ]; do
  echo "======sync failed, re-sync again======"
  sleep 3
  repo sync -j4
done

repo sync后可以加个-j<数字>参数来加快仓库克隆,如:

repo sync -j8 // 默认是4

齐时间因人而异,我大约挂了两三独小时

构建编译环境

对于Gingerbread
(2.3.x)之后的系要64号的操作系统,老的网可以32也之机上编译
1、安装JDK
每个Android系统于JDK的渴求是无一致的,当前Android Open Source Project
(AOSP)master分支上得Java
8,在Ubuntu上得设置OpenJDK。
任何分支对于JDK的要求 Java
JDK:
Java 7: for Lollipop through Marshmallow
Java 6: for Gingerbread through KitKat
Java 5: for Cupcake through Froyo
这边早已编译KitKat为条例,下充斥JDK6,由于官网下充斥需要填账号信息,因此此给起一个百度云的链接
http://pan.baidu.com/s/1nuo3XNj
下充斥完成后,记得加上到环境变量

2、 下充斥编译所待工具
Ubuntu系统版本是14.04之,具体的本子用装哪些工具得以查询
https://source.android.com/source/initializing.html

sudo apt-get install 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

标准编译

1、设置编译环境变量
初始化环境变量

source build/envsetup.sh

或者

. build/envsetup.sh

2、选择编译目标

lunch aosp_arm-eng

色说明

user          limited access; suited for production
userdebug     like "user" but with root access and debuggability; preferred for debugging
eng         development configuration with additional debugging tools

3、使用ccache
增速编译的物,建议大小 50-100G

export USE_CCACHE=1
export CCACHE_DIR=/<path_of_your_choice>/.ccache
prebuilts/misc/linux-x86/ccache/ccache -M 50G

4、编译

make -j<你CPU的核心数乘以2> 如:make -j8

由此长期的编译时间

5、模拟器运行
直白在支配高运行,在编译的工被之命令或机关添加至环境变量中

emulator

模拟器运行起来后,即可见到刚编译好的image

官方编译教程
https://source.android.com/source/index.html
[需翻墙]

相关文章