首页 > 代码库 > Android 在ubuntu上下载和编译系统源码

Android 在ubuntu上下载和编译系统源码

网上也有很多这样的教程,这里只是把它记录下来,方便日后查看。

官网教程:http://source.android.com/source/building.html


下载源码

分为以下几个步骤:

1、配置安装下载环境

  配置 JDK环境

  安装curl、git-core软件

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

2、创建一个~/bin目录,并添加到环境变量中

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

3、下载repo脚本并修改权限为可执行

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo  (这个有可能会下载超时)
curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo"> ~/bin/repo (上面下载失败可以下载这个)
chmod a+x~/bin/repo

4、创建一个保存android源码的目录,修改为最大权限,并进入到该目录下

mkdir /opt/android_source
sudo chmod –R 777 /opt/android_source
cd  /opt/android_source

5、初始化repo,并选择要下载的分支(版本)

repo init -u https://android.googlesource.com/platform/manifest  (这个是最新源码)
repo init -u https://android.googlesource.com/platform/manifest -b android-4.2_r1 (这个是Android4.2系统源码,其它版本只要更换分支号就可以)

6、提示输入你的姓名、邮箱。

7、开始下载源码

repo sync 


常遇到的错误情况:

情况1:

error:Failed onnect o android.googlesource.com:443;

Connection efused while accessing

https://android.googlesource.com/a/platform/frameworks/base/info/refs

fatal: HTTP request failed

error: Cannot fetch platform/tools/motodev

error: Cannot fetch platform/frameworks/base

error: Cannot fetch platform/prebuilts/sdk

error: Exited sync due to fetch errors

 

解决:

编辑/etc/hosts文件

vim /etc/hosts

增加下面内容,保存

74.125.31.82 www.googlesource.com

74.125.31.82 android.googlesource.com

203.208.46.172 cache.pack.google.com

59.24.3.173 cache.pack.google.com


编译源码

1、 下载所需软件

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 mingw32 tofrodos 
python-markdown libxml2-utils xsltproc zlib1g-dev:i386


2、创建链接

sudo ln -/usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

3、配置gcc

sudo apt-get install gcc-4.4
sudo apt-get install g++-4.4


4、编译源码

cd /opt/android_source  

source build/envsetup.sh 或 .build/envsetup.sh

lunch full-eng

make -j4


5、启动模拟器

emulator