+-------------------------------------------------+

+      本系列为连载,不定期会更新       +

+-------------------------------------------------+

一、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硬件环境:

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

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

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

1.2软件环境

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

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

l  在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 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

执行下面的命令:

$ 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]; doecho“  **Error: sync failed, re-sync again”sleep 5repo 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内核源码的目录结构:

深入浅出 - Android系统移植与平台开发(一)相关推荐

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

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

  2. 深入浅出 - Android系统移植与平台开发(十)- Android编译系统与定制Android平台系统

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

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

    本文转载自:http://blog.csdn.net/mr_raptor/article/details/8006721 Android的启动速度一直以来是他的诟病,虽然现在Android设备的硬件速 ...

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

    编译Android源码 关于android系统的编译,Android的官方网站上也给出了详细的说明. http://source.android.com/source/building.html Ø  ...

  5. 深入浅出 - Android系统移植与平台开发(十三)- Android的对象管理

    第六章.Android的对象管理 在Java中,不再使用的对象会通过gc机制来自己主动回收.而Android系统执行时库层代码是由C++编写的,在C++中创建的对象通常使用指针来操作,一旦使用不当.轻 ...

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

    作者:唐老师,华清远见嵌入式学院讲师. 一. 修改化定制Android4.0系统 Android系统启动时,先加载Linux内核,在Linux的framebuffer驱动里可以定制开机界面,Linux ...

  7. Android系统移植与驱动开发概述

    1.Android系统架构分为四层:linux内核,Android是基于linux内核的. c/c++代码库,包括C/C++编写的代码库,包括dalivk虚拟机的运行时. Android SDK AP ...

  8. Android系统移植与驱动开发--第四章

    第四章 源代码的下载和编译 一个android内核相当于4G,而一个Linux内个只有几百M,Linux内核相对于android内核来说实在是小巫见大巫.了解android源代码不一定要详细了解,只去 ...

  9. android系统应用的平台化开发

    android系统应用的平台化开发,一种开发思路,旨在方便平台开发. 在android操作系统中,源码编译生成app,加入带系统签名的app,这些应用都带有系统权限,统一放在了system/app或者 ...

最新文章

  1. Oceanus:基于Apache Flink的一站式实时计算平台
  2. 合并多个wordpress到一个
  3. Poj3261 Milk Patterns
  4. 基于ASP.net耳机网店商城系统(前台页面+后台页面)
  5. docker $PWD路径_Docker 数据持久化
  6. 鸿蒙系统能玩魔兽世界吗,苹果M1可以玩魔兽世界吗 M1芯片能玩魔兽吗
  7. Sigar 编译笔记
  8. Choerodon猪齿鱼实践之集群管理(一)
  9. 计算机出现假桌面怎么解决办法,win10专业版系统桌面经常假死解决办法
  10. TEXT 5 Stuff of dreams
  11. mysql 左连接都是null_sql左连接有疑问,为什么查出来都是null,而不是没有数据?...
  12. 蓝桥杯练习题之 Fibonacci数列
  13. seaborn颜色报错 ValueError: Invalid RGBA argument: [‘#f9802d‘, ‘#f26b15‘, ‘#fdc48f‘]
  14. Android编译自定义sdk,向Android SDK中添加自定义的库 (Addon)
  15. DB、DBS 和 DBMS 有什么区别
  16. 磁盘阵列是什么,主要做什么用?
  17. 云南怒江---地狱与天堂的边缘
  18. 莫拉克电梯服务器说明书_默纳克操作手册
  19. 基于Annoy的语义泛化-代码模块化
  20. 徐敏 计算机科学教育,计算机学院举办梦想公开课暨2019年暑期社会实践动员大会...

热门文章

  1. MySQL||默认值约束(Default)
  2. 世界冰球锦标赛【折半搜索】
  3. 微信小程序 富文本编辑器组件 editor
  4. 如何运用Common Neighbor方法进行链路预测
  5. 这一把子彻底搞懂 setState 原理
  6. Android setTag 使用
  7. c++ 复合结构的基本用法
  8. 什么是图灵完备语言?
  9. 会员管理、会员营销、会员权益、标签、会员体系、积分规则、订单管理、数据分析、流量分析、交易分析、新客专享、中后台模板、拓客、裂变、精准营销、换购、秒杀、拼团、后台管理、场景营销、axure原型
  10. 原子操作-atomic