两种搭建编译环境的方式,一种方法是用户安装虚拟机,然后安装基础的Ubuntu12.04.2 系统,利用提供的工具和详细的使用步骤,搭建编译环境;另外一种方法是用户安装虚拟机,然后直接加载 “搭建好的Ubuntu 镜像”,用户只需要修改一下编译器的环境变量,就可以直接用来编译源码。

搭建环境的步骤:

1.1 安装基本软件

首先安装虚拟机“Vmware_Workstaion_wm”,然后使用虚拟机安装“Ubuntu12.04.2 初始系统”。虚拟机和Ubuntu 初始系统迅为电子在网盘提供下载。Ubuntu 的安装方法可以参考3.2 小节来安装Ubuntu12.04.2 原始系统。安装完成后进入Ubuntu 的终端,激活root 用户,具体操作如下:

在Ubuntu 命令行中,执行下面命令:sudo passwd root

接着在Ubuntu 的终端输入安装时的密码和新密码,Ubuntu 系统中密码默认是隐藏的。接着登录root 用户,具体操作如下:在Ubuntu 命令行中,执行下面命令:su root

接着输入密码,就可以登陆root 用户。后面所有的操作都需要在root 用户下面进行操作。然后在Ubuntu 安装软件vim 和ssh,具体操作如下:在Ubuntu 命令行中,执行下面命令:

apt-get install vim

apt-get install ssh

上面安装的ssh 软件,可以很方便在主机和虚拟机上传递文件,也可以通过远程终端控制Ubuntu 系统,这里推荐给大家使用。ssh 软件的使用参考3.3 小节。

1.2 安装编译组件

交叉编译工具

编译的时候需要用到交叉编译工具,我们提供的交叉编译工具是用户光盘“tool-chains”文件夹中的压缩包“arm-2009q3.tar.bz2”将交叉编译工具拷贝到Ubuntu12.04.2 系统的文件夹“usr”-->“local”-->“arm”中;然后在Ubuntu 系统中将压缩包解压到当前目录下。

修改交叉编译工具的路径(修改环境变量)

修改交叉编译工具路径,需要修改环境变量,具体操作如下:

在Ubuntu 命令行中,执行下面命令:

cd /root

vim .bashrc

然后在“.bashrc”文件中的最后一行添加如下信息:

export PATH=$PATH:/usr/local/arm/arm-2009q3/bin

修改完成后保存退出。

执行下列命令,更新环境变量

source .bashrc

最后,在Ubuntu 命令行中输入命令“arm”,然后按TAB 键,如果在命令行中能够看到arm 编译器的信息,就表明交叉编译工具安装成功。

1.3 安装库文件、JDK 以及降低GCC 版本

我们将库文件和JDK 的安装命令制作成了脚本文件,用户只要执行两个脚本就可以安装库文件和JDK。这两个脚本在用户光盘tools 文件夹下的压缩包“Android_JDK.tar.bz2”中,用户将压缩包拷贝到Ubuntu 系统中,解压压缩包会生成文件夹“Android_JDK”。

安装库文件和JDK

使用cd 命令,进入解压出来的“Android_JDK” -->“jdk6”文件夹,运行脚本文件“install-sun-java6.sh”。

具体操作如下:在Ubuntu 命令行中,执行下面的命令:

./install-sun-java6.sh

需要注意的是,这条命令执行完毕会耗时15 分钟以上。进入解压出来的文件夹“Android_JDK”中运行脚本“install-devel-packages.sh”,安装库文件,具体操作如下:在Ubuntu 命令行中,执行下面的命令:

./install-devel-packages.sh

需要注意的是,这条命令执行完毕会耗时40 分钟以上。

这里需要注意的是,上面个的脚本执行完毕的时候,注意一下有些库文件是不是没有安装。如果发现有库文件没有安装,有可能是网络不好或者下载源丢失。这个时候用户使用一下更新下载源的命令”apt-get update“,然后再执行一下上面的两个脚本。

降低GCC 版本

使用Ubuntu 编译Android4.0.3 需要用到Ubuntu 系统自带的GCC4.4.7 编译器,但是安装的Ubuntu12.04.2 版本,它的GCC 版本过高,所以这里需将要GCC 编译的版本降低到4.4.7。进入前面解压的文件夹“Android_JDK”中,会看到一个文本“update_gcc.txt”,打开文本“update_gcc.txt”后会看到里面有8 条命令,这8 条命令需要在Ubuntu 命令行中依次执行。在执行了这8 条命令之后,Ubuntu 系统就将gcc 的版本降低到4.4.7。需要注意的是,在执行这8 条命令时,只有第一条命令会耗时10 分钟左右,其它的都会很快完成,而且命令要依次执行,不能有遗漏。

