By 高焕堂 2011/09/09  

[ IT史上最完整、最经典的软件框架开发技术宝典 (上百篇经典文章&eBooks) ] 

[ 請指教:高老師的免費on-line教學視頻 ] 

                                                                                                            

[Go Back]  

 

HAL(Hardware Abstraction Layer)技术观点(5):

SDK Service如何透过JNI呼叫System Service呢?

 

1.  启动系统服务(System Service)

    Android提供了一些Java层的系统服务,例如SystemServer套件里的Android Service(如AudioService.java)就是Java层的系统服务。Android提供了一些C++层的系统服务,例如CamerService.cpp就是C++层的系统服务。这些系统服务是系统启动时(即手机开机时)就启动了(且透过ServiceManager而加入到Binder Driver里)。如下图: 

 

 图1、启动核心服务

 

2.  载入APK(即App)

      APK的要素就是Activity类别,其提供亲切好用的UI给用户来使用。这些UI模块可以透过Java层的ServiceManager(即ServiceManager.java)去Binder Driver里取出Android Service,回传IBinder接口给UI模块。随后,UI模块就可透过IBinder接口去呼叫Android Service,再透过JNI Native Code而呼叫HAL 模块。(如下图2里的红色箭头所示) [歡迎光臨 高煥堂 網頁: http://www.cnblogs.com/myEIT/ ]

 

  图2、载入APK

      此外,这些UI模块也可以透过JNI Native Code而呼叫C++层的ServiceManger(即ServiceManager.cpp,它也是一项Native Service)去Binder Driver里取出Native Service,回传IBinder接口给JNI Native Code。(如上图2里的蓝色箭头所示)。

 

3. App里的SDK Service 

      SDK Service属于APK里的类别。SDK Service、Android Service和Native Service合称为Android平台里的三种主要的服务。其中,Android Service和Native Service归属于系统服务,而SDK Service则归属于应用程序(APK)。这SDK Service就如同上述的UI模块,可以呼叫系统服务。如下图: 

 

  图3、SDK Service

 

4.  结语

    大家都知道,一辆汽车里的设备,可分为「前装型设备」与「后装型设备」,例如安全气囊、ABS煞车等属于前装设备,而沙发座椅、GPS、车载电视等则属于后装设备。在一台计算机里,其软件系统也可分为「前装型设备」与「后装型设备」。凡是在开机过程中会启动(或使用到)的软件模块,都是属于前装设备,这种软件通称为「系统软件」,其中有些功能用来直接支持或服务上层应用软件,就称之为「系统服务」或「核心服务」(Core Service),其属于前装型服务。

    至于,开机完成后,由手机用户从Android Market下载来安装的模块(或称APK)则称为应用软件(Application),就属于后装型软件,其中有些功能用来处理幕后事务,就称为SDK-Service,其属于后装型服务。在Android平台里,像HTC等手机厂会基于Google Android而将前装型的Core Service安装于手机内,通常必须先拥有Root权限才能改变这种服务。在Android平台里,应用程序开发者会去使用SDK开发工具来开发各式各样的应用程序(简称App),也包含App里的SDK-Service。

    App开发者撰写了SDK-Service,将他打包于APK里,放到Android Market里,让手机用户从Android Market下载来安装。由于App开发者使用SDK工具来开发App,也开发其(即AP)内的Service,于是这种服务就称为SDK-Service。也有人认为这种后装型的服务,都必须继承SDK套件里的Service.java基类,所以称之为SDK-Service。大家都知道,一辆汽车里的设备,可分为「前装型设备」与「后装型设备」,例如安全气囊、ABS煞车等属于前装设备,而沙发座椅、GPS、车载电视等则属于后装设备。在一台计算机里,其软件系统也可分为「前装型设备」与「后装型设备」。凡是在开机过程中会启动(或使用到)的软件模块,都是属于前装设备,这种软件通称为「系统软件」,其中有些功能用来直接支持或服务上层应用软件,就称之为「系统服务」或「核心服务」(Core Service),其属于前装型服务。

     至于,开机完成后,由手机用户从Android Market下载来安装的模块(或称APK)则称为应用软件(Application),就属于后装型软件,其中有些功能用来处理幕后事务,就称为SDK-Service,其属于后装型服务。在Android平台里,像HTC等手机厂会基于Google Android而将前装型的Core Service安装于手机内,通常必须先拥有Root权限才能改变这种服务。在Android平台里,应用程序开发者会去使用SDK开发工具来开发各式各样的应用程序(简称App),也包含App里的SDK-Service。App开发者撰写了SDK-Service,将他打包于APK里,放到Android Market里,让手机用户从Android Market下载来安装

[Go Back]