在 OMS 手机上启动应用程序的方法 【技术领域】
本发明涉及通信领域, 尤其涉及在 OMS 手机上启动应用程序的方法。背景技术 以手机为代表的智能化移动终端设备既是计算机技术的一个重要发展方向, 又是 一个竞争十分激烈的市场。自从谷歌公司和开放手机联盟推出安卓 (Android) 操作系统和 基于 Android 的手机以来, 很快就在世界手机市场上占有了不小的份额, 各种 Android 手机 层出不穷, 由中国移动开发并推出的 OPhone 也是基于 Android 的, 也是一种 Android 手机。
开放管理系统 (OMS) 手机基于 Android 操作系统。 Android 操作系统, 实际上是对 Linux 操作系统的一种改编和扩充, 它的内核基本上就是 Linux 的内核, 但是在用户空间却 专门针对手机和移动终端设备的特点作了大幅的改进和增强, 这些改动大都与编程模式和 图形界面, 即图形化用户界面 (GUI) 有关。
使 OMS 手机兼容 WinCE/Windows Mobile 手机应用, 无论对于用户还是厂商而言却 有着重要的意义。 这是因为, 这使得 OMS 手机的用户在应用软件方面就增加了许多选择 ; 原 来的那些 WinCE/Windows Mobile 手机应用开发者, 现在也可以开发 OMS 应用了, 而且还可 以慢慢过渡到专为 OMS 开发应用软件, 成为 OMS 应用开发者, 使 OMS 手机的应用软件更加丰 富。
为了让现有的 WinCE/Windows Mobile 应用程序在 OMS 手机上运行, 需要解决 WinCE/Windows Mobile 应用程序在 OMS 手机上的启动问题。
发明内容
针对现有技术中存在的上述问题, 本发明提供了在 OMS 手机上启动应用程序的方 法。
本发明提供了在 OMS 手机上启动应用程序的方法, 包括 :
步骤 1, 在启动应用程序时, 创建代理进程 ;
步骤 2, 代理进程根据应用程序的信息生成请求并将该请求发送至中间件的服务 进程 ;
步骤 3, 代理进程代理中间件的服务进程生成的进程对系统资源的请求, 完成应用 程序的启动 ;
其中, 所述应用程序不是基于安卓操作系统的应用程序, 中间件用于将应用程序 二进制映像装载到安卓手机上。
在一个示例中, 所述应用程序为基于 WinCE 或 Windows Mobile 操作系统的应用软 件; 所述中间件为 Wine 应用程序。
在一个示例中, 代理进程在应用程序进程生成之后, 代理进程的生命周期与应用 程序进程的生命周期相同。
在一个示例中, 应用程序的信息为应用程序的二进制映像名字和路径。在一个示例中, 步骤 2 中, 代理进程通过进程间通信向 Wine 应用程序的服务进程 发送启动应用的请求, 并将代理进程自身的进程号告知 Wine 应用程序的服务进程。
在一个示例中, 步骤 3 包括 :
步骤 31, 代理进程监听 Wine 服务进程生成的对应进程的请求 ;
步骤 32, 代理进程接收到 Wine 应用程序生成的进程的请求后, 将请求发送给 Android 操作系统的相应模块, 并将操作系统返回的结果发送给请求的进程 ;
步骤 32, 当代理进程接收到 Wine 应用程序生成的进程结束的信息后, 代理进程退 出。
本发明解决了在 OMS 手机上启动 WinCE 和 Windows Mobile 应用程序的问题 ; 让 WinCE 和 Windows Mobile 应用程序通过 Wine 程序运行的过程对于 OMS 手机的用户来说完 全透明, 用户还是用 OMS 手机固有的方式启动 WinCE 和 Windows Mobile 应用程序, 保持了 应用启动方式的一致性。 附图说明
下面结合附图来对本发明作进一步详细说明, 其中 : 图 1 是 OMS 手机上启动 WinCE 和 Windows Mobile 应用程序的流程图 ; 图 2 是 OMS 手机上启动 WinCE 和 Windows Mobile 应用程序的系统示意图。具体实施方式
由于 WinCE 和 Windows Mobile 的应用程序不能直接运行在 OMS 手机上, 需要通过 运行在 OMS 手机系统上的 Wine 程序执行。 为了在 OMS 手机上启动 WinCE 和 Windows Mobile 的应用程序, 需要让安装在 OMS 手机上的 WinCE 和 Windows Mobile 应用程序在启动时通知 运行在 OMS 手机上的 Wine 程序, 然后由 Wine 程序启动 WinCE 或 Windows Mobile 的应用程 序。
为了通知 Wine 程序有 WinCE 或 Windows Mobile 的应用程序需要运行, 在用户点 击应用程序的图标后, 生成一个 AppProxy 进程。AppProxy 进程向 Wine 程序的 server 端发 送 WinCE 或 Windows Mobile 应用程序启动的请求。
Wine 程序的 server 进程收到请求之后, 创建一个线程启动 WinCE 或 Windows Mobile 的应用程序。AppProxy 进程和与实际的应用进程有着相同的生存周期。
在 WinCE 或 Windows Mobile 应用程序启动的过程中, AppProxy 承担真实的应用 程序与 Android 系统之间的接口的作用。真实的应用程序的进程向 AppProxy 请求系统的 资源, AppProxy 将请求转发给 Android 系统, 并将 Android 系统的反馈结果返回给真实的 应用程序的进程。
在 OMS 手机上启动 WinCE 和 Windows Mobile 应用程序的实现流程如下 :
1、 在 OMS 手机上每当启动一个 WinCE 或 Windows Mobile 应用程序时, 创建一个 代理进程 AppProxy, 这个进程在实际的应用进程创建后与实际的应用进程有着相同的生存 周期 ; 用户点击 WinCE 和 Windows Mobile 应用程序封装的 Android 应用程序时, 启动一个 Android 应用程序的进程, 成为 AppProxy。该进程与普通的 Android 应用的进程结构一样。
2、 AppProxy 根据 WinCE 或 Windows Mobile 应用的信息生成一个请求, 发送给 Wine应用的 server 端 ;
1)AppProxy 向 Linux 系统管理单元发送请求, 获取 Wine server 的进程信息 ( 进 程号 ) ;
2) 如 果 成 功 返 回 Wine server 进 程 的 信 息, AppProxy 读 取 WinCE 或 Windows Mobile 应用的信息 ( 二进制映像名字和路径 ), 通过 IPC 机制 ( 进程间通信 ) 向运行在 Linux 的 Wine server 进程发送启动应用的请求, 并告知 Wine server 自己进程的信息, 即 代理进程的进程号。
3) 如果不存在 Wine server 进程, AppProxy 向 Linux 系统管理单元请求启动 Wine server 进程。并会重复步骤 1)。
4)AppProxy 等待 Wine server 的反馈消息, 如果返回成功, 则 AppProxy 进入代 理进程的功能。此时 Wine server 会生成一个真正的应用进程来执行 WinCE 或 Windows Mobile 应用程序的功能。
3. 代理进程 AppProxy 代理 Wine 应用生成的进程对系统资源的请求, 完成应用程 序的启动 ;
1)AppProxy 进入代理功能之后, 监听 Wine server 生成的对应进程的请求。
2)AppProxy 接收到 Wine 应用程序生成的进程的请求后, 将请求发送给 Android 操 作系统的相应模块, 并将操作系统返回的结果发送给请求的进程。
3) 当 AppProxy 接收到 Wine 应用程序生成的进程结束的信息后, AppProxy 退出。
本发明让 WinCE 和 Windows Mobile 应用程序通过 Wine 程序运行, 该调用过程对 于 OMS 手机的用户来说完全透明, 用户还是用 OMS 手机固有的方式启动 WinCE 和 Windows Mobile 应用程序, 保持了应用启动方式的一致性。
图 1 和图 2 分别是 OMS 手机上启动 WinCE 和 Windows Mobile 应用程序的流程图 和系统示意图。
图 1 中, 用户启动应用程序后, 先判断是否为原生应用, 如果为原生应用按照安卓 应用程序启动 ; 否则, 生成 AppProxy 进程, 并获取 Wine Server 进程信息, 获取成功的话, Wine Server 创建真正应用进程, AppProxy 进程代理真正应用进程完成应用初始化 ; 如果 未获取成功, 创建 Wine Server 进程, 并重新获取 Wine Server 进程信息。
图 2 中, Linux 应用通过 IPC 将显示命令发送给中间进程, 调用 AppProxy 进程, 如 果在 Linux 应用中需要请求系统资源, Linux 应用向 AppProxy 进程发送请求, 由 AppProxy 进程和 Android 的系统调度模块进行通讯, 安卓系统的系统调度模块请求和反馈 Linux 内 核的系统资源, 如果其中需要将数据发送到输入输出设备的, Linux 内核的系统资源模块会 将结果发送至输入输出设备。
以上所述仅为本发明的优选实施方式, 但本发明保护范围并不局限于此。任何本 领域的技术人员在本发明公开的技术范围内, 均可对其进行适当的改变或变化, 而这种改 变或变化都应涵盖在本发明的保护范围之内。