新闻资讯
看你所看,想你所想

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状态、避免手机待机、修改系统全局设定、读取同步设定、开机自启动、重启其他套用、终止运行中的套用、设定偏好套用、震动控制、拍摄图片等。
一款套用应该根据自身提供的功能,要求合理的许可权。用户也可以分析一款套用所需许可权,从而简单判定这款套用是否安全。如一款套用是不带广告的单机版,也没有任何附加内容需要下载,那幺它要求访问网路的许可权就比较可疑。

相关推荐

声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:yongganaa@126.com