Facebook Twitter LinkedIn E-mail
magnify
Home Posts tagged "Android OS"

编译Android OS: 下载Android源码

Android源码使用Git(SCM)作为源码版本控制软件,Repo为Git 之上一个工具,可以简化Git repository 的管理,(后面就简要介绍Repo 和Git 的用法)。

下面使用Repo 来下载源码

1. 在用户根目录下创建一个bin 子目录,并把bin 目录添加到Path环境变量中:

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

2. 下载repo 脚本文件并将它设为可执行

$ curl https://android.git.kernel.org/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

注: 这几天kernel.org 给hack了,android.git.kernel.org无法访问。

3 .初始化Repo 客户端

首先可以创建一个工作目录

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

运行Repo init 初始化Repo ,必须指定manifest 的URL

$ repo init -u git://android.git.kernel.org/platform/manifest.git

注: 可以使用Github 中 https://github.com/android 作为镜像网站。

如果你使用git://android.git.kernel.org 出现连接错误,可以使用http:// 代替 git://

如果需要下载某个Branch的Android的源码,如froyo ,可以使用-b,如:

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo

下载源码

$ repo sync

原文参见http://source.android.com/source/downloading.html

 

编译Android OS: 准备编译环境

Android平台为一开源平台,所有的源码都是公开的,你可以从source.android.com 获取源码,自行编译,或者定制Android OS,本篇先介绍编译Android OS 的编译环境。

目前的版本Android 2.3 源代码大约2.6G,最小编译环境需要10G的空闲空间。

Google建议使用的编译环境为Ubuntu (10.04 以上版本),你可以使用使用虚拟机,Google建议使用的内存为8G 以上,因此需要64 Ubuntu系统)

注:本人试过使用32位Ubuntu系统,2G内存,也是可以编译的。但编译比较费时,可以作为学习环境使用。

编辑Android所需的软件如下:

  • Python 2.4 — 2.7 ,可以从python.org 下载
  • JDK 6 (编译Gingerbread 以上版本)或JDK 5 (编译Froyo 及以下版本),可以从java.sun.com 下载。
  • Git 1.5.4 (以上) 为Google 源码使用的SCM工具。

安装Ubuntu

参考http://www.ubuntu.com/ ,可以使用光盘,USB盘,虚拟机可以直接使用*.iso 作为模拟光驱。

安装JDK

Java 6: Gingerbread 以上版本 (建议使用)

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
$ sudo add-apt-repository "deb-src http://archive.canonical.com/ubuntu lucid partner"
$ sudo apt-get update
$ sudo apt-get install sun-java6-jdk

安装Java 5 :Froyo 以下版本

$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper
  main multiverse"
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates
   main multiverse"
$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk

安装所需的软件包

sudo apt-get install git-core gnupg flex bison gperf build-essential \
 zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
 x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
 libgl1-mesa-dev g++-multilib mingw32 tofrodos

注:如果使用32位Ubutu ,可以使用如下替代

lib32ncurses5-dev  --> libncurses5-dev
ia32-libs  --> not needed
lib32readline5-dev -->libreadline5-dev
lib32z-dev -->libz-dev

配置USB访问

在Ubutu系统下,普通用户缺省情况下无权限访问USB 设备,需要配置USB使用户可以访问USB

下面为配置方法,创建一个文件 /etc/udev/rules.d/51-android.rules ,然后在其中输入下面内容

# adb protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e12",
  MODE="0600", OWNER="<username>"
# fastboot protocol on passion (Nexus One)
SUBSYSTEM=="usb", ATTR{idVendor}=="0bb4", ATTR{idProduct}=="0fff",
  MODE="0600", OWNER="<username>"
# adb protocol on crespo (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e22",
MODE="0600", OWNER="<username>"
# fastboot protocol on crespo (Nexus S)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e20",
MODE="0600", OWNER="<username>"

注意将<username> 替换成你自己的用户名。 这些rules 在下次插拔USB设备时会起作用。

此外 也可以使用Mac OS 来编译Android OS,但目前不支持在Windows平台上编译(即使你安装Cygwin 之类的软件)

原文参见 http://source.android.com/source/initializing.html