基于车载Android系统SOA架构SOMEIP通信中间层实现方法及系统

文档序号:7364 发布日期:2021-09-17 浏览:82次 英文

基于车载Android系统SOA架构SOMEIP通信中间层实现方法及 系统

技术领域

本发明涉及计算机领域,更具体地,涉及一种基于车载Android系统SOA架构SOMEIP通信中间层实现方法及系统。

背景技术

智能驾驶领域中,汽车IVI系统(车载娱乐信息系统)是集成于汽车中控台的一台智能多媒体设备,越来越多的厂商采用Android系统来设计IVI系统,所以,基于Android系统SOA(面向服务)软件架构SOMEIP通信中间层的实现是智能驾驶领域中非常重要的一步。

随着汽车智能化的快速发展,SOMEIP协议被大量使用在车载ECU设备中进行车载以太网的数据通信,基于Android系统设计的IVI系统与车载ECU的通信也必须采用SOMEIP协议。现有的SOMEIP通信中间层代码实现均以Linux系统为平台,采用C++语言实现,而无法在Android系统上使用。

在Android系统上,以面向服务的架构为设计理念,结合Android系统API,实现SOMEIP通信中间层,同时服务接口的设计必须符合AUTOSAR架构规范,是一个待解决的问题。

发明内容

本发明针对现有技术中存在的技术问题,提供一种基于车载Android系统SOA架构SOMEIP通信中间层实现方法及系统。

根据本发明的第一方面,提供了一种基于车载Android系统SOA架构SOMEIP通信中间层实现方法,包括:利用Android NDK工具编译SOMEIP C++库;通过JNI接口调用SOMEIP库函数,并封装成系统服务;利用Android AIDL跨进程调用SOMEIP Service,生成ServiceManager类;制定SOA服务接口模板文件,保存用户输入的SOMEIP服务的基本服务信息;利用python脚本读取所述SOA服务接口模板文件中SOMEIP服务的基本服务信息,将所述服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件;将生成的java代码文件添加到Android工程中,与其它java代码文件打包生成SDK程序包供应用层使用。

在上述技术方案的基础上,本发明还可以作出如下改进。

可选的,所述利用Android NDK工具编译SOMEIP C++库,包括:

将SOMEIP C++库添加到Android工程编写的CMakeLists文件中,利用CMake和NDK对SOMEIPC++库进行编译,生成不同CPU架构的so文件,封装SOMEIP库通用函数,生成JNI接口。

可选的,所述通过JNI接口调用SOMEIP库函数,并封装成系统服务,包括:基于Android系统的service组件,创建系统级服务SOMEIP Service,通过JNI接口调用SOMEIP库,所述系统级服务SOMEIP Service随系统开机启动。

可选的,所述利用Android AIDL跨进程调用SOMEIP Service,生成ServiceManager类,包括:利用Android AIDL跨进程访问系统级服务SOMEIP Service,调用SOMEIP接口,并创建SOA服务proxy/skeleton的基类。

可选的,所述制定SOA服务接口模板文件,保存用户输入的SOMEIP服务的基本服务信息,包括:创建SOA服务接口模板文件,所述SOA服务接口模板文件中包含服务基本信息,所述服务基本信息包括服务名称、服务ID、服务接口信息,所述服务接口信息包括方法接口类型、方法接口名称、方法接口ID、方法接口参数以及方法所属事件组ID,所述方法接口参数为方法接口的输入输出参数及参数类型,所述SOA服务接口模板文件为Excel表格或xml文件;接收用户向所述SOA服务接口模板文件中输入的基本服务信息以及通信配置信息,所述通信配置信息包括SOMEIP通信所需的协议IP地址以及通信端口。

可选的,所述利用python脚本读取所述SOA服务接口模板文件中SOMEIP服务的基本服务信息,将所述服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件,包括:编写python脚本,通过python脚本读取用户向所述SOA服务接口模板文件中的基本服务信息,生成json字符串数据;将生成的json字符串数据输入到预先创建的SOMEIP通信中间层代码模板文件,生成通信中间层proxy/skeleton代码文件,所述SOMEIP通信中间层代码模板文件中具有SOMEIP定义的method/event/field三类方法接口的全部实现流程,且符合AUTOSAR架构规范。

可选的,所述SOMEIP通信中间层代码模板文件为jinja2代码模板文件。