2  Android4.0.3 镜像的编译

2.1 uboot 的编译

uboot 源码在用户光盘“Android 源码”文件夹中的压缩包“iTop4412_uboot_xxx_xxx.tar.gz”中。将压缩包拷贝到Ubuntu 系统中,解压后生成uboot源码文件夹“iTOP4412_uboot_xxx”。编译uboot 还需要将一个工具文件夹“CodeSign4SecureBoot”,这个工具文件夹在用户光盘“Android 源码”文件夹中。这个工具文件夹需要和前面解压出来的文件夹uboot 源码文件夹在同一目录下。

然后就可以进行编译了,进入uboot 源码文件夹,编译uboot,具体操作如下:

在Ubuntu 命令行中,执行下面的命令:

./create_uboot.sh

编译完成后,在uboot 源码文件夹中会生成uboot 的镜像文件“u-boot-iTop-4412.bin”。

2.2 Linux 内核的编译

Linux 内核源码在用户光盘“Android 源码”文件夹中的压缩包

“iTop4412_Kernel_3.0_xxx.tar.gz”中。拷贝源码压缩包到Ubuntu 系统中,解压后生成Linux内核源码文件夹“iTop4412_Kernel_3.0”。进入Linux 内核源码文件夹,编译Linux 内核,具体操作如下:

在Ubuntu 命令行中,执行下面命令:

make

编译完成后,在源码文件夹“arch”-->“arm”-->“boot”文件夹下会生成镜像文件“zImage”。

2.3 Android4.0.3 的编译

Android4.0.3 的源码在用户光盘“Android 源码”文件夹中的压缩包

“iTop4412_ICS_xxx.tar.gz”中。拷贝源码压缩包到Ubuntu 系统中,解压后生成Android4.0.3源码文件夹“iTop4412_ICS”。另外需要把上一小节内核源码“iTop4412_Kernel_3.0”和Android 源码“iTop4412_ICS”两个文件夹放在同一个目录下面。注意:要先编译内核“iTop4412_Kernel_3.0”,然后再编译“iTop4412_ICS”。编译Android4.0.3,具体操作如下:

进入文件夹“iTop4412_ICS”中,在Ubuntu 命令行中,执行下面命令:

./build_android.sh

编译完成后在文件夹“iTop4412_ICS”-->“out”-->“target”-->“product-->“smdk4x12”

中生成Android4.0.3 镜像文件“ranmdisk-uboot.img”和“System.img”。

这里需要注意的是:第一次编译耗时很长,与虚拟机给Ubuntu 分配的内存大小以及CPU的硬件配置有关系。如果只分配512 内存,编译时间可能达到4 小时以上,所以在机器允许的情况下可以尽量多的分配资源,以加快编译速度。另外,Android4.0.3 编译完成后,加上源码和编译的中间文件,差不多要占用18 个G 的空间。

另外还有一条命令,清除命令”make clobber“。执行清除命令后,很多中间文件都会被清除。如果清除了中间文件再次编译Android,中间文件需要再次编译,中间文件的编译会花费很长时间。一般情况下,不需要执行清除命令,如果不执行清除,再次编译Android,编译系统会智能识别出那些没有更改过的源文件,省去生成中间文件的过程,这样就会大大减少编译的时间。

3  Android4.2.2 环境的搭建及编译

3.1 uboot 的编译

Android4.2.2 系统的uboot 和Android4.0.3 系统的uboot 通用。

3.2 Linux3.5 内核的编译

因为编译linux-3.5 内核需要使用Android4.2.2 源码自带的交叉编译器,所以需要把Android4.2.2 的源码拷贝到Ubuntu 虚拟机。例如把Android4.2.2 的压缩包“android-4.2.2_r1_xxxxxxxx.tar.gz”(通过网盘下载得到,xxxxxxxx 是版本日期)拷贝到Ubuntu 虚拟机的“/home/topeet/android”目录下,使用命令“tar -xvf android-4.2.2_r1_ xxxxxxxx.tar.gz”解压Android4.2.2 源码,解压完成后得到“android-4.2.2_r1”文件夹。接下来把Android4.2.2 的内核压缩包“iTOP-4412_Kernel-3.5_xxxxxxxx.tar.gz”(通过网盘下载得到,xxxxxxxx 是内核的版本日期)拷贝到Ubuntu 系统中,使用“tar -xvfiTOP-4412_Kernel-3.5_ xxxxxxxx.tar.gz”解压这个压缩包,然后生成Linux 内核源码文件夹“linux-3.5”。然后使用“cd linux-3.5”命令进入Linux 内核源码文件夹,在“linux-3.5”目录下找到“Makefile”文件,使用“vi Makefile”命令打开这个文件,然后找到包含以下内容的行:

