安卓开发到底是什么

内容来自
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/

软件架构

11104937_2u3V.jpg

软件架构

正文

应用程序开发过程

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 -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04.3 LTS
Release: 12.04
Codename: 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.jar
PATH=$JAVA_HOME/bin:$PATH
export 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中,且该命令是长效的,不会因系统重启而失效。

转载于:https://my.oschina.net/u/2433716/blog/490565

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值