根据本发明的第二方面,提供一种基于车载Android系统SOA架构SOMEIP通信中间层实现系统,包括:编译模块,用于利用Android NDK工具编译SOMEIP C++库;封装模块,用于通过JNI接口调用SOMEIP库函数,并封装成系统服务;调用模块,用于利用Android AIDL跨进程调用SOMEIP Service,生成ServiceManager类;保存模块,用于制定SOA服务接口模板文件,保存用户输入的SOMEIP服务的基本服务信息;生成模块,用于利用python脚本读取所述SOA服务接口模板文件中SOMEIP服务的基本服务信息,将所述服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件;打包模块,用于将生成的java代码文件添加到Android工程中,与其它java代码文件打包生成SDK程序包供应用层使用。

根据本发明的第三方面,提供了一种电子设备,包括存储器、处理器,所述处理器用于执行存储器中存储的计算机管理类程序时实现基于车载Android系统SOA架构SOMEIP通信中间层实现方法的步骤。

根据本发明的第四方面,提供了一种计算机可读存储介质,其上存储有计算机管理类程序,所述计算机管理类程序被处理器执行时实现基于车载Android系统SOA架构SOMEIP通信中间层实现方法的步骤。

本发明提供的一种基于车载Android系统SOA架构SOMEIP通信中间层实现方法方法及系统,利用Android NDK工具编译SOMEIP C++库;通过JNI接口调用SOMEIP库函数,并封装成系统服务;利用Android AIDL跨进程调用SOMEIP Service,;利用python脚本读取SOA服务接口模板文件中SOMEIP服务的基本服务信息,将服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件;将java代码文件添加到Android工程中,打包成SDK程序包工应用层使用,在Android系统上,以面向服务的架构为设计理念,结合Android系统API,实现SOMEIP通信中间层,同时服务接口的设计符合AUTOSAR架构规范。

附图说明

图1为本发明提供的一种基于车载Android系统SOA架构SOMEIP通信中间层实现方法流程图;

图2为本发明提供的一种基于车载Android系统SOA架构SOMEIP通信中间层实现系统的结构示意图;

图3为本发明提供的一种可能的电子设备的硬件结构示意图;

图4为本发明提供的一种可能的计算机可读存储介质的硬件结构示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

图1为本发明提供的一种基于车载Android系统SOA架构SOMEIP通信中间层实现方法流程图,如图1所示,方法包括:101、利用Android NDK工具编译SOMEIP C++库;102、通过JNI接口调用SOMEIP库函数,并封装成系统服务;103、利用Android AIDL跨进程调用SOMEIPService,生成ServiceManager类;104、制定SOA服务接口模板文件,保存用户输入的SOMEIP服务的基本服务信息;105、利用python脚本读取所述SOA服务接口模板文件中SOMEIP服务的基本服务信息,将所述服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件;106、将生成的java代码文件添加到Android工程中,与其它java代码文件打包生成SDK程序包供应用层使用。

可以理解的是,基于背景技术中的缺陷和需求,本发明提出了一种基于java语言,结合Android系统API实现SOMEIP通信中间层代码的方法。

具体实现时,利用Android NDK工具编译SOMEIP C++库;通过JNI接口调用SOMEIP库函数,并封装成系统服务;利用Android AIDL跨进程调用SOMEIP Service;利用python脚本读取SOA服务接口模板文件中SOMEIP服务的基本服务信息,将服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件;将java代码文件添加到Android工程中,打包成SDK程序包工应用层使用,至此方案结束。

本发明在Android系统上,以面向服务的架构为设计理念,结合Android系统API,实现SOMEIP通信中间层,同时服务接口的设计符合AUTOSAR架构规范;解决了Android平台SOMEIP通信中间层实现的问题,同时代码架构符合AUTOSAR规范,并利用模板生成代码文件,大大提高了开发效率,复用性高,可维护性好。

在一种可能的实施例方式中,利用Android NDK工具编译SOMEIP C++库,具体包括:将SOMEIP C++库添加到Android工程中编写的CMakeLists文件,利用CMake和NDK对SOMEIP库进行编译,生成arm、x86等不同CPU架构的so文件,封装SOMEIP库通用函数,生成java本地接口(JNI)供上层调用。

