CN110569130B - 一种跨进程通信方法、装置及设备 - Google Patents
一种跨进程通信方法、装置及设备 Download PDFInfo
- Publication number
- CN110569130B CN110569130B CN201910691548.8A CN201910691548A CN110569130B CN 110569130 B CN110569130 B CN 110569130B CN 201910691548 A CN201910691548 A CN 201910691548A CN 110569130 B CN110569130 B CN 110569130B
- Authority
- CN
- China
- Prior art keywords
- application
- file
- service interface
- interface
- application program
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 120
- 238000004891 communication Methods 0.000 title claims abstract description 45
- 230000015654 memory Effects 0.000 claims description 48
- 238000004590 computer program Methods 0.000 claims description 21
- 239000011800 void material Substances 0.000 description 76
- 230000003796 beauty Effects 0.000 description 61
- 239000010410 layer Substances 0.000 description 29
- 230000006870 function Effects 0.000 description 25
- 238000006243 chemical reaction Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 12
- 238000013461 design Methods 0.000 description 11
- 239000011230 binding agent Substances 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 6
- 230000008569 process Effects 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 238000010295 mobile communication Methods 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000009434 installation Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000009877 rendering Methods 0.000 description 2
- 230000005236 sound signal Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000007599 discharging Methods 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 210000001503 joint Anatomy 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000011426 transformation method Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W48/00—Access restriction; Network selection; Access point selection
- H04W48/08—Access restriction or access information delivery, e.g. discovery data delivery
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Stored Programmes (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请实施例提供一种跨进程通信方法、装置及设备,该方法应用于终端设备,该终端设备包括第一应用程序和至少一个第二应用程序的终端设备,至少一个第二应用程序访问第一应用程序中的服务,该方法用以提高不同版本的AIDL文件的兼容性,改善跨进程调用服务的可靠性。该方法包括:至少一个第二应用程序通过跨进程通信向第一应用程序发送访问请求,因为访问请求包括与服务的目标服务接口唯一对应的标识,所以第一应用程序根据标识确定目标服务接口,并执行目标服务接口对应的方法对象,生成执行结果。
Description
技术领域
本申请涉及终端技术领域,尤其涉及一种跨进程通信方法、装置及设备。
背景技术
Android(安卓)系统中的进程之间不能共享内存,因此,需要提供一些机制在不同进程之间进行数据通信。为了使其它的应用程序也可以访问本应用程序提供的服务,Android系统使用一种安卓接口定义语言(android interface definition language,AIDL)来开放本应用程序提供的服务的接口,并提供将开发人员通过AIDL编写的AIDL文件(一般是.AIDL文件)自动转换成中间文件(一般是.java文件)的AIDL工具。该AIDL工具被集成进Android Studio(安卓开发平台)工具链,编译时自动触发和执行。AIDL工具将该中间文件提供给其它的应用程序和本应用程序,其它的应用程序和本应用程序将该JAVA文件集成到自身的工程中,以便实现跨进程调用服务。
目前,如果其它的应用程序和本应用程序所使用的AIDL文件的版本不同,则很可能在跨进程服务调用过程中报错,出现功能不可用的问题。
发明内容
本申请实施例提供一种跨进程通信方法、装置及设备,用以提高不同版本的AIDL文件的兼容性,改善跨进程调用服务的可靠性。
第一方面,本申请实施例提供了一种跨进程通信方法,该方法适用于终端设备,该方法包括:至少一个第二应用程序通过跨进程通信向第一应用程序发送访问请求,访问请求用于请求访问第一应用程序的服务,访问请求包括与服务的目标服务接口唯一对应的标识。然后第一应用程序根据标识确定目标服务接口,并执行目标服务接口对应的方法对象,生成执行结果。
本申请实施例中,该方法基于新的AIDL文件转换方法实现跨进程通信,一定程度上可以改善跨进程调用服务的可靠性。
在一种可能的设计中,至少一个第二应用程序通过跨进程通信向所述第一应用程序发送访问请求之前,还包括:
至少一个第二应用程序通过第一JAVA文件确定出与目标服务接口的属性信息唯一对应的标识;其中,所述属性信息包括目标服务接口的接口名称和接口参数类型中的至少一个,第一JAVA文件与所述第一应用程序的第一版本的安卓接口定义语言AIDL文件相对应。然后第一应用程序根据所述标识确定所述目标服务接口,具体方式是:第一应用程序通过第二JAVA文件确定出与标识对应的目标服务接口,第二JAVA文件与第一应用程序的第二版本的AIDL文件相对应。
本申请实施例中,因不同的服务接口对应的标识不同,相同的服务接口对应的标识相同。所以第二应用程序可以基于与服务接口唯一对应的标识访问第一应用程序中的服务。
在一种可能的设计中,与目标服务接口的属性信息唯一对应的标识是通过目标服务接口的接口名称和接口参数类型中的至少一个进行哈希运算得到的散列值。其中,所述第一JAVA文件是按照设定规则对第一版本的AIDL文件进行转换得到的;所述第二JAVA文件是按照设定规则对第二版本的AIDL文件进行转换得到的;所述设定规则包括:从第一应用程序的第一版本的AIDL文件中获取每个服务接口的属性信息,根据所述每个服务接口的属性信息确定与每个服务接口唯一对应的标识;根据所述与每个服务接口唯一对应的标识,将所述AIDL文件转换成JAVA文件。
第二方面,本申请实施例提供了一种AIDL文件转换方法,该方法应用于具有开发功能的设备,该方法包括:设备从第一应用程序的AIDL文件中获取服务接口的属性信息,设备根据服务接口的属性信息确定与服务接口唯一对应的标识,继而根据与服务接口唯一对应的标识,将AIDL文件转换成JAVA文件。
本申请实施例,该方法可以提高不同版本的AIDL文件的兼容性,一定程度上可以改善跨进程调用服务的可靠性。
在一种可能的设计中,属性信息包括接口名称和接口参数类型中的至少一个。设备根据所述服务接口的属性信息确定与服务接口唯一对应的标识,具体方式是:对服务接口的接口名称和接口参数类型中的至少一个进行哈希运算,生成与服务接口对应的散列值,其中,不同服务接口的散列值不同,相同服务接口的散列值相同。
设备根据所述与服务接口唯一对应的标识,将所述AIDL文件转换成JAVA文件,具体方式:根据与服务接口对应的散列值,将AIDL文件转换成JAVA文件。
本申请实施例中,设备通过上述方法可以确定出与接口唯一对应的散列值,从而保证第一应用程序中的服务可以被正常访问。
在一种可能的设计中,设备还将JAVA文件发送给至少一个第二应用程序对应地服务器,所述至少一个应用程序为访问第一应用程序中服务的应用程序。
本申请实施例中,设备将JAVA文件发送至第二应用程序,以便于第二应用程序访第一应用程序的服务。
第三方面,本申请实施例提供一种终端设备,包括处理器和存储器。其中,存储器用于存储一个或多个计算机程序;当存储器存储的一个或多个计算机程序被处理器执行时,使得该终端设备能够实现上述第一方面的任意一种可能的设计的方法。
第四方面,本申请实施例还提供一种装置,该装置包括执行上述第一方面的任意一种可能的设计的方法的模块/单元。这些模块/单元可以通过硬件实现,也可以通过硬件执行相应的软件实现。
第五方面,本申请实施例提供一种设备,包括处理器和存储器。其中,存储器用于存储一个或多个计算机程序;当存储器存储的一个或多个计算机程序被处理器执行时,使得该设备能够实现上述第二方面的任意一种可能的设计的方法。
第六方面,本申请实施例还提供一种装置,该装置包括执行上述第二方面的任意一种可能的设计的方法的模块/单元。这些模块/单元可以通过硬件实现,也可以通过硬件执行相应的软件实现。
第七方面,本申请实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质包括计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行上述任一方面的任意一种可能的设计的方法。
第八方面,本申请实施例还提供一种包含计算机程序产品,当所述计算机程序产品在终端上运行时,使得所述电子设备执行上述任一方面的任意一种可能的设计的方法。
本申请的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
图1为本申请实施例提供的一种通信系统示意图;
图2为本申请实施例提供的一种具有开发功能的设备的结构示意图;
图3为本申请实施例提供的一种AIDL文件转换方法流程示意图;
图4为本申请实施例提供的一种跨进程通信方法流程示意图;
图5为本申请实施例提供的另一种跨进程通信方法示意图;
图6为本申请实施例提供的另一种跨进程通信方法示意图;
图7为本申请实施例提供的另一种跨进程通信方法示意图;
图8为本申请实施例提供的另一种跨进程通信方法示意图;
图9为本申请实施例提供的一种AIDL文件转换方法流程示意图;
图10为本申请实施例提供的一种手机的结构示意图;
图11为本申请实施例提供的安卓操作系统结构示意图;
图12为本申请实施例提供的一种终端设备结构示意图。
具体实施方式
为了便于理解,示例的给出了部分与本申请实施例相关概念的说明以供参考。
跨进程通信,指的是同一终端设备安装的多个应用程序间的通信。也就是说,终端设备安装的一个或多个应用程序访问其安装的另外一个应用程序,下文中也会将被访问的第一应用程序表述为本地应用或服务端(Service),访问第一应用程序的第二应用程序表述为第三方应用或客户端(client)。
AIDL文件,是由开发人员手动编写的,操作系统通过AIDL转换工具可以将AIDL文件转换成JAVA文件。
系统软件包,指系统软件的安装包。系统软件是电脑硬件与用户交互的接口,最有代表性的系统软件是操作系统,比如Windows 7、Android6.0就是操作系统。
应用软件包,指的是运行在操作系统上的应用的安装包。应用安装包与特定的应用相关,是开发人员根据用户的具体需求定制开发的,比如美图秀秀、美颜相机。
IDE为用于程序开发环境的应用程序,一般包括代码编辑器、编译器、调整器和图形工具,如iOS系统上的Xcode编程软件和Android系统上的Eclipse编程软件均为典型的IDE。
现有的AIDL转换工具在将AIDL文件转换为JAVA文件时,为AIDL文件中的每个接口分配一个从1开始连续增长的序号,这些序号被定义在JAVA文件的常量中。举例来说,第一版本的AIDL文件中定义有相机应用对外提供的三个服务接口,分别是光圈服务接口(voidAperture)、人像服务接口(void Portrait))和夜景服务接口(void Nightscape)。现有的AIDL转换工具在转换第一版本的AIDL文件时,会依次为光圈服务接口、人像服务接口和夜景服务接口分配序号1、2和3,转换生成第一版本的JAVA文件,即第一版本的JAVA文件中服务接口和序号的对应关系如表1所示。
表1
服务接口 | 序号 |
光圈服务接口(void Aperture) | 1 |
人像服务接口(void Portrait)) | 2 |
夜景服务接口(void Nightscape) | 3 |
假设开发人员对相机应用的功能进行删减之后封装生成第二版本的AIDL文件,第二版本的AIDL文件中定义有相机应用对外提供的两个服务接口,分别是人像服务接口(void Portrait)和夜景服务接口(void Nightscape)。即开发人员在编写第二版本的AIDL文件时删除了光圈服务接口(void Aperture)。那么现有的AIDL转换工具在转换第二版本的AIDL文件时,会依次为人像服务接口和夜景服务接口分配序号1、2,转换生成第二版本的JAVA文件,即第二版本的JAVA文件中服务接口和序号的对应关系如表2所示。
表2
服务接口 | 序号 |
人像服务接口(void Portrait)) | 1 |
夜景服务接口(void Nightscape) | 2 |
若手机从第三方应用服务器(例如美颜相机应用服务器)获取的应用软件包中集成的是第一JAVA文件(第一JAVA文件是通过将第一版本的AIDL文件转换得到的),而手机的软件系统更新后,系统软件包中集成的是第二JAVA文件(第二JAVA文件是通过编译第二版本的AIDL文件转换得到的)。手机安装应用软件包并运行第三方应用,当第三方应用调用相机应用的夜景服务接口(void Nightscape)时,第三方应用通过第一JAVA文件确定出与夜景服务接口(void Nightscape)的接口名称对应的序号是3,然后第三方应用向相机应用发送的调用请求中包括序号3,而相机应用在收到该调用请求后,查找第二JAVA文件确定不存在与序号3对应的服务接口,所以相机应用向第三方应用反馈功能不可用的调用结果。导致第三方应用在手机的夜景功能实际可用的硬件环境下,因服务接口对接失败而导致无法正常使用,第三方应用只能向用户呈现较差的拍摄画质,严重影响用户的使用体验。
基于上述原因,本申请实施例提供一种AIDL文件转换方法,该方法可以应用于具有编译功能的设备侧,该方法包括:设备从第一应用程序的AIDL文件中获取服务接口的属性信息,服务接口为第一应用程序所提供的一个或多个服务接口。设备根据服务接口的属性信息确定与服务接口唯一对应的标识,然后设备根据与服务接口唯一对应的标识,将AIDL文件转换成JAVA文件。可见,因JAVA文件中的服务接口有唯一对应的标识,所以当该JAVA文件被集成到第三方应用的应用软件包中时,第三方应用可以通过JAVA文件确定出与调用的服务接口的属性信息唯一对应的标识,然后第三方应用向本地应用发送的调用请求中包括该唯一对应的标识。假设本地应用中集成的JAVA文件版本号比第三方应用集成的JAVA文件版本号高,那么本地应用可以通过本地应用所集成的JAVA文件,确定出与该标识对应的服务接口,然后执行服务接口对应的方法对象,并将执行结果反馈至第三方应用。
换句话说,本申请实施例对安卓自带的AIDL工具进行了改进,改进后的AIDL工具能够执行上述AIDL文件转换方法对应的软件程序,通过该改进后的AIDL工具将AIDL文件转换成的JAVA文件,该JAVA文件被集成在本地应用的系统软件包和第三方应用的应用软件包中。一般地,本地应用是系统自带的应用,而第三方应用由开发人员新创的应用程序,该应用程序的所有者不是系统生产商或运行该应用程序的设备制造商。本申请实施例中,即使第三方应用的应用软件包中的JAVA版本低于本地应用的系统软件包中的JAVA文件版本,换句话说,就是第三方应用使用的AIDL文件版本低于本地应用的AIDL文件版本,本地应用仍能够根据JAVA文件中服务接口和标识的对应关系,利用第三方应用发送的调用请求中的标识确定出对应的服务接口。所以该方法可以提高不同版本的AIDL文件的兼容性,一定程度上可以改善跨进程调用服务的可靠性。
如图1所示,本申请实施例提供一种通信系统,该通信系统包括设备100、终端设备200和服务器300,终端设备200和设备100可以通过数据线直连,也可以通过通信网络互相通信,设备100和服务器300通过网络进行通信。其中,设备100安装有集成开发环境(integrated development environment,IDE),用于编译生成终端设备200的系统软件包;服务器300为第三方应用服务器,用于编译生成第三方应用的应用软件包。
其中,通信网络可以是局域网,也可以是通过中继(relay)设备转接的广域网。当该通信网络为局域网时,示例性的,该通信网络可以是wifi热点网络、wifi直连网络、蓝牙网络、zigbee网络或近场通信(near field communication,NFC)网络等近距离通信网络。当该通信网络为广域网时,示例性的,该通信网络可以是第三代移动通信技术(3rd-generation wireless telephone technology,3G)网络、第四代移动通信技术(the 4thgeneration mobile communication technology,4G)网络、第五代移动通信技术(5th-generation mobile communication technology,5G)网络、未来演进的公共陆地移动网络(public land mobile network,PLMN)或因特网等。
具体来说,开发人员在设备100上编写好本地应用的AIDL文件之后,设备100利用所集成的上述改进后的AIDL转换工具,从本地应用的AIDL文件中获取服务接口的属性信息,根据服务接口的属性信息确定与服务接口唯一对应的标识,然后根据与服务接口唯一对应的标识,将AIDL文件转换成JAVA文件,设备100中的系统软件包中集成有该JAVA文件。同时设备100还将该JAVA文件提供给服务器300,服务器300将该JAVA文件集成到第三方应用的应用软件包中。
终端设备200从设备100下载更新后的系统软件包,然后保存至本地,并更新终端设备200上的已安装的本地应用。终端设备200从服务器300下载更新后的应用软件包,然后保存至本地,并更新终端设备200上的已安装的第三方应用,二者的版本更新可能不同时,第三方应用与本地应用相比,AIDL文件的版本更新存在一定的滞后性。
在本申请一些实施例中,设备100可以为具有编译功能的服务器或者云服务器。图2示出的是与本申请各实施例相关的设备100的部分结构的框图。
如图2所示,该设备100可以包括:包括处理器201、存储器202以及收发器203。其中该一个或多个计算机程序被存储在上述存储器201中并被配置为被该一个或多个处理器202执行。
处理器201,可以是中央处理单元(central processing unit,CPU),或者为数字处理单元等,处理器201是设备100的控制中心,利用各种接口和线路连接整个设备100的各个部分,通过运行或执行存储在存储器202内的计算机程序,以及调用存储在存储器202内的数据,执行设备100的各种功能和数据处理。
存储器202,用于存储待运行的计算机程序,若该设备100是云服务器,则存储器202中还存储有从具有编译功能的服务器获取的安卓操作系统编译生成的编译结果,其中编译结果包括与JAVA文件,其中JAVA文件是改进后的AIDL工具对AIDL文件进行转换生成的。另外,若该设备100是具有编译功能的服务器,则存储器202中存储有安卓操作系统源码和该安卓操作系统源码编译生成的编译结果。其中编译结果包括与JAVA文件,其中JAVA文件是改进后的AIDL工具对AIDL文件进行转换生成的。
收发器203,用于将处理器201生成的JAVA文件发送至第三方应用对应的服务器300。
处理器201,用于将可执行文件集成在本地应用的安卓软件包中,收发器203,还用于将本地应用的安卓软件包中发送至终端设备200。
本申请实施例中不限定上述处理器201以及存储器202之间的具体连接介质。本申请实施例在图2中以存储器202、处理器201以及收发器203之间通过总线204连接,总线在图2中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图2中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
其中,存储器202可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器203也可以是非易失性存储器(non-volatilememory),例如只读存储器,快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD)、或者存储器202是能够用于携带或存储具有指令或数据结构形式的程序代码并能够由计算机存取的任何其他介质,但不限于此。存储器203可以是上述存储器的组合。
如图3所示,为本申请实施例提供一种AIDL文件转换方法流程示意图,该方法可以由设备100执行,具体步骤如下。
步骤301,设备100从第一应用程序的AIDL文件中获取服务接口的属性信息。
其中,服务接口为所述第一应用程序所提供的一个或多个服务接口,终端设备安装的一个或多个应用可以访问其安装的另外一个应用,本申请实施例中的第一应用程序指被其它应用访问的应用程序,一般第一应用程序是指系统自带的应用。第一应用程序又可以被表述为本地应用或服务端(Service)。例如,第一应用程序可以是智能手机中的相机应用或者通话应用、短信应用等。属性信息可以是服务接口的接口名称、接口参数类型中的至少一个。接口参数类型可以是整型、字符型、字节型、布尔型等。例如相机应用中的光圈服务接口void execAperture(){&image}的接口名称是execAperture(),接口参数类型是&image(原图像地址)为字节型。
步骤302,设备100根据服务接口的属性信息确定与服务接口唯一对应的标识。
其中,与服务接口唯一对应的标识可以是字符串,散列值或者是随机数值等。具体地,方式一,设备100使用哈希函数对服务接口的接口名称和接口参数类型中的至少一个进行哈希运算,生成与服务接口对应的散列值,其中,不同服务接口的散列值不同,相同服务接口的散列值相同。方式二,设备100将服务接口的接口名称和接口参数类型中的至少一个作为随机种子,使用随机函数生成随机数值。
步骤303,设备100根据与服务接口唯一对应的标识,将AIDL文件转换成JAVA文件。
具体地,AIDL文件就是第一应用程序的服务接口和数据声明。设备100中的AIDL转换工具根据与服务接口唯一对应的标识,将AIDL文件生成JAVA文件。生成的JAVA文件会被打包到第一应用程序的系统软件包中。
假设,手机中的相机应用有光圈服务接口、人像服务接口和夜景服务接口这三个,设备100将相机应用的这三个服务接口定义到第一版本的AIDL文件中。第一版本的AIDL文件中如表3所示。
表3
然后,AIDL转换工具将第一版本的AIDL文件转换成如表4所示的第一版本的JAVA文件。
表4
设备100将该第一版本的JAVA文件打包到系统软件包中,若用户手机进行软件更新,则手机从设备100获取包括第一版本的JAVA文件的系统软件包,并保存到本地。进一步地,设备100还将生成的第一版本的JAVA文件发送给至少一个第二应用程序对应的服务器300,服务器300将该第一版本的JAVA文件打包到第二应用程序的应用软件包中。其中,第二应用程序指的是访问第一应用程序中服务的应用程序,又称第三方应用或客户端,例如,第一应用程序是手机中的相机应用,第二应用程序是美颜相机应用。
假设说,设备100将表4所示的第一版本的JAVA文件发送至美颜相机应用的服务器300,服务器300将该第一版本的JAVA文件打包到美颜相机应用的应用软件包中,若用户对手机中的美颜相机应用进行更新,则手机从服务器300获取包括第一版本的JAVA文件的应用软件包,并保存到本地。
假设,美颜相机应用调用光圈服务接口,则美颜相机应用通过第一版本的JAVA文件确定与光圈服务接口的接口名称对应的散列值是0XF6457850,因此向相机应用发送包括散列值是0XF6457850的调用请求,相机应用通过第一版本的JAVA文件确定与散列值0XF6457850对应的服务接口是execAperture(),因此相机应用执行该execAperture()的方法对象,生成执行结果,并将执行结果发送至美颜相机应用。
在一种可能的实施例中,假设开发人员删除了第一版本AIDL文件中的部分服务接口,例如删除光圈服务接口,那么设备100将相机应用的剩余两个服务接口定义到第二版本的AIDL文件中。然后AIDL转换工具将第二版本的AIDL文件转换成如表5所示的第二版本的JAVA文件。设备100将该第二版本的JAVA文件打包到相机应用的APK中,若用户对手机中的相机应用进行更新,则手机从设备100获取包括第二版本的JAVA文件的APK,保存到本地。
表5
进一步地,设备100还将生成的第二版本的JAVA文件发送给至少一个第二应用程序对应的服务器300,服务器300将该第二版本的JAVA文件打包到第二应用程序的APK中。
假设说,用户没有对手机中的美颜相机应用进行更新,即手机中的美颜相机应用的APK中的JAVA文件仍是第一版本的JAVA文件。那么当美颜相机应用调用夜景服务接口时,美颜相机应用通过第一版本的JAVA文件确定与夜景服务接口的接口名称对应的散列值是0X98342122,因此美颜相机应用向相机应用发送包括散列值是0X98342122的调用请求,相机应用通过第二版本的JAVA文件确定与散列值0X98342122对应的服务接口是execNightscape(),因此相机应用执行该execNightscape()的方法对象,生成执行结果,并将执行结果发送至美颜相机应用。
可见,本申请实施例提供的方法中虽然访问第一应用程序的第二应用程序使用的是低版本的JAVA文件,第二应用程序仍然可以正常访问具有高版本JAVA文件的第一应用程序中的服务,本申请实施例所提供的方法可以提高不同版本的AIDL文件的兼容性,改善跨进程调用服务的可靠性。
基于上述AIDL文件转换方法,本申请实施例还提供一种跨进程通信方法流程示意图,如图4所示,该方法适用于包括至少两个应用程序的终端设备,具体步骤如下。
步骤401,第二应用程序通过跨进程通信向第一应用程序发送访问请求。
其中,访问请求用于请求访问第一应用程序的服务,访问请求包括与服务的目标服务接口唯一对应的标识。终端设备安装的一个或多个应用可以访问其安装的另外一个应用,本申请实施例中的第一应用程序指被其它应用访问的应用程序,一般第一应用程序是指系统自带的应用。第一应用程序又可以被表述为本地应用或服务端(Service)。例如,第一应用程序可以是智能手机中的相机应用或者通话应用、短信应用等。其中,第二应用程序指的是访问第一应用程序中服务的应用程序,又称第三方应用或客户端。
示例性地,假设第一应用程序是相机应用,第二应用程序是美颜相机应用,美颜相机应用通过跨进程通信相机应用发送访问光圈服务接口void execAperture()的访问请求,该访问请求中包括与光圈服务接口void execAperture()唯一对应的标识。标识可以是字符串,散列值或者是随机数值等。标识的生成方式可以参照步骤303的描述,该处不再重复赘述。
步骤402,第一应用程序根据标识确定目标服务接口,并执行目标服务接口对应的方法对象,生成执行结果。
示例性地,相机应用接收到访问请求后,根据访问请求中的标识确定出目标服务接口是void execAperture(),因此相机应用执行该服务接口的方法对象,生成执行结果。
在一种可能的实施例中,在第二应用程序通过跨进程通信向第一应用程序发送访问请求之前,第二应用程序先通过第一版本JAVA文件确定出与目标服务接口的属性信息唯一对应的标识。
示例性地,美颜相机应用先通过第一版本JAVA文件确定与光圈服务接口的属性信息唯一对应的标识。属性信息包括目标服务接口的接口名称和接口参数类型中的至少一个,例如目标服务接口是光圈服务接口void execAperture(){&image},光圈服务接口的接口名称是execAperture(),接口参数类型是&image(原图像地址)。美颜相机根据表4所示第一版本的JAVA文件确定出与光圈服务接口的属性信息唯一对应的标识是0XF6457850。
进一步地,第一应用程序通过第二版本JAVA文件确定出与该标识对应的目标服务接口,其中,第二版本JAVA文件是与第一应用程序的第二版本AIDL文件相对应的。示例性地,相机应用在接收到访问请求后,通过第二版本JAVA文件确定与标识0XF6457850对应的void execAperture。
具体地,以下将结合附图和不同的应用场景,对本申请实施例提供的跨进程通信方法进行举例说明。
场景一
假设第一应用程序是相机应用,第二应用程序是美颜相机应用,设备100中改进后的AIDL转换工具对图5中的第一版本AIDL文件(如表3所示的Icamera.aidl)501进行转换,生成第一版本JAVA文件(如表4所示的Icamera.java)502。
情况一,美颜相机应用调用光圈服务接口void Aperture(),即美颜相机通过第一版本JAVA文件502确定与光圈服务接口void Aperture()对应的标识是0XF6457850,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与void Aperture()对应的标识是0XF6457850。相机应用通过第一版本JAVA文件502确定与0XF6457850匹配的是voidexecAperture(){...},因此执行该接口的方法对象,生成执行结果。
情况二,美颜相机应用调用人像服务接口void Portrait(),即美颜相机通过第一版本JAVA文件502确定与人像服务接口void Portrait()对应的标识是0X21153431,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与void Portrait()对应的标识是0XF6457850。相机应用通过第一版本JAVA文件502确定与0X21153431匹配的是voidexec Portrait(){...},因此执行该接口的方法对象,生成执行结果。
情况三,美颜相机应用调用夜景服务接口void NightScape(),即美颜相机通过第一版本JAVA文件502确定与夜景服务接口void NightScape()对应的标识是0X98342122,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与void NightScape()对应的标识是0X98342122。相机应用通过第一版本JAVA文件502确定与0X98342122匹配的是void exec NightScape(){...},因此执行该服务接口的方法对象,生成执行结果。
场景二
假设开发人员删除了第一版本AIDL文件中的光圈服务接口,生成第二版本AIDL文件,设备100中改进后的AIDL转换工具对图6中的第二版本AIDL文件(如图6中601)进行转换,生成第二版本JAVA文件(如图6中602)。假设设备100未将第二版本JAVA文件发送至服务器300,即美颜相机应用的APK中不包括第二版本AIDL文件,仍是第一版本AIDL文件。
情况一:当美颜相机应用访问相机应用的void Portrait()时,仍然可以通过第一版本JAVA文件502确定与人像服务接口void Portrait()对应的标识是0X21153431,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与void Portrait()对应的标识是0XF6457850。相机应用通过第二版本JAVA文件602确定与0X21153431匹配的是voidexec Portrait(){...},因此执行该服务接口的方法对象,生成执行结果。
情况二:当美颜相机应用访问相机应用的夜景服务接口void NightScape()时,仍然可以通过第一版本JAVA文件502确定与夜景服务接口void NightScape()对应的标识是0X98342122,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与voidNightScape()对应的标识是0X98342122。相机应用通过第二版本JAVA文件602确定与0X98342122匹配的是void exec NightScape(){...},因此执行该服务接口的方法对象,生成执行结果。
场景三
假设开发人员更改第一版本AIDL文件中的人像服务接口和夜景服务接口的顺序,生成第二版本AIDL文件,设备100中改进后的AIDL转换工具对图7中的第二版本AIDL文件(如图7中701)进行转换,生成第二版本JAVA文件(如图7中702)。假设设备100未将第二版本JAVA文件发送至服务器300,即美颜相机应用的APK中不包括第二版本AIDL文件,仍是第一版本AIDL文件。
情况一,美颜相机应用调用光圈服务接口void Aperture(),即美颜相机通过第一版本JAVA文件502确定与光圈服务接口void Aperture()对应的标识是0XF6457850,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与void Aperture()对应的标识是0XF6457850。相机应用通过第二版本JAVA文件702确定与0XF6457850匹配的是voidexecAperture(){...},因此执行该接口的方法对象,生成执行结果。
情况二,美颜相机应用调用人像服务接口void Portrait(),即美颜相机通过第一版本JAVA文件502确定与人像服务接口void Portrait()对应的标识是0X21153431,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与void Portrait()对应的标识是0XF6457850。相机应用通过第二版本JAVA文件702确定与0X21153431匹配的是voidexec Portrait(){...},因此执行该接口的方法对象,生成执行结果。
情况三,美颜相机应用调用夜景服务接口void NightScape(),即美颜相机通过第一版本JAVA文件502确定与夜景服务接口void NightScape()对应的标识是0X98342122,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与void NightScape()对应的标识是0X98342122。相机应用通过第二版本JAVA文件702确定与0X98342122匹配的是void exec NightScape(){...},因此执行该接口的方法对象,生成执行结果。
场景四
假设开发人员在第一版本AIDL文件中的夜景服务接口前面插入快门服务接口,生成第二版本AIDL文件,设备100中改进后的AIDL转换工具对图8中的第二版本AIDL文件(如图8中801)进行转换,生成第二版本JAVA文件(如图8中802)。假设设备100未将第二版本JAVA文件发送至服务器300,即美颜相机应用的APK中不包括第二版本AIDL文件,仍是第一版本AIDL文件。
情况一,美颜相机应用调用光圈服务接口void Aperture(),即美颜相机通过第一版本JAVA文件502确定与光圈服务接口void Aperture()对应的标识是0XF6457850,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与void Aperture()对应的标识是0XF6457850。相机应用通过第二版本JAVA文件802确定与0XF6457850匹配的是voidexecAperture(){...},因此执行该接口的方法对象,生成执行结果。
情况二,美颜相机应用调用人像服务接口void Portrait(),即美颜相机通过第一版本JAVA文件502确定与人像服务接口void Portrait()对应的标识是0X21153431,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与void Portrait()对应的标识是0XF6457850。相机应用通过第二版本JAVA文件802确定与0X21153431匹配的是voidexec Portrait(){...},因此执行该接口的方法对象,生成执行结果。
情况三,美颜相机应用调用夜景服务接口void NightScape(),即美颜相机通过第一版本JAVA文件502确定与夜景服务接口void NightScape()对应的标识是0X98342122,然后美颜相机应用向相机应用发送访问请求,该访问请求中包括与void NightScape()对应的标识是0X98342122。相机应用通过第二版本JAVA文件802确定与0X98342122匹配的是void exec NightScape(){...},因此执行该接口的方法对象,生成执行结果。
本申请实施例中,因不同的服务接口对应的标识不同,相同的服务接口对应的标识相同。所以客户端可以基于与服务接口唯一对应的标识访问服务端中的服务。软件中常规意义上的接口兼容,就是指接口名、接口形式不变,而接口顺序、接口数量则允许随版本演进而变化的。软件设计人员基于本申请实施例中所提供的改进后的AIDL转换工具,软件设计人员可以按常规的兼容方法去设计和升级软件接口,而不用再担心接口顺序变化、接口数量变化所引发不兼容的问题。另外,即便客户端与服务端中的AIDL文件的版本不同,也可以一定程度上实现正常访问,所以本申请实施例所提供的方法一定程度上改善了跨进程调用服务的可靠性。
基于上述AIDL文件转换方法,本申请实施例提供一种AIDL文件转换装置,参见图9,该装置可以是上述改进后的AIDL转换工具,该装置可以集成在设备100中,该装置包括:获取单元901、处理单元902和转换单元903。其中,获取单元901,用于获取第一应用程序的AIDL文件中的各个服务接口的属性信息,处理单元902,用于根据各个服务接口的属性信息确定与每个服务接口唯一对应的标识;转换单元903,用于根据与每个服务接口唯一对应的标识,将AIDL文件转换成JAVA文件。
在一种可能的实现中,属性信息包括接口名称和接口参数类型中的至少一个;处理单元902具体用于:对每个服务接口的接口名称和接口参数类型中的至少一个进行哈希运算,生成与每个服务接口对应的散列值,其中,不同服务接口的散列值不同,相同服务接口的散列值相同。
转换单元903具体用于:根据与每个服务接口对应的散列值,将AIDL文件转换成JAVA文件。
应理解,图2中存储器202中包括上述装置对应的计算机程序,处理器201用于执行获取单元901、处理单元902和转换单元903的功能。
下面以终端为手机为例进行说明,图10示出的是与本发明各实施例相关的终端设备200的部分结构的框图。
如图10所示,终端设备200为手机,该手机包括:RF(radio frequency,射频)电路1001、Wi-Fi系统模块1002、存储器1003、输入单元1004、显示单元1005、处理器1006、音频电路1007以及电源1008等部件。本领域技术人员可以理解,图10中示出的手机结构并不构成对手机的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
下面结合图10对终端设备200的各个构成部件进行具体的介绍:
Wi-Fi系统模块1002用于扫描终端设备200周围环境存在的Wi-Fi接入点,获取相关信息,以便终端设备200根据所述相关信息接入所述Wi-Fi接入点。
RF电路1001用于收发信息或通话过程中信号的接收和发送,特别地,将基站的下行信息接收后,给处理器1006处理。另外,将上行的数据发送给基站。在本申请实施例中,所述RF电路1001与Wi-Fi系统模块的Wi-Fi天线相连,控制Wi-Fi天线对Wi-Fi网络的扫描。通常,RF电路1001包括但不限于天线、至少一个放大器、收发信机、耦合器、低噪声放大器(lownoise amplifier,LNA)、双工器等。此外,RF电路1001还可以通过无线通信与网络和其他设备通信。
该存储器1003用于存储该终端设备200的软件程序。通常,该存储器1003可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
处理器1006是终端设备200的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1003内的软件程序,以及调用存储在存储器1003内的数据,执行终端设备200的各种功能和数据处理。
其中,上述处理器1006可包括一个或多个处理单元;优选的,处理器1006可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1006中。
输入单元1004可用于接收输入的数字或字符信息,以及产生与终端设备200的用户设置以及功能控制有关的键信号输入。具体地,输入单元1004可包括触摸屏以及其他输入设备。触摸屏也称为触控面板,可收集用户在其上或附近的触摸操作并根据预先设定的程式驱动相应的连接装置。其他输入设备可以包括但不限于物理键盘、功能键(比如音量控制按键、电源开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
显示单元1005可用于显示由用户输入的信息或提供给用户的信息以及手机200的各种菜单。显示单元1005可包括显示面板,可选的,可以采用液晶显示器(Liquid CrystalDisplay,LCD)、有机发光二极管(Organic Light-Emitting Diode,OLED)等形式来配置显示面板。
音频电路1007连接扬声器和麦克风,可提供用户与手机200之间的音频接口。音频电路1007可将接收到的音频数据转换后的电信号,传输到扬声器,由扬声器转换为声音信号输出;另一方面,麦克风将收集的声音信号转换为电信号,由音频电路接收后转换为音频数据,再将音频数据输出至RF电路1001以发送给比如另一手机,或者将音频数据输出至存储器1003以便进一步处理。
手机200还包括给各个部件供电的电源1008(比如电池),优选的,电源可以通过电源管理系统与处理器1006逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
尽管未示出,终端设备200还可以包括蓝牙模块,传感器、GPS等,在此不再赘述。
另一方面,终端设备200的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的Android系统为例,示例性说明终端设备200的软件结构。
图11是本发明实施例的终端设备200的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,以及内核层。
应用程序层可以包括一系列应用程序包。
如图11所示,应用程序包可以包括本地应用和第三方应用,例如本地应用是相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等,第三方应用是美颜相机、美图秀秀、微信、微博等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。例如,应用程序框架层包括相机应用所提供的光圈服务接口(void Aperture)对应的方法类、人像服务接口(void Portrait))对应的方法类、夜景服务接口(void Nightscape)对应的方法类。
如图11所示,应用程序框架层可以包括窗口管理器,内容提供器,视图系统,电话管理器,资源管理器,通知管理器、服务管理器(service manager)、基于Java语言的Binder接口等。
Binder接口是通过JNI来调用基于系统库中的Binder运行库来为应用程序层中的应用程序提供进程间通信服务。例如,应用程序层中的第三方应用通过Binder接口向本地应用发送访问请求,应用程序框架层中Binder接口通过JNI来调用基于系统库中的Binder运行库来为应用程序层中的第三方应用程序提供进程间通信服务。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。所述数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
电话管理器用于提供终端设备200的通信功能。例如通话状态的管理(包括接通,挂断等)。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
Android Runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。本申请实施例中,虚拟机将第三方应用的应用软件包中的第一JAVA文件,和系统软件包中的第二JAVA文件执行为二进制文件。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。
媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。
三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。
2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动。
下面结合拍照场景,示例性说明终端设备200中软件以及硬件的工作流程。
当触摸传感器接收到用户作用于美颜相机应用中的拍照操作,相应的硬件中断被发给内核层。内核层将拍照操作加工成原始输入事件(包括触摸坐标,触摸操作的时间戳等信息)。原始输入事件被存储在内核层。应用程序框架层从内核层获取原始输入事件,服务管理器(service manager)从应用程序框架层接收到原始输入事件之后,服务管理器调用应用程序框架层中与美颜相机应用建立绑定关系的本地相机应用中的服务,也就是说,service manager通过Binder接口向本地相机应用发送访问请求,其中访问请求中携带有美颜相机应用从JAVA文件获取的与目标服务接口唯一对应的命令码,以及命令参数等。假设目标服务接口为人像服务接口(void Portrait),本地相机应用的服务收到该访问请求后,一方面,启动内核层的摄像头驱动,开始捕获原始图像;另一方面,启用人像场景对应的美颜算法对图像进行人脸检测、并按照指定的参数进行二次处理和渲染。最终,本地相机应用的服务将加工合成后的图像通过预先定义的回调接口(与上述Binder接口类似,但请求方/接收方角色互换)传递给美颜相机应用,美颜相机应用将得到的人像图像显示到界面上。
在本申请的另一些实施例中,本申请实施例公开了一种终端设备,如图12所示,该终端设备可以包括:触摸屏1201,其中,该触摸屏1201包括触控面板1206和可折叠显示屏1207;一个或多个处理器1202;存储器1203;一个或多个应用程序(未示出);以及一个或多个计算机程序1204、上述各器件可以通过一个或多个通信总线1205连接。其中该一个或多个计算机程序1204被存储在上述存储器1203中并被配置为被该一个或多个处理器1202执行,该一个或多个计算机程序1204包括指令,上述指令可以用于执行如图4相应实施例中的各个步骤。
本申请实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的方法。
本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的方法。
另外,本申请的实施例还提供一种装置,这个装置具体可以是芯片,组件或模块,该装置可包括相连的处理器和存储器;其中,存储器用于存储计算机执行指令,当装置运行时,处理器可执行存储器存储的计算机执行指令,以使芯片执行上述各方法实施例中的接口调用方法。
其中,本申请实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
通过以上实施方式的描述,所属领域的技术人员可以了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (8)
1.一种跨进程通信方法,适用于包括第一应用程序和至少一个第二应用程序的终端设备,所述至少一个第二应用程序访问所述第一应用程序中的服务,其特征在于,该方法包括:
所述至少一个第二应用程序通过第一JAVA文件确定出与目标服务接口的属性信息唯一对应的标识;其中,所述属性信息包括所述目标服务接口的接口名称和接口参数类型中的至少一个,所述目标服务接口为所述第一应用程序所提供的目标服务对应的接口,所述第一JAVA文件与所述第一应用程序的第一版本的接口定义语言AIDL文件相对应;
所述至少一个第二应用程序通过跨进程通信向所述第一应用程序发送访问请求,所述访问请求用于请求访问所述第一应用程序的目标服务,所述访问请求包括与所述目标服务的目标服务接口唯一对应的标识;
所述第一应用程序通过第二JAVA文件确定出与所述标识对应的目标服务接口,并执行所述目标服务接口对应的方法对象,生成执行结果;其中,所述第二JAVA文件与所述第一应用程序的第二版本的AIDL文件相对应。
2.根据权利要求1所述的方法,其特征在于,所述与目标服务接口的属性信息唯一对应的标识是通过对所述目标服务接口的接口名称和接口参数类型中的至少一个进行哈希运算得到的散列值。
3.根据权利要求1或2所述的方法,其特征在于,所述第一JAVA文件是按照设定规则对所述第一版本的AIDL文件进行转换得到的;所述第二JAVA文件是按照设定规则对所述第二版本的AIDL文件进行转换得到的;所述设定规则包括:从所述第一应用程序的AIDL文件中获取每个服务接口的属性信息,根据所述每个服务接口的属性信息确定与每个服务接口唯一对应的标识;根据所述与每个服务接口唯一对应的标识,将所述AIDL文件转换成JAVA文件。
4.一种终端设备,其特征在于,包括处理器和存储器;
所述存储器用于存储一个或多个计算机程序,还存储有系统软件包和至少一个第二应用程序的应用软件包,所述系统软件包包括第一JAVA文件,所述应用软件包包括第二JAVA文件;
当所述存储器存储的一个或多个计算机程序被所述处理器执行时,使得所述终端设备执行:
所述至少一个第二应用程序通过所述第一JAVA文件确定出与目标服务接口的属性信息唯一对应的标识;其中,所述属性信息包括所述目标服务接口的接口名称和接口参数类型中的至少一个,所述目标服务接口为第一应用程序所提供的目标服务对应的接口,所述第一JAVA文件与所述第一应用程序的第一版本的接口定义语言AIDL文件相对应;
所述至少一个第二应用程序通过跨进程通信向所述第一应用程序发送访问请求,所述访问请求用于请求访问所述第一应用程序中的目标服务,所述访问请求包括与所述目标服务的目标服务接口唯一对应的标识;
所述第一应用程序通过第二JAVA文件确定出与所述标识对应的目标服务接口,并执行所述目标服务接口对应的方法对象,生成执行结果;其中,所述第二JAVA文件与所述第一应用程序的第二版本的AIDL文件相对应。
5.根据权利要求4所述的终端设备,其特征在于,所述与目标服务接口的属性信息唯一对应的标识是通过所述目标服务接口的接口名称和接口参数类型中的至少一个进行哈希运算得到的散列值。
6.根据权利要求4或5所述的终端设备,其特征在于,所述第一JAVA文件是按照设定规则对第一版本的AIDL文件进行转换得到的;所述第二JAVA文件是按照设定规则对第二版本的AIDL文件进行转换得到的;所述设定规则包括:从所述第一应用程序的AIDL文件中获取每个服务接口的属性信息,根据所述每个服务接口的属性信息确定与每个服务接口唯一对应的标识;根据所述与每个服务接口唯一对应的标识,将所述AIDL文件转换成JAVA文件。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质包括计算机程序,当所述计算机程序在终端设备上运行时,使得所述终端设备执行如权利要求1至3任一所述的方法。
8.一种芯片,其特征在于,所述芯片与存储器耦合,用于执行所述存储器中存储的计算机程序,以执行如权利要求1至3任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910691548.8A CN110569130B (zh) | 2019-07-29 | 2019-07-29 | 一种跨进程通信方法、装置及设备 |
PCT/CN2020/103876 WO2021018005A1 (zh) | 2019-07-29 | 2020-07-23 | 一种跨进程通信方法、装置及设备 |
EP20846960.1A EP3992796A4 (en) | 2019-07-29 | 2020-07-23 | INTER-PROCESS COMMUNICATION METHOD, APPARATUS AND DEVICE |
US17/649,280 US11853820B2 (en) | 2019-07-29 | 2022-01-28 | Cross-process communication method, apparatus, and device |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910691548.8A CN110569130B (zh) | 2019-07-29 | 2019-07-29 | 一种跨进程通信方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110569130A CN110569130A (zh) | 2019-12-13 |
CN110569130B true CN110569130B (zh) | 2021-12-14 |
Family
ID=68773633
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910691548.8A Active CN110569130B (zh) | 2019-07-29 | 2019-07-29 | 一种跨进程通信方法、装置及设备 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11853820B2 (zh) |
EP (1) | EP3992796A4 (zh) |
CN (1) | CN110569130B (zh) |
WO (1) | WO2021018005A1 (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110569130B (zh) | 2019-07-29 | 2021-12-14 | 华为技术有限公司 | 一种跨进程通信方法、装置及设备 |
CN111142979B (zh) * | 2019-12-30 | 2023-09-22 | 广州酷狗计算机科技有限公司 | 应用程序运行方法、装置、计算机设备和存储介质 |
CN111443961B (zh) * | 2020-03-24 | 2023-04-11 | 广州方硅信息技术有限公司 | 终端设备及其跨进程通信方法 |
CN113867977A (zh) * | 2020-06-30 | 2021-12-31 | 华为技术有限公司 | 设备控制方法和设备 |
CN112181340B (zh) * | 2020-09-29 | 2022-05-31 | 联想(北京)有限公司 | 一种ar图像的共享方法及电子设备 |
CN112379952B (zh) * | 2020-12-09 | 2023-04-07 | 成都傲梅科技有限公司 | 一种跨进程回调的实现方法 |
US11544054B2 (en) * | 2021-03-22 | 2023-01-03 | Wind River Systems, Inc. | Determination of API changes |
CN117112251B (zh) * | 2022-05-27 | 2024-06-14 | 荣耀终端有限公司 | 一种通信方法及相关设备 |
CN114942812B (zh) * | 2022-05-31 | 2024-04-30 | 上海嘉车信息科技有限公司 | 多媒体信息共享方法、装置和电子设备 |
CN116737404B (zh) * | 2022-09-28 | 2024-07-30 | 荣耀终端有限公司 | 用于应用接续的方法及终端设备 |
CN117707562B (zh) * | 2023-05-05 | 2024-08-27 | 荣耀终端有限公司 | 参数更新方法和终端设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104184618A (zh) * | 2014-08-12 | 2014-12-03 | 烽火通信科技股份有限公司 | Android终端及其实现TR069网管代理的方法 |
CN106547634A (zh) * | 2016-11-28 | 2017-03-29 | 武汉斗鱼网络科技有限公司 | 一种跨进程通信的方法及装置 |
CN106547567A (zh) * | 2016-11-25 | 2017-03-29 | 山东大学 | 一种安卓系统中多业务下进程间通信系统及其实现方法 |
CN108182121A (zh) * | 2017-12-29 | 2018-06-19 | 广州小鹏汽车科技有限公司 | 一种Android中控大屏系统模块间通信方法及系统 |
CN108804236A (zh) * | 2017-05-04 | 2018-11-13 | Tcl集团股份有限公司 | 一种aidl文件的共享方法及系统 |
CN109766276A (zh) * | 2018-12-29 | 2019-05-17 | Tcl通力电子(惠州)有限公司 | 开放式平台测试方法、装置、计算机可读存储介质及系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5815709A (en) * | 1996-04-23 | 1998-09-29 | San Microsystems, Inc. | System and method for generating identifiers for uniquely identifying object types for objects used in processing of object-oriented programs and the like |
US20140082117A1 (en) * | 2012-09-14 | 2014-03-20 | ConnectEDU Inc. | Client device lockdown and control system |
US9397878B2 (en) * | 2013-01-29 | 2016-07-19 | Qualcomm Incorporated | Cross-platform module that is shared by client applications for access to rich communications suite resources on a client device |
CN103955482B (zh) * | 2014-04-03 | 2018-10-12 | 北京百度网讯科技有限公司 | 一种在移动终端中调用服务的方法和设备 |
CN105376174B (zh) * | 2014-08-25 | 2018-10-30 | 阿尔卡特朗讯 | 执行lte/epc中基于服务链的策略的方法与设备 |
EP3248132B1 (en) * | 2015-01-22 | 2021-03-03 | McAfee, LLC | Detection of malicious invocation of application program interface calls |
CN105204951A (zh) * | 2015-10-10 | 2015-12-30 | 上海斐讯数据通信技术有限公司 | 一种安卓系统中Activity间通信的方法和装置 |
CN110569130B (zh) * | 2019-07-29 | 2021-12-14 | 华为技术有限公司 | 一种跨进程通信方法、装置及设备 |
-
2019
- 2019-07-29 CN CN201910691548.8A patent/CN110569130B/zh active Active
-
2020
- 2020-07-23 WO PCT/CN2020/103876 patent/WO2021018005A1/zh unknown
- 2020-07-23 EP EP20846960.1A patent/EP3992796A4/en active Pending
-
2022
- 2022-01-28 US US17/649,280 patent/US11853820B2/en active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104184618A (zh) * | 2014-08-12 | 2014-12-03 | 烽火通信科技股份有限公司 | Android终端及其实现TR069网管代理的方法 |
CN106547567A (zh) * | 2016-11-25 | 2017-03-29 | 山东大学 | 一种安卓系统中多业务下进程间通信系统及其实现方法 |
CN106547634A (zh) * | 2016-11-28 | 2017-03-29 | 武汉斗鱼网络科技有限公司 | 一种跨进程通信的方法及装置 |
CN108804236A (zh) * | 2017-05-04 | 2018-11-13 | Tcl集团股份有限公司 | 一种aidl文件的共享方法及系统 |
CN108182121A (zh) * | 2017-12-29 | 2018-06-19 | 广州小鹏汽车科技有限公司 | 一种Android中控大屏系统模块间通信方法及系统 |
CN109766276A (zh) * | 2018-12-29 | 2019-05-17 | Tcl通力电子(惠州)有限公司 | 开放式平台测试方法、装置、计算机可读存储介质及系统 |
Also Published As
Publication number | Publication date |
---|---|
US20220156133A1 (en) | 2022-05-19 |
CN110569130A (zh) | 2019-12-13 |
WO2021018005A1 (zh) | 2021-02-04 |
US11853820B2 (en) | 2023-12-26 |
EP3992796A1 (en) | 2022-05-04 |
EP3992796A4 (en) | 2022-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110569130B (zh) | 一种跨进程通信方法、装置及设备 | |
CN111316230B (zh) | 一种补丁包生成方法及设备 | |
CN110865837B (zh) | 一种进行系统升级的方法和终端 | |
CN113727333A (zh) | 定制应用的下载方法和系统 | |
CN113435173B (zh) | 文本生成方法、相关装置及系统 | |
CN113656490A (zh) | 一种数据同步的方法、装置、终端以及存储介质 | |
WO2022052766A1 (zh) | 主题包适配方法及装置 | |
WO2022057567A1 (zh) | 一种数据库的修复方法和电子设备 | |
US11991040B2 (en) | Network configuration method and device | |
CN117827221A (zh) | 部署程序代码的方法、装置、设备和存储介质 | |
CN117827228B (zh) | 快应用部署方法及相关设备 | |
CN116719556B (zh) | 系统升级的方法和电子设备 | |
CN115357273B (zh) | 系统升级的提醒方法和电子设备 | |
CN113867999B (zh) | 应用异常处理方法、终端及计算机可读存储介质 | |
CN117971305B (zh) | 操作系统的升级方法、服务器及电子设备 | |
WO2024083114A1 (zh) | 一种软件分发方法、电子设备及系统 | |
CN117707453B (zh) | 一种节点信息的读取方法、设备及存储介质 | |
EP4216052A1 (en) | Method for developing mvvm architecture-based application, and terminal | |
CN116974434A (zh) | 显示方法及电子设备 | |
CN117992107A (zh) | 一种应用程序获取系统以及方法 | |
CN112764832A (zh) | 一种应用程序安装、卸载方法及通信终端 | |
CN117270959A (zh) | 业务数据获取方法、装置、设备、介质和计算机程序产品 | |
CN114356352A (zh) | 多用户下应用数据的管理方法和终端设备 | |
CN118245078A (zh) | 升级方法及其相关设备 | |
CN115469917A (zh) | 文件处理方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |