一种源码级兼容混合API的方法技术

技术编号:7080678 阅读:171 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种使应用软件的开发者可以在程序中混合使用由WinCE/WM?API和OMS?API提供的功能的一种源码级兼容API方法,该方法包括OMS/Android?API的实现,所述OMS/Android?API的实现包括按如下步骤开发一个DLL:C/C++语言的API函数将调用参数和所要实现的功能打包在一个过程请求中,并将这请求通过进程间通信(IPC)发送给Android平台上的一个用作服务进程的Activity;由Activity根据具体的请求加载别的Activity,并调用其某个相应的方法,然后仍通过进程间通信返回运行结果。所述进程间通信机制可以采用Socket,用作服务进程的Activity是WineProxy。

【技术实现步骤摘要】

本专利技术涉及手机应用领域,尤其涉及一种使应用软件的开发者可以在程序中混合使用由WinCE/WM API和OMS API提供的功能的一种源码级兼容API (Application Programming Interface,应用编程接口 )技术。
技术介绍
Open Mobile System是中国移动通讯集团和Google合作联合开发的一款基于 Linux内核Android平台构建的开放式手机操作系统简称0MS,它在原有Android平台基础上针对中国市场做了特殊优化,比如在硬件方面会去除Wi-Fi模块,不兼容WCDMA网络制式,加入了中移动运营的3G网络TD-SCDMA的支持。在界面和开机画面上和Android有着细微的区别,在针对中国用户的中文录入、简体中文显示都进行了特殊的优化,未来还会加入中国移动自己的产品等功能。首款使用OMS系统的是联想oPhone手机。WindowsCE (简称WinCE)是微软公司嵌入式、移动计算平台的基础,它是一个开放的、可升级的32位嵌入式操作系统,是基于掌上型电脑类的电子设备操作系统,它是精简的Windows 95, Windows CE的图形用户界面相当出色。所谓使OMS平台兼容WinCE或WM(Windows Mobile,指其它windows系列的手机操作系统)软件,是说WinCE/WM软件不经移植就可以在OMS平台上运行。然而,同样是不经过移植,实际上还是有两种不同程度的兼容1、二进制兼容。WinCE/WM软件不经重新编译就可直接在OMS平台上运行。显然, 这是最彻底的兼容,为此需要在OMS平台上由虚拟/适配层为WinCE/WM软件提供一个完整而准确的WinCE/WM运行环境,或者说提供一个完整而准确的WinCE/WM API。可想而知,要在OMS平台上提供一个绝对完整、绝对准确的WinCE/WM API,是非常困难的,实际能提供的只能是一个近似的WinCE/WMAPI。另一方面,如果真的实现了二进制兼容,就可以不必关心 WinCE/WM应用的源代码,而只要有其二进制映像就可以了。2、源码级兼容。WinCE/WM软件需要重新编译一下,也许需要对程序作一些修改,才能在OMS平台上运行。之所以需要对程序作一些修改,就是因为由虚拟/适配层所提供的只是一个近似的WinCE/WM API,而不是一个完整、准确的WinCE/WM API。显然,源码级兼容对虚拟/适配层的要求比二进制兼容要低。源码级兼容的问题是必须有WinCE/WM应用的源代码。如果单纯从兼容的角度看问题,那么二进制兼容是更高形式的兼容;实现了二进制兼容,源码级兼容就在其中了。但是,如果考虑到混合API的要求,情况就不同了,因为混合API的使用必然涉及重新编译。所谓混合API,是指在WinCE/WM应用软件的C/C++源代码中可以调用一些由 Android提供的功能,这些功能的数量、种类、与调用格式,就构成了一个Android的API。这样,原来单纯采用WinCE/WM API的应用软件编程就变成了混合API的编程,其好处主要是 开发者可以在原有WinCE/WM应用的基础上博采两个系统之长,特别是可以利用Android所提供的许多灵活而强大的功能,开发出更好的软件。如上所述,混合API 是 WinCE/WM API 加 Android API。其中的 WinCE/WM API 就是源码级兼容这个目标所要解决的问题,所以混合API的实现实际上就是Android API的实现。那么,Android API中提供的应该是些什么样的功能呢?我们知道,Android主要的编程语言是Java,所积累的资源主要是Java的类,而不是C/C++的函数。这就决定了 Android API所提供的应该是粒度比较大、内部实现比较复杂的功能,而不是小粒度的C/ C++函数。举例言之,像PlayMusic ( ), TakePicture ()那样的就是粒度比较大而内部实现比较复杂的功能;而例如Atoi ( )、LowerCaseToUpperCase ()之类的就是小粒度的C/ C++函数。显然,小粒度的C/C++函数不应该出现在Android API中,因为那样的函数体现不出Android的功能和优点,那只是clib —类的库函数而已,而且这些库函数在Windows API中也已经有了。所以,放在Android API中的应该是大粒度的、内部实现又比较复杂的功能;这些功能在Android平台上是以Java语言实现的,而在Android API中则表现为C/ C++函数。换言之,Android API所提供的是C/C++函数,这些函数必须能在Java虚拟机 Dalvik上装载和运行相应的类,再调用这些类中的某些方法,并将运行结果返回给调用这些API函数的程序。
技术实现思路
本专利技术的目的是提供一种源码级兼容混合API的方法。本专利技术解决技术问题所采用的技术方案是一种源码级兼容混合API的方法,其包括Android API的实现,所述Android API 的实现包括按如下步骤开发一个DLL C/C++语言的API函数将调用参数和所要实现的功能打包在一个过程请求中,并将这请求通过进程间通信(IPC)发送给Android平台上的一个用作服务进程的Activity ;由Activity根据具体的请求加载别的Activity,并调用其某个相应的方法,然后仍通过进程间通信返回运行结果。所述进程间通信机制采用Socket,用作服务进程的Activity是WineftOxy。 附图说明图1是本专利技术一种实施例方法示意图。 具体实施例方式本专利技术实施例的源码级兼容混合API技术如下实现源码级兼容的基础是Wine,Wine是Iinux平台下运行windows程序的模拟器,特别是Wine的那些DLL。但是Wine的DLL所实现的是Win32 API,而不是WinCE/WM API。所以,源码级兼容的实现一方面要以Wine为基础,借鉴Wine的技术路线,一方面又需要补充大量的WinCE/WM API函数,特别是以Coredll. dll为核心的几个WinCE/丽DLL中的API函数。如上所述,混合API的实现实际上就是Android API的实现,因为WinCE/WM API的实现正是源码级兼容所要解决的问题。为了向应用程序提供Android API,需要开发一个实现这个API的DLUDynamic Link Library,动态链接库),我们将其命名为Omsapi. dll。本实施例Omsapi. dll的实现采用基于远程过程调用(RPC)技术。在这个方案中, C/C++语言的API函数将调用参数和所要实现的功能打包在一个过程请求中,并将这请求通过进程间通信(Inter Process Communication,简称IPC)发送给Android平台上的一个用作服务进程的Activity,由这个Activity根据具体的请求加载别的Activity,并调用其某个相应的方法,然后仍通过IPC返回运行结果。这里的IPC机制可以采用Socket,而用作服务进程的Activity则就是WineftOxy。从系统结构的角度看,这就是Client/Ser本文档来自技高网
...

【技术保护点】
(IPC)发送给Android平台上的一个用作服务进程的Activity;由Activity根据具体的请求加载别的Activity,并调用其某个相应的方法,然后仍通过进程间通信返回运行结果。1.一种源码级兼容混合API的方法,其特征在于包括Android API的实现,所述Android API的实现包括按如下步骤开发一个DLL:C/C++语言的API函数将调用参数和所要实现的功能打包在一个过程请求中,并将这请求通过进程间通信

【技术特征摘要】

【专利技术属性】
技术研发人员:毛德操王承志徐鼎鼎陈天洲居立晗
申请(专利权)人:浙大网新科技股份有限公司
类型:发明
国别省市:86

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1