在一种可能的实施例方式中,通过JNI接口调用SOMEIP库函数,并封装成系统服务,包括:基于Android系统的service组件,创建系统级服务SOMEIP Service,通过JNI接口调用SOMEIP库,所述系统级服务SOMEIP Service随系统开机启动。

可以理解的是,在生成了java本地接口(JNI接口)后,基于Android四大组件之一的service组件,创建系统级服务SOMEIP Service,通过JNI接口调用SOMEIP库,该服务随系统开机启动。在车载系统中,安全性最为重要,而系统级服务的优点是权限高,不会被系统杀死进程而导致无法进行数据通信。

在一种可能的实施例方式中,利用Android AIDL跨进程调用SOMEIP Service,生成ServiceManager类,包括:利用Android AIDL跨进程访问系统级服务SOMEIP Service,调用SOMEIP接口,并创建SOA服务proxy/skeleton的基类。

可以理解的是,生成了系统级服务SOMEIP Service后,另起Android工程,创建ServiceManager类,利用Android AIDL(Android Interface Definition Language)跨进程访问系统级服务SOMEIP Service,调用SOMEIP接口,并创建SOA服务proxy/skeleton的基类。

在一种可能的实施例方式中,利用Android AIDL(Android InterfaceDefinition Language)跨进程访问系统级服务SOMEIP Service,创建了SOA服务proxy/skeleton的基类后,创建SOA服务接口模板文件,具体为,创建SOA服务接口模板文件,所述SOA服务接口模板文件中包含服务基本信息,所述服务基本信息包括服务名称、服务ID、服务接口信息,所述服务接口信息包括方法接口类型、方法接口名称、方法接口ID、方法接口参数以及方法所属事件组ID,所述方法接口参数为方法接口的输入输出参数及参数类型等描述信息,SOA服务接口模板文件为Excel表格或xml文件。

创建了SOA服务接口模板文件后,用户可通过SOA服务接口模板文件输入基本服务信息以及通信配置信息,通信配置信息包括SOMEIP通信所需的协议IP地址以及通信端口,其中,SOMEIP通信所需的协议主要为UDP/TCP。

在一种可能的实施例方式中,所述利用python脚本读取所述SOA服务接口模板文件中SOMEIP服务的基本服务信息,将所述服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件,包括:编写python脚本,通过python脚本读取用户向SOA服务接口模板文件中的基本服务信息,生成json字符串数据;将生成的json字符串数据输入到预先创建的SOMEIP通信中间层代码模板文件,生成通信中间层proxy/skeleton代码文件。其中,SOMEIP通信中间层代码模板文件中具有SOMEIP定义的method/event/field三类方法接口的全部实现流程,并且从服务的创建、寻找服务、request/response、订阅事件等流程设计全都符合AUTOSAR架构规范。

需要说明的是,通过104和105两个步骤,用户只需按照Excel表格或xml模板输入服务信息及服务接口信息,再通过jinja2代码模板即可自动生成SOMEIP服务的所有java代码文件,而不需要手写大量的服务重复代码,提高开发效率。

最后,将生成的服务proxy/skeleton代码文件添加到Android工程中,与其他java代码文件打包生成SDK供应用层使用,完成在Android系统上SOMEIP通信中间层代码的实现。

下面对本发明提供的车载Android系统SOA架构SOMEIP通信中间层实现方法进行整体描述,主要包括以下步骤:

(1)基于C++语言实现SOMEIP通信协议,再利用Android NDK工具编译SOMEIP C++代码,生成arm、x86等不同CPU架构的so库文件,添加入Android项目中,封装SOMEIP库的通用函数生成java本地接口(JNI),供上层调用。

(2)使用Android四大组件之一的service,通过JNI调用SOMEIP库函数,提升service权限为系统服务,随系统开机启动。

(3)基于Android IPC机制,通过Android AIDL跨进程调用SOMEIP Service,并生成ServiceManager类。

(4)使用预先指定好的Excel表格或xml模板文件,接收并保存用户输入的SOMEIP服务的服务信息、对应服务的接口信息以及通信配置信息。

(5)通过python语言编写的代码生成脚本读取保存服务信息等数据的表格或xml文件,生成json格式数据,将数据输入预先制作的SOMEIP通信中间层代码模板,生成java代码文件,所述代码SOMEIP通信中间层模板中具有所述服务方法接口的全部实现流程。

