在android系统中运行ohos服务的方法、智能终端、存储介质技术方案

技术编号:38208001 阅读:10 留言:0更新日期:2023-07-21 16:57
本发明专利技术提供了一种在android系统中运行ohos服务的方法、智能终端、存储介质,其中方法步骤包括:步骤S100 统一android与ohos的libc基础库;步骤S200将ohos的samgr作为普通系统服务注册到android的binder管理程序service manager中,并通过service manager获取samgr,步骤包括:步骤S210根据android的service manager的通信数据结构中的数据传递顺序调整ohos的service registry的相应函数传递顺序,以供在android上执行后返回结果至ohos;步骤S220 当ohos的samgr启动时取消注册binder context操作,并改为通过service registry注册到android的service manager中;步骤S230 设置采用单例模式实现通用接口,以获取service registry来获得samgr,籍此实现将开源鸿蒙服务在android系统上运行。源鸿蒙服务在android系统上运行。源鸿蒙服务在android系统上运行。

【技术实现步骤摘要】
在android系统中运行ohos服务的方法、智能终端、存储介质


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

技术介绍

[0003][0004]ohos(Open Harmony OS开源鸿蒙系统)是由开放原子开源基金会孵化及运营的开源项目,由开放原子开源基金会 Open Harmony 项目群工作委员会负责运作。Harmony OS是华为基于开源项目Open Harmony开发的面向多种全场景智能设备的商用版本。
[0005]目前开源鸿蒙系统服务在android系统中还无法直接运行,专利技术人认为其原因在于,虽然android和开源鸿蒙标准版目前都是基于linux内核,但android和开源鸿蒙标准版的系统服务都是通过binder技术实现跨进程通信,例如android中system server是系统服务管理者,并作为binder context;而开源鸿蒙中samgr(system ability manager)是系统服务管理者,并作为binder context。
[0006]然而问题在于,binder技术中binder context有且只能有一个,且他能从binder驱动中直接获取,而其他service只能通过注册到binder context管理程序service manager后通过service manager间接获取。
[0007]因此为了实现开源鸿蒙服务在android系统上运行,则需要解决2个关键问题,即解决基础库统一问题,及跨进程通信问题。

技术实现思路

[0008][0009]本专利技术的主要目的在于提供一种在android系统中运行ohos服务的方法、智能终端、存储介质,以解决
技术介绍
中提到的2个关键问题。
[0010]为了实现上述目的,根据本专利技术的第一个方面,提供了一种在android系统中运行ohos服务的方法,步骤包括:
[0011]步骤S100 统一android与ohos的libc基础库;
[0012]步骤S200将ohos的samgr作为普通系统服务注册到android的binder管理程序service manager中,并通过service manager获取samgr,步骤包括:
[0013]步骤S210根据android的service manager的通信数据结构中的数据传递顺序调整ohos的service registry的相应函数传递顺序,以供在android上执行后返回结果至ohos;
[0014]步骤S220 当ohos的samgr启动时取消注册binder context操作,并改为通过service registry注册到android的service manager中;
[0015]步骤S230 设置采用单例模式实现通用接口,以获取service registry来获得samgr。
[0016]在可能的优选实施方式中,其中步骤S100中统一android与ohos的libc基础库的步骤包括:
[0017]步骤S110将预置的ohos的基础库musl替换为android 的ndk;
[0018]步骤S120修改ohos的abi_target为android定义的abi;
[0019]步骤S130将ohos的musl sysroot替换为android ndk的sysroot;
[0020]步骤S140修改ohos的libs prefix和postfix以符合android定义,以使编译出的bin和so能被android系统识别。
[0021]在可能的优选实施方式中,其中所述步骤S210的具体步骤包括:
[0022]步骤S211获取android的service manager中getService(),checkService(),addService()函数的数据传递顺序;
[0023]步骤S212 根据步骤S211所获取的数据传递顺序,调整service registry的对应函数执行顺序,以向ohos的MessageParcel中写入要传递的数据,然后通过SendRequest()函数将数据发送给ohos的binder,由其传递给android以在执行完后再返回相应结果给ohos。
[0024]为了实现上述目的,根据本专利技术的第二个方面,还提供了一种在android系统中运行ohos服务的方法,步骤包括:
[0025]步骤S100 统一android与ohos的libc基础库,步骤包括:
[0026]步骤S110将预置的ohos的基础库musl替换为android 的ndk;
[0027]步骤S120修改ohos的abi_target为android定义的abi;
[0028]步骤S130将ohos的musl sysroot替换为android ndk的sysroot;
[0029]步骤S140修改ohos的libs prefix和postfix以符合android定义,以使编译出的bin和so能被android系统识别;
[0030]步骤S200将ohos的samgr作为普通系统服务注册到android的binder管理程序service manager中,并通过service manager获取samgr,步骤包括:
[0031]步骤S211获取android的service manager中getService(),checkService(),addService()函数的数据传递顺序;
[0032]步骤S212 根据步骤S211所获取的数据传递顺序,调整service registry的对应函数执行顺序,以向ohos的MessageParcel中写入要传递的数据,然后通过SendRequest()函数将数据发送给ohos的binder,由其传递给android以在执行完后再返回相应结果给ohos;
[0033]步骤S220当ohos的samgr启动时取消注册binder context操作,并改为通过service registry注册到android的service manager中;
[0034]步骤S230 设置采用单例模式实现通用接口,以获取service registry来获得samgr。
[0035]为了实现上述目的,根据本专利技术的第三个方面,还提供了一种智能终端,其上运行android系统,其包括:存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器执行所述计算机程序时,实现上述中任一所述的android系统中运行ohos服务的方法步骤。
[0036]为了实现上述目的,根据本专利技术的第四个方面,还提供了一种存储介质,可被计算机读取,所述存储介质上存储有计算机程序,其中所述计算机程序被处理器执行时,实现上
述中任一项所述的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种在android系统中运行ohos服务的方法,步骤包括:步骤S100 统一android与ohos的libc基础库;步骤S200将ohos的samgr作为普通系统服务注册到android的binder管理程序service manager中,并通过service manager获取samgr,步骤包括:步骤S210根据android的service manager的通信数据结构中的数据传递顺序调整ohos的service registry的相应函数传递顺序,以供在android上执行后返回结果至ohos;步骤S220 当ohos的samgr启动时取消注册binder context操作,并改为通过service registry注册到android的service manager中;步骤S230 设置采用单例模式实现通用接口,以获取service registry来获得samgr。2.根据权利要求1所述的android系统中运行ohos服务的方法,其中步骤S100中统一android与ohos的libc基础库的步骤包括:步骤S110将预置的ohos的基础库musl替换为android 的ndk;步骤S120修改ohos的abi_target为android定义的abi;步骤S130将ohos的musl sysroot替换为android ndk的sysroot;步骤S140修改ohos的libs prefix和postfix以符合android定义,以使编译出的bin和so能被android系统识别。3.根据权利要求1所述的android系统中运行ohos服务的方法,其中所述步骤S210的具体步骤包括:步骤S211获取android的service manager中getService(),checkService(),addService()函数的数据传递顺序;步骤S212 根据步骤S211所获取的数据传递顺序,调整service registry的对应函数执行顺序,以向ohos的MessageParcel中写入要传递的数据,然后通过SendRequest()函数将数据发送给ohos的binder,由其传递给android以在执行完后再返回相应结果给...

【专利技术属性】
技术研发人员:许鹏江南梅俊明
申请(专利权)人:上海卓易科技股份有限公司
类型:发明
国别省市:

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

1