标题：XDAndroid
基本介绍
XDAndroid是XDA高手专门为Windows Mobile机型定制的Android，兼容Diamond,  安装图Diamond2, HD, HD2、Pro, Pro2，解决了GPRS和WIFI通信的问题，更是在系统速度上有
了很大的提升，真正距离实用化又迈进了一大步。
关于Android，社会舆论褒贬不一，具体还得亲自体验一下。目前支持机型：Diamond、Diamond2、HD、HD2、Pro、Pro2。
XDAndroid通过使用HARET(一款在winCE环境下引导至Linux系统的引导程序)，将手机引导进入android系统。在进入android系统后，手机上正在运行的Windows Mobile系统即被关闭，所以XDAndroid性能与所刷的系统ROM无关。XDAndroid已基本上已经能够完美运行，但从兼容性方面，鉴于所以底层驱动皆为第三方编写，对于某些windows mobile 手机依然不太兼容。有时可能会出现无法启动或自动重启的情况。而且由于对存储卡依赖过高，使得系统的耗电量比原来的系统增加了许多。
系统架构
应用程序Android以Java为编程语言，从接口到功能，都有层出不穷的变化，其中Activity等同于J2ME的MIDlet，一个 Activity 类（class）负责创建视窗（window），一个活动中的Activity就是在 foreground（前景）模式，背景运行的程序叫做Service。两者之间通过由ServiceConnection和AIDL连结，达到复数程序同时运行的效果。如果运行中的 Activity 全部画面被其他 Activity 取代时，该 Activity 便被停止（stopped），甚至被系统清除（kill）。
View等同于J2ME的Displayable，程序人员可以通过 View 类与“XMLlayout”档将UI放置在视窗上，Android 1.5的版本可以利用 View 打造出所谓的 Widgets，其实Widget只是View的一种，所以可以使用xml来设计layout，HTC的Android Hero手机即含有大量的widget。至于ViewGroup 是各种layout 的基础抽象类（abstract class），ViewGroup之内还可以有ViewGroup。View的构造函数不需要再Activity中调用，但是Displayable的是必须的，在Activity 中，要通过findViewById()来从XML 中取得View，Android的View类的显示很大程度上是从XML中读取的。View 与事件（event）息息相关，两者之间通过Listener 结合在一起，每一个View都可以注册一个event listener，例如：当View要处理用户触碰（touch）的事件时，就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。中介软件操作系统与应用程序的沟通桥梁，应用分为两层：函数层（Library）和虚拟机（Virtual Machine）。 Bionic是 Android 改良libc的版本。Android 同时包含了Webkit，所谓的Webkit 就是Apple Safari 浏览器背后的引擎。Surface flinger 是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的Bionic Libc。
Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块：PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。
Android 使用skia 为核心图形引擎，搭配OpenGL/ES。skia与Linux Cairo功能相当，但相较于Linux Cairo, skia 功能还只是雏形的。2005年Skia公司被Google收购，2007年初，Skia GL源码被公开，目前Skia 也是Google Chrome 的图形引擎。
Android的多媒体数据库采用SQLite数据库系统。数据库又分为共用数据库及私用数据库。用户可通过ContentResolver类（Column）取得共用数据库。
Android的中间层多以Java 实现，并且采用特殊的Dalvik 虚拟机（Dalvik Virtual Machine）。Dalvik虚拟机是一种“暂存器型态”（Register Based）的Java虚拟机，变量皆存放于暂存器中，虚拟机的指令相对减少。
Dalvik虚拟机可以有多个实例（instance）, 每个Android应用程序都用一个自属的Dalvik虚拟机来运行，让系统在运行程序时可达到优化。Dalvik 虚拟机并非运行Java字节码（Bytecode），而是运行一种称为.dex格式的文件。硬件抽像层Android 的 HAL（硬件抽像层）是能以封闭源码形式提供硬件驱动模块。HAL 的目的是为了把 Android framework 与 Linux kernel 隔开，让 Android 不至过度依赖 Linux kernel，以达成 kernel independent 的概念，也让 Android framework 的开发能在不考量驱动程序实现的前提下进行发展。
HAL stub 是一种代理人（proxy）的概念，stub 是以 *.so 档的形式存在。Stub 向 HAL“提供”操作函数（operations），并由 Android runtime 向 HAL 取得 stub 的 operations，再 callback 这些操作函数。HAL 里包含了许多的 stub（代理人）。Runtime 只要说明“类型”，即 module ID，就可以取得操作函数。编程语言Android 是运行于 Linux kernel之上，但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能，Android 大都没有支持，包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic 取代Glibc、以Skia 取代Cairo、再以opencore 取代FFmpeg 等等。Android 为了达到商业应用，必须移除被GNU GPL授权证所约束的部份，例如Android将驱动程序移到 userspace，使得Linux driver 与 Linux kernel彻底分开。bionic/libc/kernel/ 并非标准的kernel header files。Android 的 kernel header 是利用工具由 Linux kernel header 所产生的，这样做是为了保留常数、数据结构与宏。
目前Android 的 Linux kernel控制包括安全（Security），存储器管理（Memory Management），程序管理（Process Management），网络堆栈（Network Stack），驱动程序模型（Driver Model）等。下载Android源码之前，先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。安全与权限Android本身是一个权限分立的操作系统。在这类操作系统中，每个应用都以唯一的一个系统识别身份运行（Linux用户ID与群组ID）。系统的各部分也分别使用各自独立的识别方式。Linux就是这样将应用与应用，应用与系统隔离开。
系统更多的安全功能通过权限机制提供。权限可以限制某个特定进程的特定操作，也可以限制每个URI权限对特定数据段的访问。
Android安全架构的核心设计思想是，在默认设置下，所有应用都没有权限对其他应用、系统或用户进行较大影响的操作。这其中包括读写用户隐私数据（联系人或电子邮件），读写其他应用文件，访问网络或阻止设备待机等。
安装应用时，在检查程序签名提及的权限，且经过用户确认后，软件包安装器会给予应用权限。从用户角度看，一款Android应用通常会要求如下的权限：
拨打电话、发送短信或彩信、修改/删除SD卡上的内容、读取联系人信息、读取日程信息，写入日程数据、读取电话状态或识别码、精确的（基于GPS）地理位置、模糊的（基于网络获取）地理位置、创建蓝牙连接、对互联网的完全访问、查看网络状态，查看WiFi状态、避免手机待机、修改系统全局设置、读取同步设定、开机自启动、重启其他应用、终止运行中的应用、设定偏好应用、震动控制、拍摄图片等。
一款应用应该根据自身提供的功能，要求合理的权限。用户也可以分析一款应用所需权限，从而简单判定这款应用是否安全。如一款应用是不带广告的单机版，也没有任何附加内容需要下载，那么它要求访问网络的权限就比较可疑。