内容来自
mr_raptor · 深入浅出 - Android系统移植与平台开发
芯客网 · PX2开发板Android编译开发环境介绍
Fan凡 · Android编译环境搭建

引子

Android操作系统介绍

Android是Google公司于2007年11月发布的一款非常优秀的智能移动平台操作系统。Android系统最初由AndyRubin等人于2003年10月创建。Google于2005年8月17日收购Android并组建OHA①开放手机联盟开发改良Android。Android系统是一个基于ApacheLicense②,GPL③软件许可的开源手机操作系统,底层由Linux操作系统作为内核,我们可以直接从Android的官方网站上下载最新的Android源码和相关开发工具包。

Android官方首页:http://www.android.com/
Android官方开发者首页:http://developer.android.com/index.html
Android官方开源项目AOSP首页:http://source.android.com/

软件架构


软件架构

正文

应用程序开发过程

Android应用程序开发是基于Android架构提供的API和类库编写程序,这些应用程序是完全的Java代码程序,它们构建在Android系统提供的API之上。

Android 开发方式:开发Android应用程序可以基于Google提供的Android SDK(Software Development Kit,软件开发工具包),也可以直接在Android源码中进行编写。

1) Android SDK开发:它提供给程序员一种最快捷的开发方式,基于IDE开发环境和SDK套件,快速开发出标准的Android应用程序,但是,对于一些要修改框架代码或基于自定义API的高级开发,这种方式难以胜任。
2) Android源码开发:基于Android提供的源码进行开发,可以最大体现出开源的优势,让用户自定义个性的Android系统,开发出更高效、更与众不同的应用程序,这种方式更适合于系统级开发,对程序员要求比较高。

Android源码开发过程:
搭建开发环境:根据两种开发方式的不同,搭建开发环境略有不同 下载Android源码:得益于Android的开源特点,Android源码中包含大量保贵的技术知识,我们可以在阅读源码过程中更深入的了解Android系统的奥秘,为我们 编写更高效、更有特点的应用程序打下基础,同时能展现给读者一个更庞大系统的设计蓝图,为系统设计师及项目经理提供参考价值。同时,Android的源码 中提供的应用程序示例、设计模式、软件架构为我们编写大型应用程序提供经验。 编译Android源码:通过编译Android源码,生成我们开发环境及目标系统,为我们做系统底层开发、系统定制与优化做准备,通过分析编译过程,让我们学习到大型工程的代码管理与编译原理。

Android源码开发环境搭建

谷歌官网关于源码下载、编译的地址: https://source.android.com/source/building.html 建议有能力的情况下,配置以上述网址中包含的内容为准。以下内容以px2开发板为主要情形做考虑。

google推荐使用64位ubuntu系统,使用虚拟机或者双系统都可以。如果在虚拟机中运行Linux,至少需要16G交换分区空间,30G或更多的磁盘空间来编译Android。Android源码大小接近8.5G,单次编译需要约30G磁盘空间,完整编译需要100G或者更多。所以不推荐使用虚拟机。
PS.Android的源码开发可以在MacOS上或Ubuntu系统上,目前不支持在Windows下进行源码开发

px2开发板推荐使用ubuntu

Ubuntu 12.04系统,安装完后,可以查看如下版本信息:$ lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 12.04.3 LTSRelease: 12.04Codename: precise 
ubuntu下载, 网易开源镜像站: http://mirrors.163.com/ubuntu-releases/
或者 搜狐开源镜像站; http://mirrors.sohu.com

为了能够正确下载和编译Android源码,还需要安装以下程序包:

  • Python 2.6或更新版本,可从python.org网站下载安装。Python是一个非常易学的面向对象的脚本语言,在Android的编译过程中会使用到该脚本解释器。
  • GNU Make 3.81或更新,可从gnu.org网站下载安装。Make工具用于管理和编译大型的源码项目,它通过Makefile来指定编译规则。
  • Git 1.7或更新,Git是Linus Torvalds(也是Linux内核的编写者)开发一个非常优秀的分布式项目版本控制系统,用于大型项目的维护,如Linux内核源码和Android源码。