“CROSS_COMPILE ?=/home/cym/exynos4412/4.2/android4.2.2_JLB_PC4_CYIT/pre

builts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-”修改成前面Android4.2.2 所存放的目录:“CROSS_COMPILE ?=/home/topeet/android/android-4.2.2_r1/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin/arm-linux-androideabi-”这里是指定下交叉编译器的路径,修改完成后退出并保存Makefile 文件。接下来开始编译Linux 内核,在“linux-3.5”目录执行下面命令开始编译内核:

make

编译完成后,在源码文件夹“arch”-->“arm”-->“boot”文件夹下会生成镜像文件“zImage”。

3.3 Android4.2.2 的编译

在5.4.2 小节里面已经把Android4.2.2 代码拷贝到Ubuntu 系统下,并解压生成了

“android-4.2.2_r1”文件夹,然后使用“#cd android-4.2.2_r1”命令进入到Android4.2.2

的源码目录里面,输入下面的命令开始编译Android4.2.2:

./create.sh

编译完成后会在当前目录的“out/target/product/smdk4412”下面生成镜像文件:

ramdisk-uboot.img

system.img

4  Android4.4.4 环境的搭建和编译

Android4.4.4 的编译环境和Android4.0.3 的编译环境一模一样。uboot 以及内核版本也是一样的,用户如果编译过了Android4.0.3,那么Android4.4.4 将会很容易的编译。烧写方法和Android4.0.3 的完全一样。用户可以在网盘下载到Android4.4 的源码压缩包。解压后可以得到Android4.4.4 和Kernel 的源码。

4.1 uboot 的编译

Android4.2.2 的uboot 的编译方法,与Android4.0.3 一样。

4.2 Linux 内核的编译

Android4.4.4 的内核使用的版本是3.0.15,与Android4.0.3 的内核版本是一样的。解压后,得到文件夹“iTop4412_Kernel_3.0”,进入该文件夹,如下图所示。

编译器也是使用的“arm-2009q3”。如果在环境变量中,默认不是该编译器,那么则需要如下图所示修改一下,修改完之后记得使用命令“source .bashrc”更新环境变量。

然后使用“make”命令编译内核。如下图,编译完成。

在“arch/arm/boot”文件夹中生成镜像“zImage”。

4.3 Android4.4.4 的编译

用户使用迅为电子提供的搭建好的编译环境,如果能够编译通过Android4.0.3,那么Android4.4.4 的编译就很简单了。首先要将对应的内核文件和Android 文件解压到同一级目录,如下图,蓝框中分别是内核以及Android 源码文件夹。

编译Android4.4.4,还缺少一个“javap”命令,如下图所示,使用命令“update-alternatives --install /usr/bin/javap javap usr/lib/jvm/jdk1.6.0_43/bin/javap

300”更新一下。

然后进入Android4.4.4 源码解压后得到文件夹“iTop4412_KK4.4”中,使用命令“./build_android.sh”,运行一键编译脚本,开始编译Android4.4.4。

如下图所示,编译完成。在文件夹“iTop4412_KK4.4/out/target/product/smdk4x12”中,生成镜像“ramdisk.img”和“system.img”。

这里还需要注意的是,Android4.4.4 源码需要占用较大的空间,用户需要确认有足够的空间才能够成功编译。Android4.0.3 编译完成后总共大约占用18G 的空间,Android4.4.4 编译完成后总共占用大约36G 的空间,如下图。

用户完全按照步骤编译错误,可以使用“df -l”查看一下盘符剩余空间还剩下多少,如下图所示,如果是已使用100%,则是空间不足。

