Android源码的下载
在这里面以Ubuntu(x86)操作系统为例,说明下载Android的步骤:
下载必要工具:
下载GIT工具:
$ sudo apt-get install git-core gnupg
下载JDK6:
$ sudo apt-get install sun-java6-jdk
下载下列工具包:flex, bison, gperf, libsdl-dev, libesd0-dev, libwxgtk2.6-dev (optional), build-essential, zip, curl
$ sudo apt-get install flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
下载Valgrind工具:
$ sudo apt-get install valgrind
安装Repo工具:
创建目录存放Repo:
$ cd ~
$ mkdir bin
$ export PATH=~/bin:$PATH
下载Repo:
$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo
创建文件夹用于存放Android源码:
$ mkdir mydroid
$ cd mydroid
配置Repo:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
下载Android源代码:
$ repo sync
注意:因为网络不稳定的原因,下载过程中经常发生下载中断的现象,这里提供通过脚本的方式自动下载当下载中断发生时,脚本如下:
#!/bin/bash
echo "======start repo sync======"
repo sync
while [ $? = 1 ]; do
echo “======sync failed, re-sync again======”
sleep 3
repo sync
done
将该脚本保存为getAndroid.sh,接着修改该文件属性:$ chmod 711 getAndroid.sh。然后运行该脚本即可下载Android源代码:
$ ./getAndroid.sh
Android源码的编译
当Android源代码下载完毕后,输入下面两条命令即可开始编码。
$ cd ~/mydroid
$ make
源代码的编译是一个很慢长的过程,在我的电脑上花费了大约3个小时。
Linux内核编译
在Windows操作系统上构建Android应用程序开发环境
下载最新的Android SDK
http://code.google.com/android/download.html
选择Windows版本的SDK,下载后直接解压缩就可以使用,为了在控制台中直接使用SDK中的工具,把SDK的目录添加到Windows的path 环境变量中。
下载JDK6
http://java.sun.com/javase/downloads/index.jsp
下载Eclipse 3.4版本
http://www.eclipse.org/downloads/
安装Android插件(ADT)
ADT(Android Development Tools)是Eclipse的一个插件,专门用于在Eclipse上开发Android应用程序。ADT插件的下载安装步骤如下:
启动Eclipse,点击菜单Help > Software Updates
点击Available Software标签
点击Add Site,在输入框中填入如下URL:
https://dl-ssl.google.com/android/eclipse/
然后点击OK
这时在软件列表中会出来ADT插件,如图:
勾选上Developer Tools后,点击Install按钮。
在弹出的安装窗口中,选择Android Developer Tools,点击Finish。
然后程序将在后台下载并安装ADT插件。安装完毕后,重启Eclipse。
Eclipse重启之后,要配置Android的SDK路径:
选择Windows > Preferences
选择 Android 属性面板
点击Browse 选择Android SDK的目录
点击Apply,接着点击OK。
设置Eclipse的JavaJDK的属性设置。
选择 Window > Preferences... 打开编辑属性窗口
选择 Java 属性面板
选择Java编译器为6.0
点击 Apply, 和 OK
编写Android应用程序
利用Eclipse工具可以很方便地实现Android程序的开发
选择File > New > Project 菜单创建一个新的Android工程
在新建的Android工程中,ADT工具会自动创建一个基本的程序框架,我们要做的就是在这框架的基础上添加代码实现想要的功能。
代码写好之后,选择Project > Build Project对整个工程进行编译。编译出来的是一个打包好的APK格式的程序。
选择Run > Run运行程序,也可以选择Run > Debug对程序进行调试。目标程序可以在具体机器中运行(如G1手机),不能在具体机器中调试,但可以在模拟器中进行调试。
Google也提供了ADB命令行工具用于上传程序到设备(手机或模拟器),或者从设备中下载数据到PC。
Android SDK文件夹结构分析
Android SDK文件结构如图:
其中:
Docs:文件夹中存放的是开发文档。
Samples:文件夹中存放着Google提供的例子
Tools:文件夹存放着各种工具(包括模拟器、ADB)
Tools>Lib:文件夹中存放着很多文件,这些文件是在编译Android程序时要用到的(还有一个文件是SDK根目录下的android.jar)。
Tools>lib>fonts:可能是为模拟器提供各种字体的支持(目前未确定)
Tools>lib>images:这个文件夹中存放着模拟器运行时要用到的文件。这些文件如下:
System.img:存放Android系统的映像文件,所使用的文件系统为YAFFS2,该文件中的内容就是/System文件夹中的内容(可通过adb shell命令查看到),使用mkyaffs2工具可将/System文件夹打包成System.img文件
Userdata.img:存放初始化数据的映像文件,也是YAFFS2文件系统,该文件中的内容就是/Data文件夹中的内容。
Ramdisk.img:这是一个普通的压缩文件,里面存放的内容大致上是系统运行时用到的一些参数设定,应该是提供给Linux Kernel起动时使用
Kernel-qemu:这是Linux Kernel。-qemu是指带模拟器功能的Kernel。
Skins:该文件夹中存放的是模拟器的界面皮肤。
其中,System.img、Userdata.img、Ramdisk.img这三个文件在编译Android源代码时可以得到,Kernel-qemu文件在编译Linux内核时可以得到(得到的应该是一个叫做zImage的文件)
Tools>lib>res:(目前未确定)
Android源代码结构
在网络上有一份源代码结构的文档,但还不全,我这边只截取出一级目录结构:
|-- Makefile (全局的Makefile)
|-- bionic (Bionic含义为仿生,这里面是一些基础的库的源代码)
|-- bootloader (引导加载器)
|-- build (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)
|-- dalvik (JAVA虚拟机)
|-- development (程序开发所需要的模板和工具)
|-- external (目标机器使用的一些库)
|-- frameworks (应用程序的框架层)
|-- hardware (与硬件相关的库)
|-- kernel (Linux2.6的源代码)
|-- packages (Android的各种应用程序)
|-- prebuilt (Android在各种平台下编译的预置脚本)
|-- recovery (与目标的恢复功能相关)
`-- system (Android的底层的一些库)
Android手机所用到的Windows驱动源代码、还有SDK中Tools目录下的大多数工具的源代码都可以在Android源代码中找到
使用Eclipse工具进行应用程序开发 – 熟悉Eclipse工具的使用
使用XML语言描述各种资源(如字符串、控件等) - 熟悉XML描述语言
使用JAVA编写应用程序 – 熟悉JAVA语法
Android提供了各种类的接口供应用程序使用 – 熟悉Android接口
大体上,Android源程序是由3个部分组成的:Java代码、XML文件、资源文件(如图片等)。
Java源代码—(JAVA编译器)-->.class字节码—(dx)à.dex文件。.dex文件加上一些资源文件通过aapt工具生成.apk文件