从Oracle官网去下载jdk:
http://www.oracle.com/java ->Downloads->Java for developers->Download Java SE 6 Update 45.(jdk-6u45-linux-x64.bin)
这里推荐使用1.6.0_45版本的JDK 使用如下命令安装jdk:

$ mv jdk-6u45-linux-x64.bin /user/local$ chmod a+x jdk-6u45-linux-x64.bin$ ./jdk-6u45-linux-x64.bin

安装完JDK后,将jdk路径加入到系统环境变量/etc/profile中:

JAVA_HOME=/usr/local/jdk1.6.0_45/CLASSPATH=.:$JAVA_HOME/lib/tools.jarPATH=$JAVA_HOME/bin:$PATHexport JAVA_HOME CLASSPATH PATH

保存之后,可以source /etc/profile,然后查看jdk版本:

java -version
系统编译步骤:

1,初始化系统编译环境

使用如下命令:$ source build/envsetup.sh或$ . build/envsetup.sh
2,编译代码

直接在工程根目录下执行make即可,可用-j参数指定多线程编译,加快编译速度。(下面-j4表示用四个线程编译)

先编译产品kernel,见如下命令:

$ cd kernel$ make rkpx2_4.4_lcd_defconfig //支持屏幕的内核镜像$ make kernel.img
如果要编译带VGA功能的内核镜像,请配置
$ make rkpx2_4.4_vga_defconfig
在kernel/目录下生成kernel.img 上面的两个defconfig文件可以通过make help命令查看

然后编译android:

$ cd ../$ make -j4
3,生成固件

编译完成后,可执行mkimage.sh脚本生成固件。

$ ./mkimage.sh
固件生成目录:rockdev/Image-rkpx2/,生成

boot.img ,misc.img,recovery.img,system.img

4,uboot的编译

在工程目录下的

$ cd u-boot$ make distclean$ make rkpx2

在目录下生成RKPX2Loader_miniall.bin和uboot.img

注意:配置ccache
ccache(compiler cache)是一个编译器缓存,该工具会高速缓存编译生成的信息,并在编译的特定部分使用高速缓存的信息, 比如头文件,这样就节省了通常使用cpp解析这些信息所需要的时间。如果您编译清单2中的文件,假定foobar.h中包含对其他头文件的引 用,ccache会用那个文件的 cpp-parsed版本来取代include声明。ccache只是将最终的文本拷贝到文件中,使得它可以立即被编译,而不是真正去读取、理解并解释其内容。

这一步是可选的。可能会节省编译时间。配置方法如下:
打开用户目录下的.bashrc,将下面语句添加到文件后面并保存退出:

exportUSE_CCACHE=
默认情况下cache会保存在~/.ccache目录下,如果主目录位于NFS或其他非本地文件系统上,也要将下面语句添加到.bashrc中,之后保存并退出:
export CCACHE_DIR=<path-to-your-cache-directory>
推荐的cache目录大小为50-100GB,在命令行执行以下命令:
prebuilt/linux-x86/ccache/ccache-M 50G
该设置会保存到CCACHE_DIR中,且该命令是长效的,不会因系统重启而失效。

更多相关文章

  1. android 呼吸灯实现源码
  2. 译:Android的一些基础问题(一)
  3. 下载频道2013年超人气精华资源汇总---全都是免积分下载
  4. Android(安卓)Studio开发Groovy
  5. Android系统中关于音量调节粒度修改
  6. 其实android也可以使用jetty的comet客户端
  7. Android原生(Native)C开发之九:OpenGL ES初探
  8. 配置android app 方法数超过65k问题
  9. android平台的几个编译命令----make,mmm,mm,mma

随机推荐

  1. php学习第四天
  2. HTML注册表单控件实例、CSS模块化理解与C
  3. 字体图标,布局与盒模型
  4. 酱茄OW,专为企业开发的官网小程序
  5. 测试使用的作业
  6. 注册表单实战案例
  7. 表单创建及CSS
  8. 字体图标的用法和布局的原则与元素
  9. html之盒模型,及字体图标的使用
  10. 运营级在线客服/来客客服/带非常完整的搭