`
swerit
  • 浏览: 57844 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

ubuntu 编译android2.3.1系统源代码

 
阅读更多
    最近看了一些资料,学习了android系统源码的编译。在这里做一下记录。
我的编译环境:ubuntu11.04, jdk1.6, 2.1GHz主频,  2G内存,  32位机
先上图吧,这是我编译的系统,用模拟器运行起来的效果:




1:安装必要的工具:

安装git工具:
在命令行执行如下命令
sudo apt-get install git-core gnupg


安装jdk,这个就百度吧。

2:下载源代码:
首先建立一个bin目录,来放置即将下载的repo工具:
mkdir ~/bin


下载repo脚本,在ubuntu执行命令:
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

chmod a+x ~/bin/repo

经过这两条命令在你的~/bin/目录下面已经有了一个名为“repo”的脚本文件,并且该文件已经有了可执行的权限。

新建一个目录来存放源代码:
mkdir android

cd android

下载服务器上最新的源代码命令
repo init -u https://android.googlesource.com/platform/manifest

如果不想下载最新的源代码就加上一个参数 -b,比如下载2.3.1的系统源码
repo init -u https://android.googlesource.com/platform/manifest -b android-2.3.1_r1

执行这条命令之后,在android文件夹下面就有了一个.repo文件夹,按Ctrl+h键可以看到。

开始下载,执行命令:
repo sync


注意:下载源代码的时间有点久,因为源代码很大,我下载的是2.3.1的,总共7个多G,里面包含了.repo文件夹中的内容。期间可能会出现断网,或者你等不了那么就想下一次接着下载,可以直接关掉。下一次你准备下载的时候就按照之前的步骤将repo工具路径加入环境变量中,在android目录再次执行命令
repo sync


下载完源代码后你的目录应该是这样:



3:编译源代码:
     因为android2.2以后的源码官网都建议使用64位机来编译,这里需要修改一下它的默认规则为32位:
1)修改build/core目录下的main.mk文件:
     ifeq ($(BUILD_OS),linux)
     build_arch := $(shell uname -m)
     #Change the following line for building on a 32-bit system.
     #ifneq (64,$(findstring 64,$(build_arch)))
     ifneq (i686,$(findstring i686,$(build_arch)))
     $(warning ************************************************************)
     $(warning You are attempting to build on a 32-bit system.)
     $(warning Only 64-bit build environments are supported beyond froyo/2.2.)
     2)找到下列文件:
     /external/clearsilver/cgi/Android.mk
     /external/clearsilver/cs/Android.mk
     /external/clearsilver/java-jni/Android.mk
     /external/clearsilver/util/Android.mk
     修改LOCAL_CFLAGS和LOCAL_LDFLAGS变量:
     # This forces a 64-bit build for Java6
     # Change the following two lines for building on a 32-bit system.
     # LOCAL_CFLAGS += -m64
     # LOCAL_LDFLAGS += -m64
     LOCAL_CFLAGS += -m32
     LOCAL_LDFLAGS += -m32

编译:
$~android/make

第一次编译的时间有点长,如果顺利的话等3、4个小时就编译成功了。其中可能出现一些小问题,稍微百度一下就可以解决掉的。

4:运行编译后的镜像:
设置镜像和emulator的环境变量
export PATH=$PATH:~/android/out/host/linux-x86/bin

export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic


运行:
emulator


参考资料:
http://blog.csdn.net/luoshengyang/article/details/6559955
http://source.android.com/source/downloading.html
  • 大小: 148.9 KB
  • 大小: 21.4 KB
分享到:
评论

相关推荐

    Tiny6410 Android开发指南

    从源代码构建完整的Android系统是定制化开发的关键步骤。 - **编译工具**:使用Android构建工具(如repo工具)。 - **编译命令**:使用make命令进行编译。 #### 三、制作安装或运行文件系统映像 制作文件系统映像...

    基于ARM64架构linux系统的RabbitMQ离线安装依赖包unixodbc_2.3.1-4.1-arm64.deb

    2. **Linux系统**:Linux是一种自由和开放源代码的类Unix操作系统内核,许多流行的发行版如Ubuntu、CentOS、Debian等都是基于Linux内核。在ARM64设备上,也有相应的Linux发行版提供支持。 3. **RabbitMQ依赖**:...

    Ubuntu_OS中文操作手册

    - 源代码 - 2.2 Ubuntu软件包管理系统 - 2.2.1 Ubuntu软件包概述 - 2.2.2 Ubuntu软件包格式 - 2.2.3 Ubuntu软件包命名约定 - 2.2.4 保存本地配置 - 2.2.5 Ubuntu维护脚本 - 2.2.6 软件包优先级 - 2.2.7 ...

    ubuntu下gcc编程入门收藏

    对于熟悉 Vim 的用户,可以安装完整的 Vim 版本进行源代码编辑: ```bash sudo apt-get install vim-full ``` 如果不熟悉 Vim,可以选择安装 Gedit、Kate 或 Mousepad 这些图形界面编辑器: ```bash sudo apt-get...

    操作系统课设报告1

    这部分包含了实验一的所有源代码,供读者参考和学习。 **实验二:掌握添加系统调用的方法** 2.1 实验目的 此实验旨在让学生了解系统调用的工作机制,学会如何在内核中添加新的系统调用,并能在用户空间调用它。 ...

    基于AM57x的机器学习案例.pdf

    可以通过下载源代码并按照官方文档进行编译。 - **2.2.3 编译snnapy依赖库**:snnapy是一个用于序列化数据的库。同样,需要下载源代码并按照文档编译。 - **2.2.4 编译leveldb依赖库**:leveldb是一个快速键值存储库...

    ubunto虚拟机安装和操作指导

    ###### 2.3.1 安装Ubuntu - 在VMware中创建新的虚拟机,选择Ubuntu ISO镜像文件; - 设置虚拟机的基本配置参数,如内存、硬盘等; - 启动虚拟机,按照Ubuntu安装向导的提示完成安装。 ###### 2.3.2 选择更新源 - ...

    Linux开发.doc

    - **PC-Linux系统**(即Linux宿主机):用于安装Arm-Linux交叉编译器,并对源代码进行编译,生成可以在Arm-Linux系统上运行的可执行程序。 - **Arm-Linux系统**:作为目标运行平台,通常是一个小型的嵌入式Arm板。...

    基于S3C2410(ARM9)的Linux2.6.14.1系统全线移植文档

    - 介绍了如何使用AXD进行调试,并对源代码进行了说明。 #### 第三部分:GNU交叉工具链 - **1. 设置环境变量,准备源码及相关补丁** - 包括设置环境变量、准备binutils、gcc、glibc等源码包以及相关补丁文件。 -...

    嵌入式Linux应用程序开发详解(完整版)

    - **5.1.5 Linux内核目录结构**:详细描述了Linux内核源代码的组织结构。 - **5.1.6 制作文件系统**:介绍了如何为嵌入式设备创建文件系统。 - **5.2 U-Boot移植** - **5.2.1 Bootloader介绍**:介绍了...

    EasyARM-iMX28xx Linux开发指南 20150901 V1.03

    - **开源性**:遵循GPL许可协议,任何人都可以自由获取、修改和分发源代码。 - **稳定性**:经过多年的持续开发和测试,Linux内核在稳定性方面表现出色。 - **可移植性**:支持多种不同的处理器架构,如x86、ARM...

    嵌入式Linux开发教程 (上册) 周立功

    - **开源性**:Linux内核遵循GPL许可证发布,任何人都可以查看源代码并对其进行修改。 - **稳定性**:由于有来自全球开发者社区的支持,Linux内核非常稳定,可以长时间运行而不需重启。 - **可移植性**:Linux可以在...

    嵌入式Linux开发教程_上册

    - **开源免费**:Linux内核遵循GNU通用公共许可证(GPL),允许任何人自由地使用、修改和分发源代码。 - **多用户多任务**:支持多个用户同时登录并执行任务,每个用户可以运行多个进程。 - **高性能和高可靠性**:...

    ECR6600U 驱动开发手册

    - **配置**:通常配备4GB RAM,支持多种操作系统,如Raspbian、Ubuntu等。 - **用途**:本手册中用作开发ECR6600驱动的主机环境之一。 **2.1.2 ECR6600 开发板** - **简介**:ECR6600开发板是用于驱动开发的主要...

    redmine搭建手册(完整版)

    首先,安装zlib和openssl库,然后通过源代码编译安装Ruby,确保Ruby编译时链接了这些库。 2.1.1. 安装 zlib ```bash sudo apt-get install libz-dev ``` 2.1.2. 安装 openssl ```bash sudo apt-get install libssl-...

Global site tag (gtag.js) - Google Analytics