正文  软件开发 > 编程综合 >

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

网上也有很多这样的教程,这里只是把它记录下来,方便日后查看。  下载源码分为以下几个步骤:1、配置安装下载环境配置 JDK环境安装curl、git-core软件sudo apt...

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

 

 

下载源码

分为以下几个步骤:

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 -s /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