XDAndroid


XDAndroid

文章插图
XDAndroid【XDAndroid】XDAndroid是专门为Windows Mobile机型定製的Android,兼容Diamond, Diamond2, HD, HD2,Pro, Pro2,解决了GPRS和WIFI通信的问题,更是在系统速度上有了很大的提升 。
基本介绍中文名:XDAndroid
支持机型:Diamond、2,HD、2,Pro、2
语言:java
分类:软体
基本介绍已经有了很大的提升,真正距离实用化又迈进了一大步 。关于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状态、避免手机待机、修改系统全局设定、读取同步设定、开机自启动、重启其他套用、终止运行中的套用、设定偏好套用、震动控制、拍摄图片等 。一款套用应该根据自身提供的功能,要求合理的许可权 。用户也可以分析一款套用所需许可权,从而简单判定这款套用是否安全 。如一款套用是不带广告的单机版,也没有任何附加内容需要下载,那幺它要求访问网路的许可权就比较可疑 。