作者:唐老师,华清远见嵌入式学院讲师。

一、Android4.0系统的下载与编译

Android系统的下载与编译,Google的官方网站上已经给出了详细的说明,请参照Android的官方网址: http://source.android.com/source/index.html

内容主要分为:
        1. 准备Android下载与编译环境
        2. 下载源码
        3. 编译源码及内核源码

下面我们依次来说明其步骤及注意事项。

1. 准备Android下载与编译环境

Android源码的编译Google只给出了在类Unix系统,确切的说是Ubuntu及MacOS上的详细过程,我们下面只描述Ubuntu上的编译过程。

1.1硬件环境:

足够快的PC机,如果有条件,最好是使用实体PC

内存最少1G,硬盘最少要30GB

注:也可以使用Vmware或VirtualBox等虚拟机软件,但是编译速度太慢,至于内存,如果小于1G,在编译系统时可能会出错。

1.2软件环境

我们使用Ubuntu12.04作为编译主机系统,(官方不建议使用Ubuntu12.04版本),由于Android系统里代码大部分是由Java语言写的,所以必然要安装JDK,不过,不同的版本,对JDK的版本有不同的要求:

在Gingerbread(2.3.x) 版本及其之后版本,使用JDK6.0,并且使用64位系统编译

在Gingerbread(2.3.x) 以前版本,使用JDK5.0,并且可以在32位系统上编译

注:当然我们通过修改一些配置文件,在32位系统上编译,但是不能保证编译出来的系统将来能否不出问题。

JDK6.0建议直接从SUN公司的网站上下载:http://java.sun.com/javase/downloads/

安装编译时依赖的包:
        $ sudo apt-get install git-core gnupg flex bison gperfbuild-essential \
        zip curl libc6-dev libncurses5-dev:i386x11proto-core-dev \
        libx11-dev:i386 libreadline6-dev:i386libgl1-mesa-glx:i386 \
        libgl1-mesa-dev g++-multilib mingw32 tofrodos \
        python-markdown libxml2-utils xsltproc zlib1g-dev:i386

执行下面的命令:
        $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1/usr/lib/i386-linux-gnu/libGL.so

2. 下载Android4.0及Goldfish源码

2.1 下载并初始化repo工具

依次执行下面的命令:
        $ mkdir ~/bin
        $ PATH=~/bin:$PATH
        通过curl命令下载repo工具:
        $ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
        给repo工具加下执行权限:
        $ chmod a+x ~/bin/repo
        创建我们的源码目录:
        $ mkdir WORKING_DIRECTORY
        $ cd WORKING_DIRECTORY
        初始化repo工具,准备访问google源码仓库:
        $ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
        有的时候使用上面的命令不能连接android服务器,我们可以使用下面的命令连接:
        $ repo init -u https://android.googlesource.com/a/platform/manifest -b android-4.0.1_r1
        这个时候,要保证您的ubuntu能够上网,并且能正常连接到Android服务器,在初始化完repo工具后,会让你输入gmail邮箱及用户名验证。

2.2下载Android源码

通过执行下面的命令,开始下载Android源码:
        $repo sync
        如果你的PC机足够给力,可以在命令后面加上–jn,n表示多个线程同时下载,可以提高下载速度。
        然后是漫长的等待,Android4.0.1的源码大概有6GB左右,一般1~2个晚上的时间。
        有的时候,网络可能会断,我们可以使用下面的脚本来进行下载,当连接出错时,会自动下载。
        #!/bin/bash
        PATH=~./bin:$PATH
        repo init-u https://android.googlesource.com/a/platform/manifest-b android-4.0.1_r1
        repo sync
        while [ $? = 0
        ]; do
        echo“ **Error: sync failed, re-sync again”
        sleep 5
        repo sync
        done

2.3其它源码下载源

