第一章:
IDE:Eclipse ADT for java developer
其它: Apache Ant Java SE Development Kit5或6 Linux和Mac上使用Apache Ant 1.65+,
Windows上使用1.7+版本;(单独的JRE是不可以的,必须要有JDK),不兼容Gnu Java编译器(gcj)
Java_Home x:\xx\xx\java\JDK1.6.0-17
classpath:.;%JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar
Android为Eclipse定制一个专用插件---Android Development Tools(ADT),此插件为用户提供一个强大的开发Android应用程序的综合环境。
ADT扩展了Eclipse功能,可以让用户快速地建立Android项目,创建应用程序界面。
安装Android Development Tools plug-in
AVD(Android Virtual Device),每个AVD模拟一套虚拟设备来运行Android平台,这个平台至少要有自己的内核、系统图像和数据分区,还可以有
自己的SD卡和用户数据及外观显示器等。
Commnad:
Android list targets查看可用的平台
开发环境:
JDK,开发工具Eclipse、Android SDK,安装了ADT并进行SDK HOME的配置,创建一个AVD或使用真机(需要装驱动)
第二章:
驱动含有推动和发动之意,计算机领域的驱动也含有推动之意。
驱动程序是硬件厂商根据OS编写的配置文件,没有驱动程序,计算机中的硬件就无法工作(因为OS和硬件不认识,没法交流)。
驱动程序是硬件的一个构成部分,当安装新的硬件时,也必须安装对应的驱动程序。
windows是怎么知道安装的是什么设备,以及要复制哪些文件呢:安装是.inf文件。
.inf是从Windows95时代开始引入的一种描述设备安装信息的文件,它使用特定的语法文字来说明要安装的设备类型、生产厂商、型号、要复制的文件、复制到的目标路径,以及要添加到注册表中的信息。通过读取和解释这些文字,Windows可以知道应该如何安装驱动程序。
其它.inf文件不仅可以安装驱动程序,还可以安装与硬件并没有什么关系的软件,如Windows系统支持的“Windows更新”功能,在更新时下载的系统部件就是使用.inf文件来说明如何安装该部件的。
所谓手机驱动,就是有的手机和计算机不能直接连接,必须使用手机自带的磁盘驱动一下。其它就是安装了一个读取手机内存信息的程序。
如果通过串口连接计算机,一般不需要驱动程序,但需要用软件来实现和手机的连接。手机的附赠光盘中通常会有这样的软件。
Android SDK目录:
add-ons:里面包含官方提供的API包,最主要的是Map的API
docs:里面包含文档,即帮助文档和说明文档
platforms:针对每个版本的SDK版本提供了和其对应的API包以及一些示例文件,其中包含各个版本的Android
temp:包含一些常用 的文件模版
tools:包含一些通用的工具文件
usb_driver:包含AMD64和x86下的驱动文件
SDK Setup.exe:Android的启动文件
SDK工具集:
Android模拟器:模拟器是运行在计算机上的虚拟移动设备。
调试监视服务ddms.bat
Android调试桥adb.exe:adb是具有多种用途的工具,可以帮助管理设备和模拟器的状态:
可以通过下面几种方法加入adb:
(1)在设备上运行shell命令
(2)通过端口转发来管理模拟器或复制文件
(3)从模拟器或设备上复制来或复制走文件
Android资源打包工具aapt.exe:此工具可以创建apk文件,在apk文件中包含了Android应用程序的二进制文件和资源文件
Android接口描述语言aidl.exe:用于生成进程间接口代码
创建SD卡工具
Dx工具dx.bat将class字节码重写为Android字节码(被存储在dex文件中)
生成Ant构建文件activitycreator.bat
avd
Android作为一个移动设备的平台,其软件层次结构包括OS,中间件Middle Ware和应用程序Applications
SSL Secure Socket Layer:位于TCP/IP协议与各种应用层协议之间,为数据通信提供安全支持
FreeType:位图和矢量字体的功能
Android的各种库一般是以系统中间件的形式提供的,它们均有一个显著特点是与移动设备平台的应用密切相关。
Android运行环境主要是指虚拟机技术-Dalvik。
Dalvik虚拟机和一般Java虚拟机不同,它执行的不是Java标准的字节码(ByteCode),而是Dalvik可执行格式(.dex)中执行文件
在执行过程中,每个应用程序即一个进程(Android中一个应用就会对应Linux一个用户,Linux的一个Process).
二者的最大区别在于,Java VM是基于栈的虚拟机(Stack-based),而Dalvik是基于寄存器的虚拟机(Register-Based).
显然,后者的最大好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点。
一个Android应用程序可以利应用程序框架中以下几个部分:
Activity(活动)
Broadcast Intent Receiver(广播意图接收者)
Service(服务)
Content Provider(内容提供者)
Intent and Intent Filter
Androidmanifest.xml相当于应用的配置文件,在这个文件中必须声明应用 的名称,应用所用到的Activity,Service以及receiver等
Android根据每个进程中运行的组件及组件的状态把进程放入一个Importance Hierarchy(重要性分级)
。进程按照重要程序分类可分为以下5类:
前台进程(foreGround)
可见进程Visible
服务进程Service
后台进程Background
空进程Empty:不拥有任何活动的应用程序组件的进程。保留这种进程的唯一原因是在下次应用程序的某个组件需要运行时,不需要重新创建进程,这样可以提高启动速度
Linux和Android的关系如下:
Andorid采用Linux作为内核
Android对Linux内核做了修改,以适应其在移动设备上的应用
Android开始是作为Linux的一个分支,后来由于无法并入Linux的主开发树,已被Linux内核组从开发树中删除(2010.2)
Android是在Linux2.6的内核基础上运行的,提供核心系统服务。
内核部分还相当于一个介于硬件层和系统中其它软件组之间的一个抽象层
Android系统的系统层面的底层是LInux,中间加上了一个叫做Dalvik的Java虚拟机,表面层上面是Android运行库
在Android系统中,采用Yaffs2作为MTD nand flash文件。Android2.2以上使用Ext4文件系统:
谷歌新Nexus S智能手机将是第一款使用ext4文件系统的Android设备。谷歌本月初在Android开发者博客发表了官方声明,讨论Android上ext4的采用将如何影响第三方应用开发商。
在上周的后续文章中,ext4的开发者Ted T'so评论了过渡问题,并就fsync数据丢失问题做了进一步的澄清,他说,由于更高水平质量保证测试,在Android上的风险将是最小的。
文件系统的开发专家,T'so 在ext4的开发起到了关键作用,
ext4是目前Linux内核的标准文件系统。目前大多数Android设备使用YAFFS,一个适合用于闪存的轻量级的文件系统,通常用于移动和嵌入式设备。
YAFFS的问题,T'so在他的博客解释,“在于它是单线程的,可能‘已经成为双核系统的瓶颈’。使用多核ARM处理器的下一代Android设备中,并发性将是重要的。
我们希望看到双核心的Android设备,包括平板电脑,最早将在CES上宣布。”
Yaffs (Yet Another Flash File System) is an open-source file system specifically designed to be fast, robust and suitable for embedded use with NAND and NOR Flash. It is widely used with Linux, RTOSs, or no OS at all, in consumer devices. It is available under GNU Public License, GPL, or on commercial terms from Aleph One.
Yaffs is Open Source...
You can have a look at the code at any time. Download it now! And it’s suitable for GPL and commercially licensed projects.
Royalty Free...
Whether you use yaffs under the GPL or under a commercial licence, Yaffs is free of any per-unit royalty.
Tried and tested in millions of devices...
Yaffs is widely used in Linux and proprietary commercial RTOSs. It’s been included in hundreds of devices, and shipped as part of Google’s Android, with millions of units sold.
Yaffs is a safe choice...
Yaffs has a long history, coupled with continuing development. There are thousands of developers who have used it, and it’s deployed in many millions of devices.
An active community...
There’s an active community of people who use Yaffs and who have developed with Yaffs, just a click or two away.
Suitable for open and closed source projects...
If you want to use Yaffs on an Open Source project, then go ahead and download the GPLed version now. It is also available under a closed source licence for commercial use.
Yaffs is fully supported...
Yaffs support is available through the Yaffs community but for those problems that aren’t suitable for a public forum, we offer consultancy with direct access to our developers.
A robust flash file system...
After more than 100,000 >random< power-failures during reading or writing, a test file showed NO data corruption at all! Read more
内核的作用就是将应用程序和硬件分离开来
内核的主要任务是负责与计算机硬件进行交互,实现对硬件的编程控制和接口操作,高度对硬件资源的访问。除此之外,内核为用户应用程序提供一个高级的执行环境和访问硬件的虚拟接口。
字符设备:提供连接的数据流,应用程序可以顺序读取,通常不支持随机存取。此类设备运行按字节/字符来读写数据,modem就是字符设备
块设备:应用程序可以随机访问设备数据,程序可自行确定读取数据的位置。硬件
如果以一个原始的Linux OS为基础,改造成一个适合于Android系统,所做的工作其实非常简单,就是增加适用于Android的驱动程序。
Android的RIL(Radio Interface Layer)提供了电话服务和Radio硬件之间的抽象层。RIL负责数据的可靠传输,AT命令的发送,以及Respose的解析。
应用处理器通过AT命令集与带GPRS功能的无线通信模块通信。AT commnad由Hayes公司发明,是一个调制解调器制造商采用折一个调制解调器命令语言,每条命令以字母“AT“开头