安卓在SOA中的运用

安卓在运用SOA研发的过程中,会针对实际情况对研发的架构和流程进行优化,通过优化过的架构和实施方案,不仅可以大大提升了整车开发的效率和灵活行以及功能落地的稳定性,同时也增加了系统的向上兼容性。

目前基于车载SOA系统的研发,应用层和底层以太网之间的交互主要是基于JNI来实现的,JNI是将cpp的动态库内置到app或者系统目录下,供app进行使用,参考下图所示:

应用层:java/kotlin代码,各种系统/三方APP

应用框架层:java/C/C++代码 Framework API+JNI方法 服务端、客户端、Linux驱动。

在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNIJava Native Interface)用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到 Linux 内核

本地依赖库/系统运行库层:C和C++

Android Runtime:核心库+Dalvik系统库

HAL(硬件抽象层):C++实现,HAL层是上层应用对底层硬件操作屏蔽的一个软件层次,就是上层应用不必关心底层硬件具体是如何工作的,只需要调用底层提供的统一接口即可。HAL层对接具体的硬件BSP接口,比如音视频接口、收音机接口、网络接口、spi接口等。

linux内核层:C语言

Android的第一层是有C语言实现,第二层由C和C++实现,第三、四层主要是有java实现的。

第1、2层之间,从linux的操作系统的角度来看,是由内核和用户空间的分界线,

第2、3层之间是本地代码层和java代码层的接口。

第3、4层之间,是android的系统API的接口。

技术难点

1.app和动态库相当于一体的,动态库中的报错也会导致app出现闪退等问题。JNI的实现方式是JVM有一套cpp和java的对应表,并依赖于JNIEnv,运行时错误很难及时定位。会大大增加系统的耦合度,也会增加调试的困难。

2.JNI的cpp是基于ndk的,并非以标准的cpp方式进行研发,与标准cpp写法有不同,需要重新熟悉。

3.车载系统服务的发布和订阅等,是通过OTA进行统一升级的,无法做到版本的记录和控制,目前的车载SOA系统会不会考虑到接口的向下兼容性。

技术实现要点

1.接口定义模块,在应用层中定义aidl接口并获取aidl接口文件,接口文件编译模块,编译aidl接口文件,生成cpp接口文件和cpp接口。hal层,用于接收应用层提供的cpp接口文件,建立hal层与cpp接口的对接渠道。

2.该架构的特征在于所述接口文件编译模块编译aidl接口文件后,自动生成java接口文件和java接口,所述java接口和cpp接口的功能定义相同;所述应用层接收java接口文件,以建立所述应用层与java接口的对接。通过上述技术方案,大大提升了接口定义的效率,且需要实现某项功能,并依赖与hal层时,可自己先定义该功能的java接口,并将生成的cpp接口文件提供给hal层,应用层自身先可按照该java接口来实现后续功能,并不耽误自己的功能实现,也不依赖对方的实现时间

3.binder模块,应用层实现java接口作为上层的client,hal层实现cpp接口作为底层server,应用层和hal层间通过binder模块以binder模式进行通信。通过上述技术方案,方便了当hal层向应用层的发送某些功能,加强了应用层与hal层之间的联系,所述binder模式通过binder driver实现,所述应用层获取hal层的一个接口作为代理接口;应用层调用代理接口并生成请求数据,发送给binder driver;hal层通过binder模块读取binder driver中的请求数据,处理并将结果返回。通过binder driver使hal层既可以读取应用层发出的请求,也可以将处理结果返回,方便了应用层和hal层之间的双向通信。在应用层中定义aidl接口并获取aidl接口文件的步骤之后包括:定义所述aidl接口文件版本号,hal层支持所有版本的服务接口。

技术总结:

车载智能系统技术领域,公开了一种基于Android AIDL的车载SOA分层开发架构及方法,方法包括在应用层中定义AIDL接口并获取AIDL接口文件;编译AIDL接口文件,获取CPP接口文件并生成CPP接口,获取JAVA接口文件并生成JAVA接口;应用层将CPP接口文件提供给HAL层,以建立HAL层与CPP接口的对接;应用层接收JAVA接口文件,以建立应用层与JAVA接口的对接。存在应用层和HAL层两个进程,大大提升了架构的清晰度,降低了耦合度,同时也提升了稳定性,使运行错误时容易进行定位,大大降低调试难度。

  • 22
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SOA(面向服务架构)是一种软件设计模式和架构风格,它通过将应用程序设计为一组互相协作的服务,实现软件系统的松耦合和可重用性。SOA常被应用于企业集成,以解决不同系统之间的数据和功能集成问题。 首先,在企业集成,不同的系统可能使用不同的技术和平台,数据格式也各不相同。SOA通过将系统拆分为一组可独立运行的服务,使得系统间的集成变得更加简单。每个服务负责实现特定的功能,并通过明确定义的接口进行通信。这种松耦合的设计使得系统能够更加灵活地适应不同的需求和变化。 其次,SOA提供了一种可重用的组件化方式。通过将功能实现为服务,不同的系统可以共享和重复使用这些服务,避免了重复开发相同的功能。这不仅加快了开发速度,还降低了成本和维护工作的复杂性。同时,服务的独立性也使得系统的演化变得更加容易,可以通过动态修改服务来实现功能的新增或修改。 此外,SOA还提供了一种标准化的接口和协议,使得不同系统之间的通信更加简单和可靠。通过使用基于XML的协议如SOAP或REST,可以跨平台、跨语言地进行系统间的通信。这样,企业可以更加方便地与外部合作伙伴或客户进行集成,实现业务的扩展和拓展。 总结起来,SOA在企业集成的应用给企业带来了许多好处。它使得系统间的集成变得更加简单和灵活,提高了开发效率和系统的可维护性。同时,SOA还提供了一种组件化和可重用的设计方式,降低了开发和维护的成本。通过标准化的接口和协议,系统间的通信变得更加稳定和可靠。总的来说,SOA在企业集成的应用为企业实现业务的快速发展和变革提供了良好的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值