前面所述的下载步骤是Google放出一官方版本的Android代码,它里面通常只有模拟器和部分和
Google有合作关系设备的源码,如果要想编译一个目标设备的Android4.0.1系统,我们肯定要对其进行定制,不过有一些知名的设备生产厂商或
第三方厂商,也会开源针对自己设备的Android系统,如:三星,高通等,比较专业的,网址如下:
www.linaro.org

linaro网站主要是ARM的芯片的最新Android解决方案,如:基于三星猎户座芯片的origen开发板,基于TI的OMAP系统芯片的PandaBoard板,基于Nova A9500 ARM 双核Cortex A9的snowball开发板等。

如果从上述网站上下载源码,要根据上述网站的说明进行相关操作。

2.4 下载模拟器Goldfish内核源码

Google在开发Android系统的同时,使用qemu开发了针对每个版本的一个模拟器,这大大降
低了开发人员的开发成本,便于Android技术的推广。qemu是一个开源的模拟处理器软件,而Google使用qemu模拟的是ARM926ej-S
的Goldfish处理器,如果开发人员在没有目标开发板的情况下,要对硬件进行操作的话,必然要去操作Android底层的驱动,我们可以使用模拟器的
内核源码。

ø下载Goldfish内核源码

首先进入到Android的源码目录,创建源码目录kernel:
        $ cd WORKING_DIRECTORY
        $ mkdir kernel
        从Android的远程源码仓库下载源码:
        $git clone http://android.googlesource.com/kernel/goldfish.git
        当然,如果你要编译指定目标平台的kernel的话,也可以从指定的仓库里下载,官方给出了下列处理器的kernel:
        $ git clone https://android.googlesource.com/kernel/common.git
        $ git clone https://android.googlesource.com/kernel/exynos.git
        $ git clone https://android.googlesource.com/kernel/goldfish.git
        $ git clone https://android.googlesource.com/kernel/msm.git
        $ git clone https://android.googlesource.com/kernel/omap.git
        $ git clone https://android.googlesource.com/kernel/samsung.git
        $ git clone https://android.googlesource.com/kernel/tegra.git

大概几十分钟后,下载完了,如下图所示:

在kernel目录下产生一个goldfish目录,进入到该目录下:
        $ cd goldfish
        $ ls -al

通过ls–al命令查看当前目录,可以看到隐藏的.git。

通过git branch –a来查看所以分支:
        $ git branch -a

通过git checkout来得到源码:
        $ git checkout remotes/origin/android-goldfish-2.6.29

如下图所示,当前目录下出现了Linux内核源码的目录结构:

文章来源:华清远见嵌入式学院原文地址:http://www.embedu.org/Column/Column564.htm

更多相关嵌入式免费资料查看华清远见讲师博文>>

