一种兼容同名AIDL的方法、装置及计算机程序产品与流程

文档序号:28946268发布日期:2022-02-19 09:03阅读:223来源:国知局
一种兼容同名AIDL的方法、装置及计算机程序产品与流程
一种兼容同名aidl的方法、装置及计算机程序产品
技术领域
1.本发明涉及应用软件技术领域,具体涉及一种兼容同名安卓接口定义语言(android interface definition language,aidl)的方法、装置及计算机程序产品。


背景技术:

2.aidl是安卓(android)中一种跨进程通讯方式,它包含文件名、包名、接口类名、若干接口函数,每个接口函数有函数名、参数类型、返回值类型等信息。通常一个安卓的项目会随着产品的发布以迭代的方式不断演进。如果一个安卓项目定义了一个aidl,并实现了它所定义的接口功能,那么这个aidl就与承载它的每一代产品具备了绑定的关系。即每一代产品都对应每一代的aidl,会出现第一代产品对应第一代的aidl、第二代产品对应第二代的aidl、第三代产品对应第三代的aidl
……
已经售卖出去的产品已经被用户广泛使用,无法被回收。由于每一代产品都是从同一项目传承下来的,每一代产品中可能具有相同的文件名、包名、接口类别等。
3.安卓对于aidl有一个先后版本兼容的支持策略。但是该支持策略条件比较苛刻。该支持策略条件包括:aidl的内容不变,包括函数的顺序、名称、参数数量、参数类型、返回值类型、扇入扇出的方向等都不能变化。若需要在新版本的增加新的内容,只能在原有的内容尾部增加新的接口函数。
4.但是随着功能的不同演进。上一代的aidl的定义可能已经不能满足当前产品的需求。因此可能需要在当前代调整aidl的接口定义。例如,需要删除无用的接口函数,增加新的接口函数、修改已有的接口函数、调整接口函数顺序等。但是安卓对于aidl的支持策略不能满足该需求。所以,在售出若干代产品之后,每一代中aidl的定义以及实现有的相同,有的不同。例如,若要给这些产品在线升级一款应用,而这款应用刚好要使用与该产品相对应的一代aidl中的一个接口函数,按照安卓对于aidl的兼容支持策略是无法做到的。


技术实现要素:

5.本技术提供了一种兼容同名aidl的方法,该方法包括:获取产品型号;根据所述产品信号获取与所述产品型号对应的目标函数序号;调用与所述目标函数序号对应的安卓接口定义语言aidl。这样,当售出若干代产品之后,可以根据产品型号获取与产品型号对应的目标函数序号,从而获取到与该产品对应的aidl,这样使得产品可以与任意代的aidl相兼容。
6.可选的,结合第一方面,所述获取产品型号之前,所述方法还包括:确定函数序号与至少一个aidl的对应关系,所述函数序号包括所述目标函数序号;所述调用与所述目标函数序号对应的安卓接口定义语言aidl包括:根据所述对应关系调用与所述目标函数序号对应的aidl。
7.可选的,结合第一方面,所述函数序号被装载于目标数组中,所述调用所述目标函数序号对应的安卓接口定义语言aidl包括:遍历所述目标数组中的元素;当所述元素为所
述目标函数序号时,调用所述与所述目标函数序号对应的aidl。
8.可选的,结合第一方面,所述调用与所述目标函数序号对应的aidl包括:传输与所述对应的aidl相应的参数。
9.本技术第二方面提供了一种兼容同名aidl的装置,其特征在于,所述装置包括:获取模块,用于获取产品型号;处理模块,用于根据所述产品信号获取与所述产品型号对应的目标函数序号;调用模块,用于调用与所述目标函数序号对应的安卓接口定义语言aidl。
10.可选的,结合第二方面,所述处理模块,还用于确定函数序号与至少一个aidl的对应关系,所述函数序号包括所述目标函数序号;所述调用模块,具体用于根据所述对应关系调用与所述目标函数序号对应的aidl。
11.可选的,结合第二方面,所述函数序号被装载于目标数组中,所述调用模块,具体用于遍历所述目标数组中的元素;所述调用模块,具体用于当所述元素为所述目标函数序号时,调用所述与所述目标函数序号对应的aidl。
12.可选的,结合第二方面,所述调用模块,具体用于传输与所述对应的aidl相应的参数。
13.本技术第三方面提供了一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或指令,当所述计算机程序或指令在计算机设备上运行时,使得所述计算机设备执行如本技术第一方面至第一方面任意一种可能的实现方式中所述的方法。
14.本技术第四方面提供了一种兼容同名aidl的装置,其特征在于,所述装置包括:处理器和存储器,所述处理器和所述存储器耦合,所述存储器用于存储计算机程序或指令,所述处理器用于执行所述存储器中的计算机程序或指令,以实现如本技术第一方面至第一方面的任意一种可能的实现方式中所述的方法。
15.本技术提供了一种兼容同名aidl的方法,该方法包括:获取产品型号;根据所述产品信号获取与所述产品型号对应的目标函数序号;调用与所述目标函数序号对应的安卓接口定义语言aidl。这样,当售出若干代产品之后,可以根据产品型号获取与产品型号对应的目标函数序号,从而获取到与该产品对应的aidl,这样使得产品可以与aidl相兼容。
附图说明
16.图1是本技术提供的一种兼容同名aidl的方法流程示意图;
17.图2为本技术提供的一种预处理的方法流程示意图;
18.图3为本技术提供的一种兼容同名aidl的装置示意图;
19.图4为本技术提供的一种兼容同名aidl的装置示意图。
具体实施方式
20.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
21.本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情
况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。
22.aidl是安卓中一种跨进程通讯方式,它包含文件名、包名、接口类名、若干接口函数,每个接口函数有函数名、参数类型、返回值类型等信息。通常一个安卓的项目会随着产品的发布以迭代的方式不断演进。如果一个安卓项目定义了一个aidl,并实现了它所定义的接口功能,那么这个aidl就与承载它的每一代产品具备了绑定的关系。即每一代产品都对应每一代的aidl,会出现第一代产品对应第一代的aidl、第二代产品对应第二代的aidl、第三代产品对应第三代的aidl
……
已经售卖出去的产品已经被用户广泛使用,无法被回收。由于每一代产品都是从同一项目传承下来的,每一代产品中可能具有相同的文件名、包名、接口类别等。
23.安卓对于aidl有一个先后版本兼容的支持策略。但是该支持策略条件比较苛刻。该支持策略条件包括:aidl的内容不变,包括函数的顺序、名称、参数数量、参数类型、返回值类型、扇入扇出的方向等都不能变化。若需要在新版本的增加新的内容,只能在原有的内容尾部增加新的接口函数。
24.但是随着功能的不同演进。上一代的aidl的定义可能已经不能满足当前产品的需求。因此可能需要在当前代调整aidl的接口定义。例如,需要删除无用的接口函数,增加新的接口函数、修改已有的接口函数、调整接口函数顺序等。但是安卓对于aidl的支持策略不能满足该需求。所以,在售出若干代产品之后,每一代中aidl的定义以及实现有的相同,有的不同。例如,若要给这些产品在线升级一款应用,而这款应用刚好要使用某一代aidl中的一个接口函数,按照安卓对于aidl的兼容支持策略是无法做到的。
25.因此,本技术提供了一种兼容同名aidl的方法,请参见图1,该方法包括:
26.101、确定函数序号与至少一个aidl的对应关系。
27.在确定函数序号与该至少一个aidl的对应关系之前,需要确定该至少一个aidl中每一个aidl的内容。通常来说项目迭代了几次就会有多少个aidl。每一代产品对应一代aidl。示例性的,假设项目包含两个aidl。
28.该第一代aidl为:
[0029][0030]
该第二代aidl为:
[0031][0032]
其中,上述第一代aidl与第二代aidl仅作为示例说明,只存在函数顺序变更,在实际生产环境中,该多个aidl可能会有更大差别,例如函数数量不同、同名函数内容不同,以及函数参数不同等,此处不做赘述。
[0033]
确定函数序号与该两代aidl的对应关系。具体的,该第一代aidl对应的函数序号为1,该第二代aidl的函数序号为2。在实际操作中,函数序号与aidl之间的对应关系可以根据实际情况调整。
[0034]
在确定函数序号与该至少一个aidl的对应关系之后,该方法还包括预处理的步骤,请参见图2,该预处理的步骤包括:
[0035]
201、自定义目标类。
[0036]
该目标类的类名可以自由定义。继承自iinterface名可以自由定义,例如:
[0037]
[0038]
[0039][0040]
根据该跨进程通讯的函数输入参数并返回结果。
[0041]
102、获取产品型号。
[0042]
获取产品型号,示例性的,该产品型号可以为“8848m5”或者“8848m6”。该产品型号与函数序号可以存在预先设置的对应关系。
[0043]
即当产品型号为“8848m5”时,该对应的目标函数序号为2,当产品型号为“8848m6”时,对应的目标函数序号为1。
[0044]
103、根据产品型号获取与产品型号对应的目标函数序号。
[0045]
如步骤102所述,根据产品型号获取与产品型号对应的目标函数序号。例如,步骤102中获取到的产品型号为8848m6,则对应的目标函数序号为1。
[0046]
104、调用与目标函数序号对应的aidl。
[0047]
调用与该目标函数对应的aidl。具体的,可以个每个版本的aidl对应的函数序号装载于目标数组中,依次尝试调用与当前函数序号符合的产品。若产品与当前函数序号符合,则正常运行。若产品与当前函数序号不符合,则会发生exception,继而尝试下一个。
[0048][0049]
在app工程中调用compattest.savepersonaldata即可完成目标访问,这样编出的apk运行在任何一代产品中,都能正常工作,达到了兼容的目的。
[0050]
需要说明的是,采用循环尝试的方式比较耗费时间,还可以根据产品名称、机型等信息明确目标函数序号。安卓产品的标识信息如下:
[0051]
名称build.product机型build.model设备build.device
[0052]
使用上述设备标识信息可以确定唯一的目标函数序号。例如:
[0053][0054][0055]
可以通过如下方式实现不同版本aidl的目标函数的兼容调用:
[0056][0057]
本技术提供了一种兼容同名aidl的方法,该方法避免了针对每一款产品各自独立编译安卓应用程序包(android application package,)apk的麻烦。一份app工程代码兼容了所有产品,降低了维护成本,可以降低对前端接口设计的要求,可以应对后续项目的不断变化。
[0058]
本技术还提供了一种兼容同名aidl的装置30,请参见图3,该装置30包括:
[0059]
获取模块301,用于获取产品型号;
[0060]
处理模块302,用于根据所述产品型号获取与所述产品型号对应的目标函数序号;
[0061]
调用模块303,用于调用与所述目标函数序号对应的安卓接口定义语言aidl。
[0062]
该处理模块302,还用于确定函数序号与至少一个aidl的对应关系,所述函数序号包括所述目标函数序号;
[0063]
该调用模块303,具体用于根据所述对应关系调用与所述目标函数序号对应的aidl。
[0064]
该调用模块303,具体用于遍历所述目标数组中的元素;
[0065]
该调用模块303,具体用于当所述元素为所述目标函数序号时,调用所述与所述目标函数序号对应的aidl。
[0066]
该调用模块303,具体用于传输与所述对应的aidl相应的参数。
[0067]
请参见图4,本技术还提供了一种兼容同名aidl的装置40。该装置40包括:处理器401、存储器402和收发器403,处理器401、存储器402和收发器403可以通过总线404相连。
[0068]
该装置40是一种硬件结构的装置,可以用于如图3所示的兼容同名aidl的装置20中的各个功能模块的功能。
[0069]
可选的,上述处理器401可以是一个或多个中央处理器(central processing unit,cpu),微处理器,特定应用集成电路(application-specific integrated circuit,asic),或一个或多个用于控制本技术方案程序执行的集成电路。
[0070]
该处理器401,用于执行存储器402中的指令,执行上述兼容同名aidl的方法中的处理步骤。
[0071]
该收发器403,可以包含输入/输出(i/o)接口。
[0072]
存储器402、处理器401和收发器403可以通过总线404相互连接,但不限于只能通
过总线404连接;总线404可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。总线可以分为地址总线、数据总线、控制总线等。
[0073]
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
[0074]
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
[0075]
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序指令指示相关的硬件来完成,该程序可以存储于计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。
[0076]
本技术还提供了一种计算机可读存储介质,包括指令,当该指令在计算机设备上运行时,使得该计算机设备执行如本技术提供的兼容同名aidl的方法。
[0077]
本技术还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序或指令,当所述计算机程序或指令在计算机设备上运行时,使得所述计算机设备执行如本技术提供共的兼容同名aidl的方法。
[0078]
本技术还提供了一种兼容同名aidl的装置,该装置包括输入/输出(i/o)接口、处理器和存储器,该存储器中存储有程序指令;该处理器,用于执行存储器中存储的程序指令,以执行如本技术提供的兼容同名aidl的方法。
[0079]
以上对本发明实施例所提供的一种兼容同名aidl的方法、装置及计算机程序产品进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1