(6)将生成的服务接口java代码文件添加入Android工程中打包生成供应用层集成的Android SOMEIP通信中间层SDK文件,至此,方案结束。

图2为本发明实施例提供的一种基于车载Android系统SOA架构SOMEIP通信中间层实现系统结构图,如图2所示,一种车载Android系统SOA架构SOMEIP通信中间层实现系统,包括编译模块201、封装模块202、调用模块203、保存模块204、生成模块205和打包模块206,其中:

编译模块201,用于利用Android NDK工具编译SOMEIP C++库;封装模块202,用于通过JNI接口调用SOMEIP库函数,并封装成系统服务;调用模块203,用于利用Android AIDL跨进程调用SOMEIP Service,生成ServiceManager类;保存模块204,用于制定SOA服务接口模板文件,保存用户输入的SOMEIP服务的基本服务信息;生成模块205,用于利用python脚本读取所述SOA服务接口模板文件中SOMEIP服务的基本服务信息,将所述服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件;打包模块206,用于将生成的java代码文件添加到Android工程中,与其它java代码文件打包生成SDK程序包供应用层使用。

可以理解的是,本发明提供的一种基于车载Android系统SOA架构SOMEIP通信中间层实现系统与前述各实施例提供的车载Android系统SOA架构SOMEIP通信中间层实现方法相对应,车载Android系统SOA架构SOMEIP通信中间层实现系统的相关技术特征可参考车载Android系统SOA架构SOMEIP通信中间层实现方法的相关技术特征,在此不再赘述。

请参阅图3,图3为本发明实施例提供的电子设备的实施例示意图。如图3所示,本发明实施例提了一种电子设备300,包括存储器310、处理器320及存储在存储器310上并可在处理器320上运行的计算机程序311,处理器320执行计算机程序1311时实现以下步骤:利用Android NDK工具编译SOMEIP C++库;通过JNI接口调用SOMEIP库函数,并封装成系统服务;利用Android AIDL跨进程调用SOMEIP Service,生成ServiceManager类;制定SOA服务接口模板文件,保存用户输入的SOMEIP服务的基本服务信息;利用python脚本读取所述SOA服务接口模板文件中SOMEIP服务的基本服务信息,将所述服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件;将生成的java代码文件添加到Android工程中,与其它java代码文件打包生成SDK程序包供应用层使用。

请参阅图4,图4为本发明提供的一种计算机可读存储介质的实施例示意图。如图4所示,本实施例提供了一种计算机可读存储介质400,其上存储有计算机程序411,该计算机程序411被处理器执行时实现如下步骤:利用Android NDK工具编译SOMEIP C++库;通过JNI接口调用SOMEIP库函数,并封装成系统服务;利用Android AIDL跨进程调用SOMEIPService,生成ServiceManager类;制定SOA服务接口模板文件,保存用户输入的SOMEIP服务的基本服务信息;利用python脚本读取所述SOA服务接口模板文件中SOMEIP服务的基本服务信息,将所述服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件;将生成的java代码文件添加到Android工程中,与其它java代码文件打包生成SDK程序包供应用层使用。

本发明实施例提供的一种基于车载Android系统SOA架构SOMEIP通信中间层实现方法及系统,利用Android NDK工具编译SOMEIP C++库;通过JNI接口调用SOMEIP库函数,并封装成系统服务;利用Android AIDL跨进程调用SOMEIP Service,;利用python脚本读取SOA服务接口模板文件中SOMEIP服务的基本服务信息,将服务基本信息输入SOMEIP通信中间层代码模板文件中,生成java代码文件;将java代码文件添加到Android工程中,打包成SDK程序包工应用层使用,在Android系统上,以面向服务的架构为设计理念,结合Android系统API,实现SOMEIP通信中间层,同时服务接口的设计符合AUTOSAR架构规范,解决了Android平台SOMEIP通信中间层实现的问题,同时代码架构符合AUTOSAR规范,并利用模板生成代码文件,大大提高了开发效率,复用性高,可维护性好。

需要说明的是,在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述的部分,可以参见其它实施例的相关描述。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式计算机或者其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包括这些改动和变型在内。

完整详细技术资料下载
上一篇:石墨接头机器人自动装卡簧、装栓机
下一篇:一种基于远程字典服务的滑窗计数方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!