深入浅出-Android系统移植与平台开发(一)- Android4.0系统的下载与编译的更多相关文章

  1. 深入浅出 - Android系统移植与平台开发(一)

    深入浅出 - Android系统移植与平台开发(一) 分类: Android移植2012-09-05 14:16 16173人阅读 评论(12) 收藏 举报 androidgitgooglejdkub ...

  2. 深入浅出 - Android系统移植与平台开发(五)- 定制手机模拟器ROM

    一. 修改化定制Android4.0系统 Android系统启动时,先加载Linux内核,在Linux的framebuffer驱动里可以定制开 机界面,Linux内核启动成功后,挂载根文件系统,启动A ...

  3. 深入浅出 - Android系统移植与平台开发(三)- 编译并运行Android4.0模拟器

    作者:唐老师,华清远见嵌入式学院讲师. 1.   编译Android模拟器 在Ubuntu下,我们可以在源码里编译出自己的模拟器及SDK等编译工具,当然这个和在windows里下载的看起来没有什么区别 ...

  4. 深入浅出 - Android系统移植与平台开发(五)- 编译Android源码(转)

    2.3编译Android源码 Android源码体积非常庞大,由Dalvik虚拟机.Linux内核.编译系统.框架代码.Android定制C库.测试套件.系统应用程序等部分组成,在编译Android源 ...

  5. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统(瘋耔修改篇二)

    第四章.Android编译系统与定制Android平台系统 4.1Android编译系统 Android的源码由几十万个文件构成,这些文件之间有的相互依赖,有的又相互独立,它们按功能或类型又被放到不同 ...

  6. 深入浅出 - Android系统移植与平台开发(二) - 准备Android开发环境

    作者:唐老师,华清远见嵌入式学院讲师. 编译Android源码 关于android系统的编译,Android的官方网站上也给出了详细的说明.http://source.android.com/sour ...

  7. 深入浅出 - Android系统移植与平台开发(十一)- Android系统的定制(瘋耔修改篇一)

    首先非常感谢原文作者为我们提供的知识库,因为有你们的贡献,我们的开发难度更显简单 原文 :   http://blog.csdn.net/mr_raptor/article/details/30113 ...

  8. 深入浅出 - Android系统移植与平台开发(六)- 为Android启动加速

    作者:唐老师,华清远见嵌入式学院讲师. Android的启动速度一直以来是他的诟病,虽然现在Android设备的硬件速度越来越快,但是随着新 版本的出现,其启动速度一直都比较慢,当然,作为程序员,我们 ...

  9. 深入浅出 - Android系统移植与平台开发(七)- 初识HAL

    作者:唐老师,华清远见嵌入式学院讲师. 1. HAL的module与stub HAL(Hardware AbstractLayer)硬件抽象层是Google开发的Android系统里上层应用对底层硬件 ...

随机推荐

  1. 正则表达式在JS中的应用

    JavaScript表单验证email,判断一个输入量是否为邮箱email,通过正则表达式实现.//检查email邮箱function isEmail(str){       var reg = /^ ...

  2. Oracle【IT实验室】数据库备份与恢复之五:Flashback

    Flashback在开发环境(有时生产环境的特殊情况下)是很有用的一个工具.     5.1 9i Flashback 简介     5.1.1  原理 当数据  update  或  delete  ...

  3. php获取当前页面的完整url

    javascript实现: top.location.href 顶级窗口的地址 this.location.href 当前窗口的地址 php实现: //测试网址: http://localhost/b ...

  4. NS2中trace文件分析

    ns中模拟出来的时间最终会以trace文件的形式告诉我们,虽然说一般都是用awk等工具分析trace文件,但是了解trace文件的格式也是必不可少的.下面就介绍一下无线网络模拟中trace文件的格式. ...

  5. 《数据结构与算法分析》学习笔记(三)——链表ADT

    今天简单学习了下链表,待后续,会附上一些简单经典的题目的解析作为学习的巩固 首先要了解链表,链表其实就是由一个个结点构成的,然后每一个结点含有一个数据域和一个指针域,数据域用来存放数据,而指针域则用来 ...

  6. Vs2012调试本地windows服务

    背景: 在我的工作经历中,我用到了一个我们以前学习中没有接触过的老东西-服务.之所说以前没有接触过,是因为自己没有系统的研究过这东西:之所以又说它是老东西,是因为我们其实早就知道他的存在,经常用它去干 ...

  7. android 获取文件夹、文件的大小 以B、KB、MB、GB 为单位

    android 获取文件夹.文件的大小 以B.KB.MB.GB 为单位   public class FileSizeUtil { public static final int SIZETYPE_B ...

  8. poj 1141 区间dp+递归打印路径

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 30383   Accepted: 871 ...

  9. 使用JdbcTemplate报 Incorrect column count: expected 1, actual 5错误解决

    Incorrect column count: expected 1, actual 5 在使用jdbc的querForObject queryForList的时候,出现Incorrect colum ...

  10. Java ClassLoader基础及加载不同依赖 Jar 中的公共类

    转载自:最新内容及最清晰格式请见 http://www.trinea.cn/android/java-loader-common-class/ 本文主要介绍 ClassLoader 的基础知识,Cla ...