赞
踩
Android(读音[ˈændrɔɪd])是Google主持开发的开源移动平台。
整个平台包括操作系统、中间件、虚拟机、应用框架、应用。
该平台最初是作为智能手机操作系统开发的,随着发展,通过移植和修改,也可用于平板电脑和其他手持设备。
Android的版本周期约为6个月。
已发布(截至2010年10月)的主要版本有1.0、1.1、1.5、1.6、2.1、2.2。
l 1.0、1.1、1.5(Cupcake)、1.6(Donut)已过时,新系统不应使用;
l 2.1代号Eclair,是2.0和2.01的升级版,取代后两者,稳定版;
l 2.2代号Froyo,为目前最新版,不断升级中。支持Flash,详见Android 2.2 Platform Highlights;
l 3.0代号Gingerbread,计划中的版本,全新的UI、游戏性能,可能支持视频聊天;
l 3.5代号Honeycomb,计划中的版本,有最低硬件要求,用于平板电脑。
版本代号即提取源码时使用的分支名。
2 |
1 |
5 |
4 |
3 |
l 1:应用
应用是一个个独立的程序,如浏览器、计算器、游戏等。应用使用Java开发,基于Android SDK。
l 2:应用框架
是一些基础组件,供上层应用所调用,可以在多个应用之间共享的功能。包括通知、视图、资源管理等。
l 3:本地库(native)
主要由C/C++库组成。
l 4:Dalvik虚拟机与核心库
Android应用使用Java语言开发,但并非运行于Java虚拟机之上,而是对.java文件进行反编译-重编译而成dex文件,运行在Dalvik虚拟机上。
Android核心库实现了大部分Java5 SE的库,但不包括Swing等不使用于Android的库,另外还添加了一些专用于Android的库。
l 5:Linux内核
Android使用标准Linux内核2.6.32(2.2平台),再加上一些Android专用驱动。各种硬件驱动在此定义。
也称为Android SDK开发。开发环境Windows/Mac/Linux皆可。
应用开发使用Java语言。
Java语言是参考C++而制定的,学习Java语言之前,若曾进行过C++开发,应再温习一遍C++的语法、类、类继承、模板等,有利于快速掌握Java中的相似部分,且不容易混淆两者的区别。
若没有C++基础,可直接学习Java语言及Java SE库。
学习Java语言时,可略过Swing界面学习,因为Android使用另一套UI库。
(1) Eclipse
使用Eclipse 3.5.2。3.6目前与ADT不兼容,不能使用。
需下载包含eclipse jdt的版本,推荐:
http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/galileosr2
安装:Eclipse解压后可以直接使用。
(2) JDK
版本5或6都可。
(3) android sdk
http://developer.android.com/sdk/index.html
安装:
a) 解压到一个目录下,例如C:\Program Files\android-sdk-windows;
b) 在环境变量PATH中添加tools目录,例如C:\Program Files\android-sdk-windows\tools;运行目录下的sdk setup.exe(仅限windows可用)添加组件,下载2.2版本。若连接失败,需选中Settings中的Force https://... sources to be fetched using http://...;
注:应用开发应基于想支持的最低版本开发,然后在所有后续版本中测试。
(4) Apache ant(可选)
Apache Ant是将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具。Linux和Mac需要安装1.6.5以上版本,Windows 需要1.7或以上。
最新版本为1.8.1。由于eclipse自带1.7.1,可跳过此步骤。
http://ant.apache.org/bindownload.cgi
安装:
a) 解压,如C:\Program Files\apache-ant-1.8.1
b) 新增一个环境变量ANT_HOME,值为C:\Program Files\apache-ant-1.8.1
c) 环境变量PATH中添加%ANT_HOME%\bin
(5) ADT
此为Android的Eclipse插件
下载、安装:
a) 在Eclipse菜单中选择Help – Install New Software
b) 点Add,随便取名,如Android Plugin,地址填
https://dl-ssl.google.com/android/eclipse/
若连接失败,则改为
http://dl-ssl.google.com/android/eclipse/
c) 选择Developer Tools,按提示进行安装
d) 安装完成后重启Eclipse
e) 菜单中选择Window – Preferences
f) 选择Android页,首次打开会弹出是否搜集使用信息的提示框,这里有点bug,需要关闭Preferences窗口才能点击该提示框
g) 设置Android页中的SDK Location,填入Android SDK所在路径,如C:\Program Files\android-sdk-windows
(6) NDK(可选)
可在应用中调用C/C++本地库
http://developer.android.com/sdk/ndk/index.html
注意:使用NDK调用本地库有性能损耗,不推荐
也称Android Source开发。
目前只能在Linux下开发。
进行系统开发的目的:
l 在自有硬件系统上运行Android,需要修改硬件驱动、硬件适配层添加或修改功能
根据开发的模块,需要掌握C、C++、Java之一或多者。开发和移植内核驱动使用C语言;本地库使用C和C++语言;本地库的JNI封装用到C++和Java;应用框架开发则完全基于Java。
操作系统建议使用Ubuntu10.4或10.10。
如果是在虚拟机中使用,需要分配1.5GB的内存和10GB以上的硬盘空间。
以下以Ubuntu 32位 10.4及froyo分支为例:
(1) 安装必备工具:
$ sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
可选工具:(用于查找内存泄漏、栈崩溃、数组越界等)
$ sudo apt-get install valgrind
(2) 安装repo
a) 新建一个目录作为安装目标,如~/bin,~表示个人目录
b) 下载
$ curl http://android.git.kernel.org/repo >~/bin/repo
c) $ chmod a+x ~/bin/repo
(3) JDK 5
a) 下载
http://www.oracle.com/technetwork/java/javase/downloads/index.html
b) 放到要安装的目录下,例如~/bin
c) $ chmod +x jdk-1_5_0_22-linux-i586.bin
d) 安装:
$ ./jdk-1_5_0_22-linux-i586.bin
(4) 配置PATH(必须加到系统变量,加到用户变量Eclipse不买账)
a) $ cd /etc
$ sudo chmod a+w profile
b) 用gedit编辑profile,末尾加上(<username>替换为你的用户名):
export JAVA_HOME="/home/<username>/bin/jdk1.5.0_22"
export CLASSPATH=".:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
export PATH="$PATH:/home/<username>/bin:$JAVA_HOME/bin"
c) 注销后重登录以生效
(5) 下载Android source
a) 建立一个目录,如androidsource
b) 进入该目录
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
配置过程中需要输入名字、邮箱获取最新源码
$ repo sync
总共2.1GB,大约要花半天时间
若要获取其他版本,参见Using Repo and Git
(6) 验证Tag
a) 导入校验密钥
$ gpg –import
将以下内容粘帖到命令行中
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----
b) 按ctrl+D结束
c) 验证标签(若有需要)
$ git tag -v tagname
(7) 编译
命令行进入source目录,运行:
make
首次编译约需2小时多,完成后目录大小5.8GB
(8) Eclipse
注意:Eclipse仅是用来编辑源码、验证编译,要生成真正可执行的输出,只能通过命令行make编译。
a) 下载:参见前文
b) 安装,解压即可
c) 命令行make编译整个Android源码
d) 命令行进入androidsource目录,输入以下:
$ cp development/ide/eclipse/.classpath .
$ chmod u+w .classpath
e) 调整Java虚拟机heap大小,修改eclipse.ini文件,将
-Xms40m
-Xmx256m
修改为
-Xms128m
-Xmx512m
f) 运行Eclipse,菜单中选择File - New - Java Project,输入项目名后,选择Create project from existing source,选取androidsouce根目录,等待Eclipse解析完成即可。
注:目前master的froyo源码要求在64位操作系统及Java 6下编译。
如果是在虚拟机中使用,需要分配1.5GB的内存和10GB以上的硬盘空间。
以下以Ubuntu 64位 10.10及master源码为例:
(1) 安装必备工具:
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev
配置X11库
$ sudo ln -s /usr/lib32/libX11.so.6 /usr/lib32/libX11.so
(2) 安装repo
a) 新建一个目录作为安装目标,如~/bin,~表示个人目录
b) 下载
$ curl http://android.git.kernel.org/repo >~/bin/repo
c) $ chmod a+x ~/bin/repo
(3) JDK 6
a) 下载
http://www.oracle.com/technetwork/java/javase/downloads/index.html
b) 放到要安装的目录下,例如~/bin
c) $ chmod +x jdk-6u22-linux-i586.bin
d) 安装:
$ ./jdk-6u22-linux-i586.bin
e) 配置PATH(必须加到系统变量,加到用户变量Eclipse不买账)$ cd /etc
$ sudo chmod a+w profile
f) 用gedit编辑profile,末尾加上(<username>替换为你的用户名):
export JAVA_HOME="/home/<username>/bin/jdk1.6.0_22"
export CLASSPATH=".:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar"
export PATH="$PATH:/home/<username>/bin:$JAVA_HOME/bin"
g) 注销后重登录以生效
(4) 下载Android source
a) 建立一个目录,如androidsource
b) 进入该目录
$ repo init -u git://android.git.kernel.org/platform/manifest.git
不带参数-b为取master源码
配置过程中需要输入名字、邮箱
c) 获取最新源码
$ repo sync
总共2.1GB,大约要花半天时间
若要获取其他版本,参见Using Repo and Git
(5) 验证Tag
a) 导入校验密钥
$ gpg –import
将以下内容粘帖到命令行中
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----
b) 按ctrl+D结束
c) 验证标签(若有需要)
$ git tag -v tagname
(6) 编译
命令行进入source目录,运行:
make
首次编译约需2小时多,完成后目录大小5.8GB
(7) Eclipse
注意:Eclipse仅是用来编辑源码、验证编译,要生成真正可执行的输出,只能通过命令行make编译。
a) 下载:参见前文
b) 安装,解压即可
c) 命令行make编译整个Android
d) 命令行进入androidsource目录,输入以下:
$ cp development/ide/eclipse/.classpath .
$ chmod u+w .classpath
e) 调整Java虚拟机heap大小,修改eclipse.ini文件,将
-Xms40m
-Xmx256m
修改为
-Xms128m
-Xmx512m
f) 运行Eclipse,菜单中选择File - New - Java Project,输入项目名后,选择Create project from existing source,选取androidsouce根目录,等待Eclipse解析完成即可。
典型的功能块,包含各个层级的开发:
(1) 在内核中添加硬件驱动。有些底层协议如蓝牙等也在内核中;
(2) 本地库实现硬件适配层、功能、JNI封装;
(3) 应用框架基于JNI接口,实现上层的功能和封装,在系统API中添加Java类接口;
(4) 基于系统API开发面向用户的应用。
如图:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。