在android系统中运行ohos服务的方法、智能终端、存储介质与流程

文档序号:34816904发布日期:2023-07-19 19:52阅读:32来源:国知局
在android系统中运行ohos服务的方法、智能终端、存储介质与流程

本发明涉及安卓系统技术,尤其涉及一种在android系统中运行ohos服务的方法、智能终端、存储介质。


背景技术:

1、

2、ohos(open harmony os开源鸿蒙系统)是由开放原子开源基金会孵化及运营的开源项目,由开放原子开源基金会 open harmony 项目群工作委员会负责运作。harmony os是华为基于开源项目open harmony开发的面向多种全场景智能设备的商用版本。

3、目前开源鸿蒙系统服务在android系统中还无法直接运行,发明人认为其原因在于,虽然android和开源鸿蒙标准版目前都是基于linux内核,但android和开源鸿蒙标准版的系统服务都是通过binder技术实现跨进程通信,例如android中system server是系统服务管理者,并作为binder context;而开源鸿蒙中samgr(system ability manager)是系统服务管理者,并作为binder context。

4、然而问题在于,binder技术中binder context有且只能有一个,且他能从binder驱动中直接获取,而其他service只能通过注册到binder context管理程序servicemanager后通过service manager间接获取。

5、因此为了实现开源鸿蒙服务在android系统上运行,则需要解决2个关键问题,即解决基础库统一问题,及跨进程通信问题。


技术实现思路

1、

2、本发明的主要目的在于提供一种在android系统中运行ohos服务的方法、智能终端、存储介质,以解决背景技术中提到的2个关键问题。

3、为了实现上述目的,根据本发明的第一个方面,提供了一种在android系统中运行ohos服务的方法,步骤包括:

4、步骤s100 统一android与ohos的libc基础库;

5、步骤s200将ohos的samgr作为普通系统服务注册到android的binder管理程序service manager中,并通过service manager获取samgr,步骤包括:

6、步骤s210根据android的service manager的通信数据结构中的数据传递顺序调整ohos的service registry的相应函数传递顺序,以供在android上执行后返回结果至ohos;

7、步骤s220 当ohos的samgr启动时取消注册binder context操作,并改为通过service registry注册到android的service manager中;

8、步骤s230 设置采用单例模式实现通用接口,以获取service registry来获得samgr。

9、在可能的优选实施方式中,其中步骤s100中统一android与ohos的libc基础库的步骤包括:

10、步骤s110将预置的ohos的基础库musl替换为android 的ndk;

11、步骤s120修改ohos的abi_target为android定义的abi;

12、步骤s130将ohos的musl sysroot替换为android ndk的sysroot;

13、步骤s140修改ohos的libs prefix和postfix以符合android定义,以使编译出的bin和so能被android系统识别。

14、在可能的优选实施方式中,其中所述步骤s210的具体步骤包括:

15、步骤s211获取android的service manager中getservice(),checkservice(),addservice()函数的数据传递顺序;

16、步骤s212 根据步骤s211所获取的数据传递顺序,调整service registry的对应函数执行顺序,以向ohos的messageparcel中写入要传递的数据,然后通过sendrequest()函数将数据发送给ohos的binder,由其传递给android以在执行完后再返回相应结果给ohos。

17、为了实现上述目的,根据本发明的第二个方面,还提供了一种在android系统中运行ohos服务的方法,步骤包括:

18、步骤s100 统一android与ohos的libc基础库,步骤包括:

19、步骤s110将预置的ohos的基础库musl替换为android 的ndk;

20、步骤s120修改ohos的abi_target为android定义的abi;

21、步骤s130将ohos的musl sysroot替换为android ndk的sysroot;

22、步骤s140修改ohos的libs prefix和postfix以符合android定义,以使编译出的bin和so能被android系统识别;

23、步骤s200将ohos的samgr作为普通系统服务注册到android的binder管理程序service manager中,并通过service manager获取samgr,步骤包括:

24、步骤s211获取android的service manager中getservice(),checkservice(),addservice()函数的数据传递顺序;

25、步骤s212 根据步骤s211所获取的数据传递顺序,调整service registry的对应函数执行顺序,以向ohos的messageparcel中写入要传递的数据,然后通过sendrequest()函数将数据发送给ohos的binder,由其传递给android以在执行完后再返回相应结果给ohos;

26、步骤s220当ohos的samgr启动时取消注册binder context操作,并改为通过service registry注册到android的service manager中;

27、步骤s230 设置采用单例模式实现通用接口,以获取service registry来获得samgr。

28、为了实现上述目的,根据本发明的第三个方面,还提供了一种智能终端,其上运行android系统,其包括:存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器执行所述计算机程序时,实现上述中任一所述的android系统中运行ohos服务的方法步骤。

29、为了实现上述目的,根据本发明的第四个方面,还提供了一种存储介质,可被计算机读取,所述存储介质上存储有计算机程序,其中所述计算机程序被处理器执行时,实现上述中任一项所述的android系统中运行ohos服务的方法步骤。

30、通过本发明提供的该在android系统中运行ohos服务的方法、智能终端、存储介质,能够巧妙的将开源鸿蒙和android使用的libc基础库统一,从而使得开源鸿蒙的文件也能在android系统中执行,之后将开源鸿蒙的系统服务管理者samgr作为普通系统服务注册到android的binder管理程序service manager中,并通过service manager获取samgr,而开源鸿蒙的其他系统服务仍由samgr管理,籍此便可实现开源鸿蒙的跨进程通信,让开源鸿蒙service的c/s架构正常运行,以达到在android系统中也能运行ohos服务的目的。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1