Android源码下载与编译:
Android源码的开发环境:Linux,推荐使用Ubuntu 10.04及后续版本(14.04)(LTS:长期技术支持版本)
Android源码分成上层系统源码和Linux Kernel两部分
1. 搭建开发环境, 使用Sun SDK 1.6+编译依赖
步骤一: 更新Ubuntu JDK 软件源
$ sudo add-apt-repository “deb http://archive.canonical.com/ lucid partner”
$ sudo apt-get update
步骤二:安装 JDK1.6+
$ sudo apt-get install sun-java6-jdk
步骤三:安装必需的开发包(“”代表换行符)
$ sudo apt-get install git-core 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
libg11-mesa-dev g++-multlib mingw32 openjdk-6-jdk tofrodos
python-markdown libxml2-utils xsltproc zlib1g-dev:i386
$ sudo ln -s /usr/lib/i386-linux-gun/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
各个安装包的主要作用请到http://packages.ubuntu.com/查询
下载Android上层系统源码(源码6GB+确保空间足够大,还有25GB+编译空间)
由于Android由多个git库组成,通过一个名为repo的Python的脚本来统一管理
步骤一:建立repo工作目录
$ mkdir ~/bin // 主目录下创建bin目录
$ PATH=~/bin:$PATH // 将bin目录加入PATH环境变量
步骤二:下载repo脚本
$ curl https://dl-ssl.google.com/dl/googlesource/git-repo.repo > ~/bin/repo // 下载脚本至bin
$ chmod a+x ~/bin/repo // 给repo脚本可执行权限
步骤三:建立Android源码目录
$mkdir -p ~/android/jellybean[版本名称]
$cd ~/android/jellybean
步骤四:初始化repo
~/android/jellybean$ repo init -u https://android.googlesoource.com/platform/manifest -b android-4.1.1_r3
-u 代表源码的服务器地址,-b 为源码的某个分支
$ git ls-remote -tags https://android.googlesource.com/platform/manifest // 查看分支列表
步骤五:下载Android源码
~/android/jellybean$ repo sync [-j8] // [-j8] 代表开启8个线程并行下载
下载指定模块源码
步骤一:查看可下载模块
~/android/jellybean$ repo manifest -o -
步骤二:将项目模块名指定给repo sync
~/android/jellybean$ repo sync platform/system/core
下载Android Linux Kernel 源码
步骤一:进入Android源码主目录
~/android/jellybean$ mkdir kernel
~/android/jellybean$ cd kernel
步骤二:下载Kernel源码(以下代码任选其一,必须要翻墙的节奏)
~/android/jellybean/kernel$ git clone https://android.googlesource.com/kernel/common.git
~/android/jellybean/kernel$ git clone https://android.googlesource.com/kernel/goldfish.git
~/android/jellybean/kernel$ git clone https://android.googlesource.com/kernel/msm.git
~/android/jellybean/kernel$ git clone https://android.googlesource.com/kernel/omap.git
~/android/jellybean/kernel$ git clone https://android.googlesource.com/kernel/samsung.git
~/android/jellybean/kernel$ git clone https://android.googlesource.com/kernel/tegra.git
步骤三:检出Kernel 3.0 分支
~/android/jellybean/kernel$ cd common
~/android/jellybean/kernel$ git branch -a
~/android/jellybean/kernel$ git checkout remotes/origin/Android-3.0
编译Android上层系统代码
步骤一:导入预设脚本
~/android/jellybean$ . build/envsetup.sh
步骤二:指定产品名和编译变量
~/android/jellybean$ lunch
步骤三:编译全部源码
~/android/jellybean$ make -j8
编译指定模块源码
make [模块名]
编译应用层源码
适合第一次编译,通过查看Android.mk文件查看需要编译的模块
~/android/jellybean/$ make [Phone]
编译框架层和系统运行库源码
~/android/jellybean$ find frameworks -name Android.mk
~/android/jellybean$ cat frameworks/base/cmds/app_process/Android.mk
~/android/jellybean$ make [app_process]
mm [来自envsetup.sh中注册的函数]
~/android/jellybean$ mmm packages/apps/phone
mmm [来自envsetup.sh中注册的函数]
~/android/jellybean$ cd packages/apps/phone
~/android/jellybean/packages/apps/phone$ mm
mmm mm 命令必须在执行”.build/envsetup.sh”之后才能使用