Android 开发环境搭建以及编译的更多相关文章

  1. Qt for Android开发环境搭建及测试过程记录

    最近学习了Qt的QML编程技术,感觉相较于以前的QtGUI来说更方便一些,使用QML可以将界面与业务逻辑解耦,便于开发. QML支持跨平台,包括支持Android平台,因此可以使用Qt的QML进行An ...

  2. Ionic Android开发环境搭建 下

    上篇 Ionic 安装完成了,由于要开发Android,所以必不可少需要继续搭建Android开发环境. 首先,下载并安装JDK.然后配置一下环境变量. 接着,下载并安装Android SDK.下载过 ...

  3. android 开发环境搭建 (转)

    最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是一直没有搭建开发环 境去学习,Android的更新速度比较快了,Android1 ...

  4. OK335xS Ubuntu 12.04.1 版本 Android 开发环境搭建

    /******************************************************************************************** * OK33 ...

  5. 转---详细的Android开发环境搭建教程

    五步搞定Android开发环境部署——非常详细的Android开发环境搭建教程 引言   在windows安装Android的开发环境不简单也说不上算复杂,本文写给第一次想在自己Windows上建立A ...

  6. Android开发环境搭建全程演示(jdk+eclipse+android sdk)

    全程演示android开发环境的搭建过程,无需配置环境变量.所有软件都是写该文章时最新版本 一 相关下载 (1) java JDK下载: 进入该网页: http://java.sun.com/java ...

  7. Java、Android 开发环境搭建

    一.准备工作 为便于管理,将java开发工具集中到一个文件夹中.创建D:\javaDevE文件夹,JDK.Android-SDK.Eclipse.tomcat等都可以安装到这个文件夹中. 二.搭建Ja ...

  8. Android开发环境搭建相关文章列表(转载)

    Android开发虽然有所了解,但是一直没有搭建开发环境去学习,Android的更新速度比较快了,Android1.0是2008年发布的,截止到目前为止Android已经更新Android5.0.1, ...

  9. Android开发环境搭建及常见问题解决方法

    转自: http://www.cnblogs.com/rwxwsblog/p/4769785.html 在移动互联网的时代,Android的份额早已超过了苹果.Android的出现无疑加速了移动互联网 ...

随机推荐

  1. TCP移动端跟服务器数据交互

    同一台笔记本下的客户端和服务端 TCPClient 客户端: //  RootViewController.h#import <UIKit/UIKit.h>#import "As ...

  2. GDC2016【彩虹六号:围攻 】使丰富的“突破”成为可能的破坏系统

      [彩虹六号:围攻 ]使得丰富的“突破”成为可能的破坏系统 深奥的战术游戏的背景下,最新的程序化破坏技术[REALBLAST]!     进行演讲的是Ubisoft Montreal的Julien ...

  3. 使用Xcode GPU Frame Caputre教程

    http://blog.manbolo.com/2012/11/20/using-xcode-opengl-es-frame-capture 这里是原文,因为它版本比较老和它demo的限制,所以也想写 ...

  4. MillWheel: Fault-Tolerant Stream Processing at Internet Scale

    http://static.googleusercontent.com/media/research.google.com/zh-CN//pubs/archive/41378.pdf   为什么要做M ...

  5. arch框架人员、组织说明

    目前ERP辅助系统集成了三大模块功能,分别是财务辅助.物理辅助.报账平台. 财务辅助模块人员在ARCH_USER 表中进行管理,通过单独的[用户映射功能]将ARCH系统用户和ERP用户进行关联,关联信 ...

  6. 蓝牙的Baseband说明

    蓝牙的radio部分使用2.4GHz的ISM段,2400 - 2483.5 MHz,通道间隔1MHz,GFS调制,采用跳频技术,每秒至少1600次.连接完成后的跳频次数为1600次/s,在inquir ...

  7. ArcGIS API for Silverlight 调用GP服务准备---GP模型建立、发布、测试

    原文:ArcGIS API for Silverlight 调用GP服务准备---GP模型建立.发布.测试 第一篇.GP降雨量等值线建模.发布及测试 在水利.气象等行业中,要在WebGIS中实现空间分 ...

  8. Android开发-修改AVD路径

    最近清理系统的时候发现C盘下有个.android文件夹占了大概10G的空间,这可怎么办,后来证实是AVD的缘故,只能修改AVD路径了. 以下是修改AVD路径的方法: 1.创建新的环境变量,ANDROI ...

  9. C# 常用日期函数

    我想知道取的时期是几月.几日,然后做一些统计,上网找了一些方法. --DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1 ...

  10. java web filter 之一 基础实现

    本文主要对filter的基本使用进行了讲解,其中涉及到了 filter是什么 一个filter处理一个jsp 多个filter处理一个jsp filter是什么 Filter 是java下的一种过滤器 ...