CN113467861A - 文件调用方法和装置、存储介质及电子设备 - Google Patents
文件调用方法和装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN113467861A CN113467861A CN202110809208.8A CN202110809208A CN113467861A CN 113467861 A CN113467861 A CN 113467861A CN 202110809208 A CN202110809208 A CN 202110809208A CN 113467861 A CN113467861 A CN 113467861A
- Authority
- CN
- China
- Prior art keywords
- target
- calling
- file
- communication process
- command
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 191
- 230000006854 communication Effects 0.000 claims abstract description 280
- 230000008569 process Effects 0.000 claims abstract description 128
- 238000004891 communication Methods 0.000 claims description 37
- 230000015654 memory Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 16
- 238000010586 diagram Methods 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000009434 installation Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 239000000306 component Substances 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 239000000654 additive Substances 0.000 description 1
- 230000000996 additive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种文件调用方法和装置、存储介质及电子设备。其中,该方法包括:通过目标PC设备上的命令执行进程向目标PC设备上的第一通信进程发送调用触发命令;通过第一通信进程向第二通信进程发送目标调用命令;通过命令执行进程获取目标ARM设备发送的目标调用结果。本发明解决了现有技术中由于不同指令集架构的平台之间文件共享较为复杂,导致的效率低的技术问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种文件调用方法和装置、存储介质及电子设备。
背景技术
linux系统的共享文件(例如,So文件)通常与平台指令集相关。不同指令集架构的平台的共享文件无法互通使用。以ARM架构中的So文件为例,由于计算机的指令集架构和ARM设备的指令集架构属于不同的指令集架构,因此在计算机设备上无法直接运行ARM架构中的So文件。
相关技术中,需要在计算设备和ARM设备之间搭建一套ARM指令集转换工具(例如,指令转义层),在计算机设备上模拟出一套ARM架构程序运行环境。通过ARM架构和计算机设备之间的指令转义层来实现在计算机设备上运行ARM架构中的so文件。
然而指令转义层的搭建十分复杂,难以达到原声运行速度,导致效率较低。例如安卓官方模拟器,在运行ARM镜像构建的虚拟机时,十分卡顿。同时指令转义方法并非开源技术,普通应用开发者无法利用其实现完成自身逻辑计算需求。且不同的计算机架构,需要搭建不同类型的指令转义层,通用性较差。
针对相关技术中,由于不同指令集架构的平台之间文件共享较为复杂,导致的效率低的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种文件调用方法和装置、存储介质及电子设备,以至少解决现有技术中由于不同指令集架构的平台之间文件共享较为复杂,导致的效率低的技术问题。
根据本发明实施例的一个方面,提供了一种文件调用方法,包括:通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,其中,所述第一通信进程与目标ARM设备上的第二通信进程建立了通信连接,所述调用触发命令用于触发所述第一通信进程通过所述通信连接向所述第二通信进程发送目标调用命令;通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用目标文件,所述目标文件是允许在所述目标ARM设备上被调用的文件;通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件所得到的调用结果。
可选地,所述通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,包括:通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算;所述通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,包括:通过所述命令执行进程获取所述目标ARM设备发送的所述目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
可选地,所述通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,包括:通过所述第一通信进程向所述第二通信进程发送携带了第一调用命令,其中,所述目标调用命令包括所述第一调用命令,所述第一调用命令中携带所述目标参数;或者通过所述第一通信进程向所述第二通信进程发送携带了第二调用命令,其中,所述目标调用命令包括所述第二调用命令,所述第二调用命令中携带所述目标参数和所述目标文件的标识。
可选地,所述通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,包括:通过所述第一通信进程获取所述第二通信进程发送的所述目标调用结果;通过所述命令执行进程获取所述第一通信进程发送的所述目标调用结果。
可选地,所述通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,包括:在所述目标PC设备的命令行界面上获取所述调用触发命令;通过与所述命令行界面对应的所述命令执行进程向所述第一通信进程发送所述调用触发命令。
可选地,所述方法还包括:在所述第二通信进程接收到所述目标调用命令之后,在所述ARM设备上调用所述目标文件,得到所述目标调用结果;通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述命令执行进程。
可选地,所述在所述ARM设备上调用所述目标文件,得到所述目标调用结果,包括:在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,其中,所述目标调用结果是调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
可选地,所述在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,包括:在所述ARM设备上加载所述目标文件所对应的java程序代码;将所述java程序代码转换成目标运行文件,其中,所述目标运行文件是允许在所述ARM设备上的虚拟机上运行的文件;在所述虚拟机上运行所述目标运行文件,对所述目标参数执行所述目标逻辑运算,得到所述目标调用结果。
可选地,所述方法还包括:将从所述目标PC设备上拷贝的所述目标文件存储在所述ARM设备上的目标目录中;或者通过所述第二通信进程接收所述第一通信进程发送的所述目标文件,并将所述目标文件存储在所述ARM设备上的所述目标目录中。
可选地,所述通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,包括:通过所述目标PC设备上运行的安卓调试桥服务进程向所述目标ARM设备上运行的安卓调试桥守护进程发送所述目标调用命令,其中,所述第一通信进程为所述安卓调试桥服务进程,所述第二通信进程为所述安卓调试桥守护进程。
根据本发明实施例的另一方面,还提供了另一种文件调用方法,包括:通过目标ARM设备上的第二通信进程接收目标调用命令,其中,所述目标调用命令由目标PC设备上的第一通信进程发送,所述第一通信进程与所述第二通信进程建立了通信连接;在所述ARM设备上调用目标文件,得到目标调用结果,其中,所述目标文件是允许在所述目标ARM设备上被调用的文件;通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述目标PC设备上的命令执行进程。
可选地,所述在所述ARM设备上调用所述目标文件,得到所述目标调用结果,包括:在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,其中,所述目标调用命令中携带有所述目标参数,所述目标调用结果是调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
可选地,所述在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,包括:在所述ARM设备上加载所述目标文件所对应的java程序代码;将所述java程序代码转换成目标运行文件,其中,所述目标运行文件是允许在所述ARM设备上的虚拟机上运行的文件;在所述虚拟机上运行所述目标运行文件,对所述目标参数执行所述目标逻辑运算,得到所述目标调用结果。
可选地,所述方法还包括:将从所述目标PC设备上拷贝的所述目标文件存储在所述ARM设备上的目标目录中;或者通过所述第二通信进程接收所述第一通信进程发送的所述目标文件,并将所述目标文件存储在所述ARM设备上的所述目标目录中。
根据本发明实施例的另一方面,还提供了一种文件调用装置,包括:第一发送模块,用于通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,其中,所述第一通信进程与目标ARM设备上的第二通信进程建立了通信连接,所述调用触发命令用于触发所述第一通信进程通过所述通信连接向所述第二通信进程发送目标调用命令;第二发送模块,用于通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用目标文件,所述目标文件是允许在所述目标ARM设备上被调用的文件;第三发送模块,通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件所得到的调用结果。
根据本发明实施例的另一方面,还提供了另一种文件调用装置,包括:接收模块,用于通过目标ARM设备上的第二通信进程接收目标调用命令,其中,所述目标调用命令由目标PC设备上的第一通信进程发送,所述第一通信进程与所述第二通信进程建立了通信连接;调用模块,用于在所述ARM设备上调用目标文件,得到目标调用结果,其中,所述目标文件是允许在所述目标ARM设备上被调用的文件;第四发送模块,用于通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述目标PC设备上的命令执行进程。
根据本发明实施例的又一方面,还提供了一种计算机可读的存储介质,该计算机可读的存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述文件调用方法。
根据本发明实施例的又一方面,还提供了一种电子设备,包括存储器和处理器,上述存储器中存储有计算机程序,上述处理器被设置为通过所述计算机程序执行上述的文件调用方法。
在本发明实施例中,采用在PC设备和ARM设备之间建立通信连接的方式,通过PC设备的第一通信进程向ARM设备上的第二通信进程发送目标调用命令,以指示在ARM设备上调用目标文件,PC设备获取ARM设备上调用目标文件所得到的调用结果。本申请通过在PC设备和ARM设备之间建立通信连接即可实现PC设备和ARM设备不同指令集架构平台的文件共享,达到的简化不同指令集架构的平台之间文件共享,提高文件共享效率的效果,以此解决了现有技术中由于不同指令集架构的平台之间文件共享较为复杂,导致的效率低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的文件调用方法的应用环境的示意图;
图2是根据本发明实施例的一种可选的文件调用方法的流程图;
图3是根据本发明实施例的一种可选的文件调用方法示意图;
图4是根据本发明实施例的一种可选的arm64-v8a构架示意图;
图5是根据本发明实施例的一种可选的整体架构示意图;
图6是根据本发明实施例的一种可选的命令行界面示意图;
图7是根据本发明实施例的一种可选的下层调用程序的实现框架示意图;
图8是根据本发明实施例的一种可选的ARM设备上运行java代码流程示意图;
图9是根据本发明实施例的另一种可选的文件调用方法流程图;
图10是根据本发明实施例的一种可选的文件调用装置的结构示意图;
图11是根据本发明实施例的另一种可选的文件调用装置的结构示意图;
图12是根据本发明实施例的一种可选的电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面对本申请中涉及到的关键词进行说明:
PC设备:用户直接操控的计算机的统称。其大小、性能以及价位等多个方面适合于个人使用。本申请中PC设备包括但不限于个人台式电脑、笔记本电脑、服务器设备等在内的计算机设备。
JNI:全称是Java Native Interface,Java本地接口。一种编程框架,使得Java虚拟机中的Java程序可以调用本地应用或者库,也可以被其他程序调用。其中,本地(Native)程序一般是指使用c、c++或汇编语言编写,且被编译为基于本机硬件和操作系统的程序。
ADB:全称是Android Debug Bridge,安卓调试桥。用于调试安卓设备的命令行工具,可以通过ADB与安卓设备进行通信。
X86架构:泛指一系列基于Intel8086且向后兼容的中央处理器指令集架构。广泛应用在PC电脑中央处理器中,是PC设备最常见的架构。
ARM架构:Advanced RISC Machine,高级精简指令集机器,是一个精简指令集处理器架构,广泛地应用在许多嵌入式系统(比如智能手机)。
So文件:linux系统共享目标文件,后缀为.so。安卓应用常用到的native代码,最终编译成.so通过JNI技术完成代码之间相互调用。该文件与平台指令集相关,不同指令集架构的平台的so文件无法互通使用。
安卓模拟器:安卓模拟器是能在个人计算机运行并模拟安卓手机系统的模拟器,并能安装、使用、卸载安卓应用的软件,利用安卓模拟器,用户即使没有手机硬件设备,也能在模拟器中使用移动应用程序。安卓模拟器能在电脑上模拟出安卓手机运行环境,让用户在电脑上也能体验安卓游戏和应用。例如,安卓官方SDK中自带的模拟器镜像、Genymotion模拟器等。
Houdini:intel为ARM架构程序在x86处理器上运行所实现的一套二进制指令转义框架。
Java反射技术:英文是reflection,是指计算机程序在运行时(runtime)可以访问、检测和修改它本身状态或行为的一种能力。Java语言自身提供一套反射接口,开发者可以利用这些API轻松实现对进程内代码逻辑的反射操作。
JVM:Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。
Dalvik:Dalvik虚拟机,是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即“Dalvik Executable”)格式的Java应用程序的运行。.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。
ART:Android Runtime(缩写为ART),是一种在Android操作系统上的运行环境,由Google公司研发,并在2013年作为Android 4.4系统中的一项测试功能正式对外发布,在Android 5.0及后续Android版本中作为正式的运行时库取代了以往的Dalvik虚拟机。ART能够把应用程序的字节码转换为机器码,是Android所使用的一种新的虚拟机。它与Dalvik的主要不同在于:Dalvik采用的是JIT技术,而ART采用Ahead-of-time(AOT)技术。ART同时也改善了性能、垃圾回收(Garbage Collection)、应用程序出错以及性能分析。
Javac命令:javac是收录于JDK中的Java语言编译器。该工具可以将后缀名为.java的源文件编译为后缀名为.class的可以运行于Java虚拟机的字节码
Class文件:Java虚拟机字节码文件。该文件存放适用于Java虚拟机运行的字节码文件。
Dx命令:dx是收录于Android SDK中的dalvik/art虚拟机字节码转换器工具。该工具将后缀名为class的JVM字节码文件转换成后缀名为dex的dalvik/art虚拟机字节码
Dex文件:安卓平台特有的Java虚拟机字节码文件。该文件存放适用于dalvik/art虚拟机运行的字节码文件。
根据本发明实施例的一个方面,提供了一种文件调用方法,可选地,作为一种可选的实施方式,上述文件调用方法可以但不限于应用于如图1所示的环境中。上述系统环境中包括计算机PC设备102和ARM设备104,其中,PC设备102上安装有上层程序和ADB工具PC设备102可以作为so文件的使用方。ARM设备104上存储了so文件,so文件被放置在ARM设备上运行。PC设备102和ARM设备104之间通过ADB命令完成数据传输。
可选地,作为一种可选的实施方式,如图2所示,上述文件调用方法包括:
步骤S202,通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,其中,所述第一通信进程与目标ARM设备上的第二通信进程建立了通信连接,所述调用触发命令用于触发所述第一通信进程通过所述通信连接向所述第二通信进程发送目标调用命令;
其中,上述目标PC设备包括但不限于个人台式电脑、笔记本电脑、服务器设备等在内的计算机设备。上述第一通信进程可以是安卓调试桥服务进程(ADB Service进程),上述第二通信进程可以是安卓调试桥守护进程(ADB daemon进程),上述ADB Service进程和ADBdaemon进程通过安卓调试桥(Android Debug Bridge,简称ADB)建立通信连接。
步骤S204,通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用目标文件,所述目标文件是允许在所述目标ARM设备上被调用的文件;
其中,上述目标文件可以是ARM架构中的SO文件,SO文件可以在ARM设备运行,无法在PC设备运行。PC设备向ARM设备发送目标调用指令,可以通过目标调用指令指示在ARM设备上调用SO文件,运行SO文件中的程序。
步骤S206,通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件所得到的调用结果。
其中,上述目标调用结果是ARM设备调用SO文件,通过运行SO文件得到的结果。PC设备通过上述命令执行进程从ARM设备中获取调用结果。
通过上述步骤,采用在PC设备和ARM设备之间建立通信连接的方式,通过PC设备的第一通信进程向ARM设备上的第二通信进程发送目标调用命令,以指示在ARM设备上调用目标文件,PC设备获取ARM设备上调用目标文件所得到的调用结果。本申请通过在PC设备和ARM设备之间建立通信连接即可实现PC设备和ARM设备不同指令集架构平台的文件共享,达到的简化不同指令集架构的平台之间文件共享,提高文件共享效率的效果,以此解决了现有技术中由于不同指令集架构的平台之间文件共享较为复杂,导致的效率低的技术问题。
作为一个可选的实施方式,如图3所示是根据本发明可选实施例的整体架构示意图,其中,包括PC设备和ARM设备。
PC设备端包括逻辑调用方、命令执行进程和第一通信进程(ADB Service进程)。ARM设备包括第二通信进程(ADB daemon进程),命令实现层、安卓底层系统实现和标准输出流。
逻辑调用方是应用层语言编写的上层需求方程序,逻辑调用方可以运行python、java、c#等编程语言。例如利用python语言编写的网络请求程序,请求通过ARM架构so文件计算签名参数。整个上层python语言所编写的逻辑程序即代表逻辑调用方。
命令执行进程是PC设备上的命令执行进程,例如各大操作系统均支持的命令行界面,本质则是一命令执行进程。该进程可以触发PC设备上已安装的所有受支持的命令的执行。本方案中ADB工具命令,则是在PC设备上事先安装好Google Android SDK后,将ADB命令所在路径添加到系统命令查找路径中之后,由命令执行进程完成对ADB命令的调用动作。
Adb server是指运行在PC设备上的ADB命令工具的server进程。该进程由GoogleAndroid SDK中的ADB工具自身实现,负责与ARM设备上的adb daemon进程进行通信,将PC设备上的adb命令调用的具体参数传递给ARM设备的daemon进程。可以理解为,PC设备上所有adb相关的命令,首先都交由adb Server进程处理实现。作为使用方只需要拼接相关的adb命令即可。
ADB daemon是运行在ARM安卓设备上的adb守护进程。该进程负责与PC设备的adbserver进程建立连接传递数据。可以说,整个通信链路就是由adb server和adb daemon两个进程建立起来的。两者分别运行在PC设备和ARM设备。同时,该进程负责解析由adbserver进程传递过来的命令信息,并派分给ARM安卓设备上具体的功能实现模块完成具体的逻辑执行操作。譬如最常见的安装命令:“adb install target.apk”,ADB daemon进程首先接受目标apk文件,存放于临时目录中,同时触发安卓设备上的应用安装逻辑,将目标apk安装到安卓设备上。
命令实现层可以是安卓设备上与adb命令相对应的具体实现。譬如与启动应用相关的am命令、与获取应用安装信息相关的pm命令、与创建dalvik虚拟机运行指定代码相关的dalvikvm命令。本申请中应用dalvikvm命令完成下层调用程序的运行。
安卓底层实现是安卓系统的实际实现,命令实现层仍是把命令参数做二次派分,并调用安卓系统相关的系统服务完成命令相关的操作。命令真正的实现逻辑均在安卓系统中。
标准输出流属于系统层级基础能力,本申请中PC端命令执行进程即是利用标准输出流接收到ARM设备上下层调用程序运行的结果。
其中,可以包括如下步骤:
步骤S301,PC设备端的逻辑调用方向命令执行进程发送请求,以指示命令执行进程向ADB Service进程发送触发命令,该触发命令用于触发ADB Service进程向ARM设备中的ADB daemon进程发送目标调用命令,其中,目标调用命令中可以携带命令参数;
步骤S302,ARM设备中的ADB daemon进程接收到目标调用命令,在ARM设备上调用SO文件,运行SO文件得到目标调用结果;
步骤S303,ARM设备将调用结果通过上述ARM设备中的ADB daemon进程,以及PC设备上的ADB Service进程,还用PC设备上的命令执行进程返回给逻辑调用方。以此PC设备上的逻辑调用方可以获取到对ARM设备的SO文件的调用结果。
可选地,所述通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,包括:通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算;所述通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,包括:通过所述命令执行进程获取所述目标ARM设备发送的所述目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
作为一个可选的实施方式,通过所述第一通信进程向所述第二通信进程发送第一调用命令,其中,所述第一调用命令用于指示在所述目标ARM设备上安装第一文件,所述目标调用命令包括所述第一调用命令,所述目标文件包括所述第一文件;所述通过所述命令执行进程接收所述目标ARM设备发送的目标调用结果,包括:通过所述命令执行进程接收所述目标ARM设备发送的第一调用结果,其中,所述第一调用结果是在所述目标ARM设备上安装所述第一文件所得到的安装结果,所述目标调用结果包括所述第一调用结果。
作为一个可选的实施方式,上述ARM设备上的SO文件可以用于执行逻辑运算,例如,加法运算、减法运算等运算逻辑,可以是简单的逻辑运算,也可以是复杂的逻辑运算。具体的逻辑运算可以根据实际情况而定。以ARM设备上的SO文件为实现加法逻辑运算为例,JNI上层java代码可以是:
选用arm64-v8a构架作为演示,如图4所示是根据本发明可选实施例的arm64-v8a构架示意图。运行在Android arm设备上的so调用层代码可以是:
将so文件放置到系统的“/data/local/tmp/lib64/”目录下,并通过反射将so所在目录添加到类加载器的nativeLibrary目录字段中,以便类加载器能够找寻到该so文件。
将调用层代码通过javac命令编译输出class文件,并利用Android SDK工具中的dx命令,将class文件打包成dex文件。利用zip命令将dex文件放到zip包中,push至arm设备的/data/local/tmp目录下,由此构建得到的SO文件,准备运行。
作为一个可选的实施方式,上述目标参数可以是PC设备上的第一通信进程发送的目标调用命令中携带的,上述目标参数可以根据实际情况而定。假设目标参数为1、2、3,利用adb命令,在arm设备上执行ARM设备中准备好的SO文件(上述zip文件),并在命令行中得到到运行结果。
Test 1 2 3
Arg length=3
Sum=6
可见,传入参数1,2,3之后,调用SO文件中的程序,完成数值相加运算,并通过日志输出,将结果返回至PC端的命令行中,即完成了在x86设备上调用arm架构so文件完成逻辑运算。
在上述实施例中,通过PC设备的Adb Service进程和ARM设备的Adb daemon进程可以实现PC设备与ARM设备之间的通信连接。通过Adb Service进程向Adb daemon进程发送携带目标参数的目标调用指令,ARM设备通过Adb daemon获取到目标参数,调用SO文件对目标参数执行逻辑运算得到调用结果,并将调用结果返回给PC设备。由此可以实现不同架构的文件共享。
可选地,所述通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,包括:通过所述第一通信进程向所述第二通信进程发送携带了第一调用命令,其中,所述目标调用命令包括所述第一调用命令,所述第一调用命令中携带所述目标参数;或者通过所述第一通信进程向所述第二通信进程发送携带了第二调用命令,其中,所述目标调用命令包括所述第二调用命令,所述第二调用命令中携带所述目标参数和所述目标文件的标识。
作为一个可选的实施方式,PC设备通过第一通信进程向ARM设备第二通信进程发送的第一调用命令中携带目标参数,例如上述实施例中的1、2、3。ARM设备通过第二通信进程获取到目标参数1、2、3,调用SO文件,通过SO文件对目标参数1、2、3执行逻辑运算。
作为一个可选的实施方式,由于ARM设备中可以包含多个SO文件,多个SO文件可以用于执行不同的逻辑运算,通过文件标识可以区分不同的SO文件。上述文件标识可以是文件名称,如test1.so、test2.so等,也可以是文件的存储路径,如/data/local/tmp目录。通过文件标识可以在ARM设备中查找到相应的SO文件。假设ARM设备中包含test1.so和test2.so,其中,test1.so用于执行加法运算逻辑,test2.so用于执行减法运算逻辑。若PC设备通过第一通信进程向ARM设备的第二通信进程发送的第二调用指令中携带test1.so文件标识,并携带目标参数1、2、3。ARM设备获取到第二调用指令后,调用test1.so对目标参数1、2、3执行加法运算逻辑,得到结果6。
可选地,所述通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,包括:通过所述第一通信进程获取所述第二通信进程发送的所述目标调用结果;通过所述命令执行进程获取所述第一通信进程发送的所述目标调用结果。
作为一个可选的实施方式,如图5所示是根据本发明可选实施例的整体架构示意图,逻辑使用方的上层程序运行在PC端,PC端触发ADB命令调用。上层程序利用命令与ADB工具程序交互,并基于命令执行工具的标准输入输出流完成参数传递,传递的参数包括但不限于上述目标参数。Arm设备端可以完成so文件的加载与运算,该部分能力可以由安卓系统、JNI等语言框架提供;Arm设备端还可以实现so文件的下层调用程序,响应上层ADB命令的指令。该程序基于标准输入、输出流完成数据传递交互。通过ADB命令传递过来的指令参数,通过标准输出流输出调用结果,供PC端程序使用。
作为一个可选的实施方式,上述图5中PC设备和ARM设备之间通过安卓调试桥ADB建立通信连接,ADB是Google提供的安卓开发工具套件中安卓调试桥程序。利用ADB作为PC设备与ARM设备的通信工具,ARM设备中,搭载android系统的设备占绝大部分,采用ADB作为传输通道,环境搭建成本极低。ADB工具属于开源工具,从google安卓开发官网可以轻松获取到,且该工具同时支持linux、Windows、macOS三大PC端操作系统,无适配问题。PC设备中ADB Service进程与ARM设备中的ADB deamaon之间可以通过上述通信连接进行通信,ADBService进程可以向ADB deamaon发送目标调用指令,目标调用指令中携带有目标参数,ADBdeamaon进程接收到目标调用指令调用SO文件,通过调用SO文件对获取到的目标参数进行逻辑运算,得到调用结果,上述调用结果包括对目标参数执行逻辑运算的结果。ARM设备中的ADB deamaon向PC设备中ADB Service进程返回上述调用结果。在本实施例中,Service进程接收到调用结果后,通过命令执行进程将调用结果发送至逻辑调用方。在本实施例中,通过PC设备和ARM设备之间的安卓调试桥可以实现PC端与ARM端的文件共享。
可选地,所述通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,包括:在所述目标PC设备的命令行界面上获取所述调用触发命令;通过与所述命令行界面对应的所述命令执行进程向所述第一通信进程发送所述调用触发命令。
作为一个可选的实施方式,如图6所示是一种可选的命令行界面示意图,在PC设备通过图中命令行界面获取调用触发指令,并通过命令行界面对应的命令执行进程向ADBService进程发送调用触发命令。
可选地,所述方法还包括:在所述第二通信进程接收到所述目标调用命令之后,在所述ARM设备上调用所述目标文件,得到所述目标调用结果;通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述命令执行进程。
作为一个可选的实施方式,ADB deamaon进程接收到目标调用指令后,在ARM设备上调用SO文件,ARM设备通过调用SO文件对获取到的目标参数进行逻辑运算,得到调用结果,调用结果包括对目标参数执行逻辑运算的结果。ARM设备中的ADB deamaon向PC设备中ADB Service进程返回上述调用结果,ADB Service进程将调用结果发送给命令执行进程,由命令执行进程将调用结果返回至逻辑调用方。在本实施例中,通过PC设备和ARM设备之间的安卓调试桥可以实现PC端与ARM端的文件共享。
可选地,所述在所述ARM设备上调用所述目标文件,得到所述目标调用结果,包括:在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,其中,所述目标调用结果是调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
作为一个可选的实施方式,ARM设备通过调用SO文件对获取到的目标参数进行逻辑运算,得到调用结果,调用结果包括对目标参数执行逻辑运算的结果。例如,SO文件可以执行加法运算,PC设备通过第一通信进程向ARM设备第二通信进程发送的第一调用命令中携带目标参数1、2、3。ARM设备通过第二通信进程获取到目标参数1、2、3,调用SO文件,通过SO文件对目标参数1、2、3执行加法逻辑运算,得到逻辑运算结果未6。上述SO文件执行加法运算仅为了说明本实施例,SO文件还可以执行减法、乘法或者更为复杂的逻辑运算。
可选地,所述在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,包括:在所述ARM设备上加载所述目标文件所对应的java程序代码;将所述java程序代码转换成目标运行文件,其中,所述目标运行文件是允许在所述ARM设备上的虚拟机上运行的文件;在所述虚拟机上运行所述目标运行文件,对所述目标参数执行所述目标逻辑运算,得到所述目标调用结果。
作为一个可选的实施方式,安卓程序运行的虚拟机是一种JVM,本实施例中的虚拟机可以是安卓设备所特有的dalvik/art虚拟机(例如,5.0以下为dalvik虚拟机,5.0及以上art虚拟机),来执行下层调用程序代码,程序代码可以是java程序代码。具体地,可以在ARM设备上将java程序代码转换成可以运行的文件,通过虚拟机运行该文件,完成对目标SO文件的调用,通过调用SO文件对获取到的目标参数执行逻辑运算,得到运算结果。同时利用标准输出流,逻辑运算结果传递给pc设备的上层程序。
作为一个可选的实施方式,如图7所示是根据本发明可选实施例的下层调用程序的实现框架示意图,包括下层调用程序实现的逻辑以及该程序从java源码到最终被arm设备运行起来的演变过程。下层调用程序运行过程包括:ADB命令参数解析、类加载器处理、JIN代码实现与调用。其中,arm设备从java main方法的args参数中获取由调用命令行传递调用过来的目标参数。Adb名参数解析用于在目标调用命令中解析出目标参数,例如,上述实施例中待相加的数字1、2、3。类加载器处理将目标so存放目录(例如,/data/local/tmp/lib64/)添加至类加载的nativeLib列表中,确保在后续尝试加载so文件时,程序可以顺利找到目标so文件。JNI代码实现与调用实现so对应的上层Java代码(native方法声明),并调用该native方法,完成逻辑计算。下层程序利用标准输出流(System.out)将运行结果打印输出。该输出最终由PC端的上层调用程序截获使用。
以上下层调用程序逻辑均通过java代码实现,这些java代码最终运行在ARM设备上为例。如图8所示是根据本发明可选实施例的ARM设备上运行java代码流程示意图,其中,包括如下步骤:
步骤S801,利用javac命令,把java程序编译成class字节码;
步骤S802,利用Google Android SDK中的dx命令,将class字节码转换成dex字节码;
步骤S803,将dex文件放入zip包中,拷贝至arm设备/data/local/tmp目录下,并执行adb dalvikvm命令,启动下层调用程序。
可选地,所述方法还包括:将从所述目标PC设备上拷贝的所述目标文件存储在所述ARM设备上的目标目录中;或者通过所述第二通信进程接收所述第一通信进程发送的所述目标文件,并将所述目标文件存储在所述ARM设备上的所述目标目录中。
作为一个可选的实施方式,上述目标文件可以是在PC设备上实现的,可以将在PC设备上实现的目标文件存储在ARM设备上的目标目录中,例如,out/lib/Arm64-v8a/libnative-lib.so。
作为一个可选的实施方式,上述第二通信进程可以是ARM设备上的ADB daemon,上述第一通信进程可以是PC设备上的adb server进程。ARM设备通过ADB daemon进程接收PC设备上的adb server进程发送的目标文件,ARM设备将接收到的目标文件存储在目标目录中,例如,out/lib/Arm64-v8a/libnative-lib.so。
可选地,所述通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,包括:通过所述目标PC设备上运行的安卓调试桥服务进程向所述目标ARM设备上运行的安卓调试桥守护进程发送所述目标调用命令,其中,所述第一通信进程为所述安卓调试桥服务进程,所述第二通信进程为所述安卓调试桥守护进程。
作为一个可选的实施方式,上述第一通信进程可以是安卓调试桥服务进程(AdbService进程)。上述第二通信进程可以是安卓调试桥守护进程(Adb daemon进程)。PC设备上运行的Adb Service进程向ARM设备上运行的Adb daemon进程发送调用命令。
根据本发明实施例的另一个方面,还提供了另一种文件调用方法,图9所示是根据本发明可选实施例的另一种文件调用方法流程图,其中,包括:
步骤S901,通过目标ARM设备上的第二通信进程接收目标调用命令,其中,所述目标调用命令由目标PC设备上的第一通信进程发送,所述第一通信进程与所述第二通信进程建立了通信连接;
步骤S902,在所述ARM设备上调用目标文件,得到目标调用结果,其中,所述目标文件是允许在所述目标ARM设备上被调用的文件;
步骤S903,通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述目标PC设备上的命令执行进程。
可选地,所述在所述ARM设备上调用所述目标文件,得到所述目标调用结果,包括:在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,其中,所述目标调用命令中携带有所述目标参数,所述目标调用结果是调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
可选地,所述在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,包括:在所述ARM设备上加载所述目标文件所对应的java程序代码;将所述java程序代码转换成目标运行文件,其中,所述目标运行文件是允许在所述ARM设备上的虚拟机上运行的文件;在所述虚拟机上运行所述目标运行文件,对所述目标参数执行所述目标逻辑运算,得到所述目标调用结果。
可选地,所述方法还包括:将从所述目标PC设备上拷贝的所述目标文件存储在所述ARM设备上的目标目录中;或者通过所述第二通信进程接收所述第一通信进程发送的所述目标文件,并将所述目标文件存储在所述ARM设备上的所述目标目录中。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
根据本发明实施例的另一个方面,还提供了一种用于实施上述文件调用方法的文件调用装置。如图10所示,该装置包括:第一发送模块1002,用于通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,其中,所述第一通信进程与目标ARM设备上的第二通信进程建立了通信连接,所述调用触发命令用于触发所述第一通信进程通过所述通信连接向所述第二通信进程发送目标调用命令;第二发送模块1004,用于通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用目标文件,所述目标文件是允许在所述目标ARM设备上被调用的文件;第三发送模块1006,通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件所得到的调用结果。
可选地,上述装置用于通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算;通过所述命令执行进程获取所述目标ARM设备发送的所述目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
可选地,上述装置还用于通过所述第一通信进程向所述第二通信进程发送携带了第一调用命令,其中,所述目标调用命令包括所述第一调用命令,所述第一调用命令中携带所述目标参数;或者通过所述第一通信进程向所述第二通信进程发送携带了第二调用命令,其中,所述目标调用命令包括所述第二调用命令,所述第二调用命令中携带所述目标参数和所述目标文件的标识。
可选地,上述装置还用于通过所述第一通信进程获取所述第二通信进程发送的所述目标调用结果;通过所述命令执行进程获取所述第一通信进程发送的所述目标调用结果。
可选地,上述装置还用于在所述目标PC设备的命令行界面上获取所述调用触发命令;通过与所述命令行界面对应的所述命令执行进程向所述第一通信进程发送所述调用触发命令。
可选地,上述装置还用于在所述第二通信进程接收到所述目标调用命令之后,在所述ARM设备上调用所述目标文件,得到所述目标调用结果;通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述命令执行进程。
可选地,上述装置还用于在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,其中,所述目标调用结果是调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
可选地,上述装置还用于在所述ARM设备上加载所述目标文件所对应的java程序代码;将所述java程序代码转换成目标运行文件,其中,所述目标运行文件是允许在所述ARM设备上的虚拟机上运行的文件;在所述虚拟机上运行所述目标运行文件,对所述目标参数执行所述目标逻辑运算,得到所述目标调用结果。
可选地,上述装置还用于将从所述目标PC设备上拷贝的所述目标文件存储在所述ARM设备上的目标目录中;通过所述第二通信进程接收所述第一通信进程发送的所述目标文件,并将所述目标文件存储在所述ARM设备上的所述目标目录中。
可选地,上述装置还用于通过所述目标PC设备上运行的安卓调试桥服务进程向所述目标ARM设备上运行的安卓调试桥守护进程发送所述目标调用命令,其中,所述第一通信进程为所述安卓调试桥服务进程,所述第二通信进程为所述安卓调试桥守护进程。
根据本发明实施例的另一个方面,还提供了一种用于实施上述另一种文件调用方法的另一种文件调用装置。如图11所示,该装置包括:接收模块1102,用于通过目标ARM设备上的第二通信进程接收目标调用命令,其中,所述目标调用命令由目标PC设备上的第一通信进程发送,所述第一通信进程与所述第二通信进程建立了通信连接;调用模块1104,用于在所述ARM设备上调用目标文件,得到目标调用结果,其中,所述目标文件是允许在所述目标ARM设备上被调用的文件;第四发送模块1106,用于通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述目标PC设备上的命令执行进程。
可选地,上述装置还用于在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,其中,所述目标调用命令中携带有所述目标参数,所述目标调用结果是调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
可选地,上述装置还用于在所述ARM设备上加载所述目标文件所对应的java程序代码;将所述java程序代码转换成目标运行文件,其中,所述目标运行文件是允许在所述ARM设备上的虚拟机上运行的文件;在所述虚拟机上运行所述目标运行文件,对所述目标参数执行所述目标逻辑运算,得到所述目标调用结果。
可选地,上述装置还用于将从所述目标PC设备上拷贝的所述目标文件存储在所述ARM设备上的目标目录中;通过所述第二通信进程接收所述第一通信进程发送的所述目标文件,并将所述目标文件存储在所述ARM设备上的所述目标目录中。
根据本发明实施例的又一个方面,还提供了一种用于实施上述文件调用方法的电子设备,该电子设备可以是图1所示的终端设备或服务器。本实施例以该电子设备为服务器为例来说明。如图12所示,该电子设备包括存储器1202和处理器1204,该存储器1202中存储有计算机程序,该处理器1204被设置为通过计算机程序执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,其中,所述第一通信进程与目标ARM设备上的第二通信进程建立了通信连接,所述调用触发命令用于触发所述第一通信进程通过所述通信连接向所述第二通信进程发送目标调用命令;
S2,通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用目标文件,所述目标文件是允许在所述目标ARM设备上被调用的文件;
S3,通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件所得到的调用结果。
可选地,上述处理器还可以被设置为通过计算机程序执行以下步骤:
S1,通过目标ARM设备上的第二通信进程接收目标调用命令,其中,所述目标调用命令由目标PC设备上的第一通信进程发送,所述第一通信进程与所述第二通信进程建立了通信连接;
S2,在所述ARM设备上调用目标文件,得到目标调用结果,其中,所述目标文件是允许在所述目标ARM设备上被调用的文件;
S3,通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述目标PC设备上的命令执行进程。
可选地,本领域普通技术人员可以理解,图12所示的结构仅为示意,电子装置电子设备也可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile Internet Devices,MID)、PAD等终端设备。图12其并不对上述电子装置电子设备的结构造成限定。例如,电子装置电子设备还可包括比图12中所示更多或者更少的组件(如网络接口等),或者具有与图12所示不同的配置。
其中,存储器1202可用于存储软件程序以及模块,如本发明实施例中的文件调用方法和装置对应的程序指令/模块,处理器1204通过运行存储在存储器1202内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的文件调用方法。存储器1202可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1202可进一步包括相对于处理器1204远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。其中,存储器1202具体可以但不限于用于存储物品的样本特征与目标虚拟资源账号等信息。作为一种示例,如图12所示,上述存储器1202中可以但不限于包括上述文件调用装置中的第一发送模块1002、第二发送模块1004、第三发送模块1006。此外,还可以包括但不限于上述文件调用装置中的其他模块单元,本示例中不再赘述。
可选地,上述的传输装置1206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1206包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1206为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
此外,上述电子设备还包括:显示器1208,用于显示上述目标调用结果;和连接总线1210,用于连接上述电子设备中的各个模块部件。
在其他实施例中,上述终端设备或者服务器可以是一个分布式系统中的一个节点,其中,该分布式系统可以为区块链系统,该区块链系统可以是由该多个节点通过网络通信的形式连接形成的分布式系统。其中,节点之间可以组成点对点(P2P,Peer To Peer)网络,任意形式的计算设备,比如服务器、终端等电子设备都可以通过加入该点对点网络而成为该区块链系统中的一个节点。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述计算机可读的存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,其中,所述第一通信进程与目标ARM设备上的第二通信进程建立了通信连接,所述调用触发命令用于触发所述第一通信进程通过所述通信连接向所述第二通信进程发送目标调用命令;
S2,通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用目标文件,所述目标文件是允许在所述目标ARM设备上被调用的文件;
S3,通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件所得到的调用结果。
可选地,在本实施例中,上述计算机可读的存储介质还可以被设置为存储用于执行以下步骤的计算机程序:
S1,通过目标ARM设备上的第二通信进程接收目标调用命令,其中,所述目标调用命令由目标PC设备上的第一通信进程发送,所述第一通信进程与所述第二通信进程建立了通信连接;
S2,在所述ARM设备上调用目标文件,得到目标调用结果,其中,所述目标文件是允许在所述目标ARM设备上被调用的文件;
S3,通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述目标PC设备上的命令执行进程。
可选地,在本实施例中,本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random Access Memory,RAM)、磁盘或光盘等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (18)
1.一种文件调用方法,其特征在于,包括:
通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,其中,所述第一通信进程与目标ARM设备上的第二通信进程建立了通信连接,所述调用触发命令用于触发所述第一通信进程通过所述通信连接向所述第二通信进程发送目标调用命令;
通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用目标文件,所述目标文件是允许在所述目标ARM设备上被调用的文件;
通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件所得到的调用结果。
2.根据权利要求1所述的方法,其特征在于,
所述通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,包括:通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算;
所述通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,包括:通过所述命令执行进程获取所述目标ARM设备发送的所述目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
3.根据权利要求2所述的方法,其特征在于,所述通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,包括:
通过所述第一通信进程向所述第二通信进程发送携带了第一调用命令,其中,所述目标调用命令包括所述第一调用命令,所述第一调用命令中携带所述目标参数;或者
通过所述第一通信进程向所述第二通信进程发送携带了第二调用命令,其中,所述目标调用命令包括所述第二调用命令,所述第二调用命令中携带所述目标参数和所述目标文件的标识。
4.根据权利要求1所述的方法,其特征在于,所述通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,包括:
通过所述第一通信进程获取所述第二通信进程发送的所述目标调用结果;
通过所述命令执行进程获取所述第一通信进程发送的所述目标调用结果。
5.根据权利要求1所述的方法,其特征在于,所述通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,包括:
在所述目标PC设备的命令行界面上获取所述调用触发命令;
通过与所述命令行界面对应的所述命令执行进程向所述第一通信进程发送所述调用触发命令。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第二通信进程接收到所述目标调用命令之后,在所述ARM设备上调用所述目标文件,得到所述目标调用结果;
通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述命令执行进程。
7.根据权利要求6所述的方法,其特征在于,所述在所述ARM设备上调用所述目标文件,得到所述目标调用结果,包括:
在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,其中,所述目标调用结果是调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
8.根据权利要求7所述的方法,其特征在于,所述在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,包括:
在所述ARM设备上加载所述目标文件所对应的java程序代码;
将所述java程序代码转换成目标运行文件,其中,所述目标运行文件是允许在所述ARM设备上的虚拟机上运行的文件;
在所述虚拟机上运行所述目标运行文件,对所述目标参数执行所述目标逻辑运算,得到所述目标调用结果。
9.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将从所述目标PC设备上拷贝的所述目标文件存储在所述ARM设备上的目标目录中;或者
通过所述第二通信进程接收所述第一通信进程发送的所述目标文件,并将所述目标文件存储在所述ARM设备上的所述目标目录中。
10.根据权利要求1至9中任一项所述的方法,其特征在于,所述通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,包括:
通过所述目标PC设备上运行的安卓调试桥服务进程向所述目标ARM设备上运行的安卓调试桥守护进程发送所述目标调用命令,其中,所述第一通信进程为所述安卓调试桥服务进程,所述第二通信进程为所述安卓调试桥守护进程。
11.一种文件调用方法,其特征在于,包括:
通过目标ARM设备上的第二通信进程接收目标调用命令,其中,所述目标调用命令由目标PC设备上的第一通信进程发送,所述第一通信进程与所述第二通信进程建立了通信连接;
在所述ARM设备上调用目标文件,得到目标调用结果,其中,所述目标文件是允许在所述目标ARM设备上被调用的文件;
通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述目标PC设备上的命令执行进程。
12.根据权利要求11所述的方法,其特征在于,所述在所述ARM设备上调用所述目标文件,得到所述目标调用结果,包括:
在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,其中,所述目标调用命令中携带有所述目标参数,所述目标调用结果是调用所述目标文件对所述目标参数执行所述目标逻辑运算所得到的运算结果。
13.根据权利要求12所述的方法,其特征在于,所述在所述目标ARM设备上调用所述目标文件对目标参数执行目标逻辑运算,得到所述目标调用结果,包括:
在所述ARM设备上加载所述目标文件所对应的java程序代码;
将所述java程序代码转换成目标运行文件,其中,所述目标运行文件是允许在所述ARM设备上的虚拟机上运行的文件;
在所述虚拟机上运行所述目标运行文件,对所述目标参数执行所述目标逻辑运算,得到所述目标调用结果。
14.根据权利要求11所述的方法,其特征在于,所述方法还包括:
将从所述目标PC设备上拷贝的所述目标文件存储在所述ARM设备上的目标目录中;或者
通过所述第二通信进程接收所述第一通信进程发送的所述目标文件,并将所述目标文件存储在所述ARM设备上的所述目标目录中。
15.一种文件调用装置,其特征在于,包括:
第一发送模块,用于通过目标PC设备上的命令执行进程向所述目标PC设备上的第一通信进程发送调用触发命令,其中,所述第一通信进程与目标ARM设备上的第二通信进程建立了通信连接,所述调用触发命令用于触发所述第一通信进程通过所述通信连接向所述第二通信进程发送目标调用命令;
第二发送模块,用于通过所述第一通信进程向所述第二通信进程发送所述目标调用命令,其中,所述目标调用命令用于指示在所述目标ARM设备上调用目标文件,所述目标文件是允许在所述目标ARM设备上被调用的文件;
第三发送模块,通过所述命令执行进程获取所述目标ARM设备发送的目标调用结果,其中,所述目标调用结果是在所述目标ARM设备上调用所述目标文件所得到的调用结果。
16.一种文件调用装置,其特征在于,包括:
接收模块,用于通过目标ARM设备上的第二通信进程接收目标调用命令,其中,所述目标调用命令由目标PC设备上的第一通信进程发送,所述第一通信进程与所述第二通信进程建立了通信连接;
调用模块,用于在所述ARM设备上调用目标文件,得到目标调用结果,其中,所述目标文件是允许在所述目标ARM设备上被调用的文件;
第四发送模块,用于通过所述第二通信进程向所述第一通信进程发送所述目标调用结果,其中,所述第一通信进程用于将所述目标调用结果发送给所述目标PC设备上的命令执行进程。
17.一种计算机可读的存储介质,其特征在于,所述计算机可读的存储介质包括存储的程序,其中,所述程序运行时执行所述权利要求1至10或11至14任一项中所述的方法。
18.一种电子设备,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为通过所述计算机程序执行所述权利要求1至10或11至14任一项中所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110809208.8A CN113467861B (zh) | 2021-07-16 | 2021-07-16 | 文件调用方法和装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110809208.8A CN113467861B (zh) | 2021-07-16 | 2021-07-16 | 文件调用方法和装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113467861A true CN113467861A (zh) | 2021-10-01 |
CN113467861B CN113467861B (zh) | 2024-08-09 |
Family
ID=77880856
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110809208.8A Active CN113467861B (zh) | 2021-07-16 | 2021-07-16 | 文件调用方法和装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467861B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073904A1 (en) * | 2002-10-15 | 2004-04-15 | Nokia Corporation | Method and apparatus for accelerating program execution in platform-independent virtual machines |
KR20070052110A (ko) * | 2005-11-16 | 2007-05-21 | 엠텍비젼 주식회사 | 임베디드 시스템의 프로그램 개발을 위한 pc 기반의에뮬레이션 제공 방법 및 장치 |
US20120047493A1 (en) * | 2010-08-19 | 2012-02-23 | Oracle International Corporation | Break on next called function or method in java debugger agent |
CN102592085A (zh) * | 2011-12-27 | 2012-07-18 | 中兴通讯股份有限公司 | 一种无线通信终端及行业软件安全运行方法 |
CN111209193A (zh) * | 2019-12-30 | 2020-05-29 | 北京健康之家科技有限公司 | 程序的调试方法及装置 |
CN111382048A (zh) * | 2018-12-28 | 2020-07-07 | 北京奇虎科技有限公司 | 真机测试平台上移动设备的管理方法和装置 |
CN111427782A (zh) * | 2020-03-24 | 2020-07-17 | 同盾控股有限公司 | 安卓动态链接库的运行方法、装置、设备及存储介质 |
-
2021
- 2021-07-16 CN CN202110809208.8A patent/CN113467861B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073904A1 (en) * | 2002-10-15 | 2004-04-15 | Nokia Corporation | Method and apparatus for accelerating program execution in platform-independent virtual machines |
KR20070052110A (ko) * | 2005-11-16 | 2007-05-21 | 엠텍비젼 주식회사 | 임베디드 시스템의 프로그램 개발을 위한 pc 기반의에뮬레이션 제공 방법 및 장치 |
US20120047493A1 (en) * | 2010-08-19 | 2012-02-23 | Oracle International Corporation | Break on next called function or method in java debugger agent |
CN102592085A (zh) * | 2011-12-27 | 2012-07-18 | 中兴通讯股份有限公司 | 一种无线通信终端及行业软件安全运行方法 |
CN111382048A (zh) * | 2018-12-28 | 2020-07-07 | 北京奇虎科技有限公司 | 真机测试平台上移动设备的管理方法和装置 |
CN111209193A (zh) * | 2019-12-30 | 2020-05-29 | 北京健康之家科技有限公司 | 程序的调试方法及装置 |
CN111427782A (zh) * | 2020-03-24 | 2020-07-17 | 同盾控股有限公司 | 安卓动态链接库的运行方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
RANDER.C: "Android Dalvikvm的使用", 《HTTPS://BLOG.CSDN.NET/CSM_QZ/ARTICLE/DETAILS/50444933》, pages 1 * |
小路: "Android 动态调试so文件", 《HTTPS://WRLUS.COM/ANDROID-SECURITY/ANDROID-DEBUG-SO/》, pages 3 - 5 * |
Also Published As
Publication number | Publication date |
---|---|
CN113467861B (zh) | 2024-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6856749B2 (ja) | ブロックチェーン上のネイティブ契約を実施するためのシステムおよび方法 | |
CN109062617B (zh) | 一种支持多类型设备的平台的应用方法、移动终端 | |
CN105100191A (zh) | 一种云编译实现Java应用安装的方法、装置及系统 | |
CN110187910B (zh) | 一种热更新方法、装置、设备及计算机可读存储介质 | |
CN108614767A (zh) | 一种远程调试方法及装置 | |
CN111966396A (zh) | 数据处理方法及装置、计算机系统和计算机可读存储介质 | |
CN111880987A (zh) | 应用程序的动态监测方法、装置、存储介质以及电子装置 | |
CN115629971A (zh) | 一种应用的开发系统和开发方法 | |
CN111880801A (zh) | 应用程序动态化方法、装置、电子设备 | |
CN113312046A (zh) | 子应用页面处理方法、装置和计算机设备 | |
CN114116134A (zh) | 智能合约部署和执行方法、设备及存储介质 | |
CN109542464B (zh) | IoT设备脚本程序的开发部署系统、方法及存储介质 | |
CN111506368A (zh) | 对异步调用转同步调用的方法、装置、设备及存储介质 | |
CN114816672A (zh) | 虚拟机的创建方法、装置、电子设备和存储介质 | |
JP2023547070A (ja) | アプリケーションの実行を停止しない更新された共有ライブラリの再読み込み | |
CN113778897A (zh) | 接口的自动测试方法、装置、设备及存储介质 | |
CN112306539A (zh) | 一种单片机应用层开发方法、系统、终端及介质 | |
CN113467861B (zh) | 文件调用方法和装置、存储介质及电子设备 | |
KR20130020135A (ko) | 통합 개발 환경에서의 코드 동시 개발자 리스트 제공 시스템 및 방법 | |
Haja et al. | Location, proximity, affinity–the key factors in FaaS | |
CN114443316B (zh) | 一种对象访问方法、装置及电子设备 | |
CN111581085B (zh) | 联调测试系统及方法 | |
CN117555645B (zh) | 基于多端应用平台的数据处理方法、装置、设备及介质 | |
CN115543486B (zh) | 面向无服务器计算的冷启动延迟优化方法、装置和设备 | |
CN117056317B (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 |