CN110297768A - 真机SDK兼容模拟器debug的方法、装置、设备及存储介质 - Google Patents

真机SDK兼容模拟器debug的方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN110297768A
CN110297768A CN201910482350.9A CN201910482350A CN110297768A CN 110297768 A CN110297768 A CN 110297768A CN 201910482350 A CN201910482350 A CN 201910482350A CN 110297768 A CN110297768 A CN 110297768A
Authority
CN
China
Prior art keywords
file
sdk
static library
library item
prototype
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.)
Pending
Application number
CN201910482350.9A
Other languages
English (en)
Inventor
何兵
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201910482350.9A priority Critical patent/CN110297768A/zh
Publication of CN110297768A publication Critical patent/CN110297768A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及研发管理技术领域,公开了一种真机SDK兼容模拟器debug的方法,所述真机SDK兼容模拟器debug的方法包括:在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件;根据预置模拟器对所述静态库项目文件进行编译,生成所述静态库项目文件的.a文件;在生成所述静态库项目文件的.a文件时,读取所述SDK中的.a文件;根据所述静态库项目文件的.a文件和所述SDK中的.a文件,生成新的.a文件并替换所述SDK中的.a文件。本发明还公开了一种装置、计算机设备及存储介质。本发明通过真机的SDK建立一个静态库项目,并根据在不同型号模拟器的编译环境下对静态库项目进行编译,获取静态库项目不同型号的.a文件。

Description

真机SDK兼容模拟器debug的方法、装置、设备及存储介质
技术领域
本发明涉及软件开发辅助的服务管理领域,尤其涉及一种真机SDK兼容模拟器debug的方法、装置、计算机设备及计算机可读存储介质。
背景技术
软件开发包(software developmentkit,SDK)提供一套有一定结构和逻辑的对外开发接口,封装对内的业务逻辑。开发商只需要按照说明文档使用相应的对外开发接口就可以实现预期的功能,简化了应用开发流程,提高了应用开发速度,并在一定程度上保证了应用的开发质量。
目前手机、平板等移动终端中使用越来越多的SDK来实现各种应用软件(application,APP)的多种功能需求。现有的SDK一般由供应商提供,但供应商提供的SDK为真机版,只能在真机上编译运行却不能再模拟器上编译运行。而一个完整的SDK不仅能在真机上编译运行还能在模拟器上运行编译,当有些开发者在模拟器上引入这些SDK时,从而导致SDK无法在模拟器上编译运行,造成很大的不便。
发明内容
本发明的主要目的在于提供一种真机SDK兼容模拟器debug的方法,旨在解决现有的供应商提供了真机开发的SDK,而模拟器无法对该SDK进行编译的技术问题。
为实现上述目的,本发明提供一种真机SDK兼容模拟器debug的方法,所述真机SDK兼容模拟器debug的方法包括:
在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件;
根据预置模拟器对所述静态库项目文件进行编译,生成所述静态库项目文件的.a文件;
在生成所述静态库项目文件的.a文件时,读取所述SDK中的.a文件;
根据所述静态库项目文件的.a文件和所述SDK中的.a文件,生成新的.a文件并替换所述SDK中的.a文件。
可选的,所述在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件,包括:
在检测到SDK暴露的SDK名称和头代码文件时,获取所述SDK暴露的SDK名称和头代码文件;
当获取到所述SDK名称时,创建目标文件夹并命名;
当获取到所述头代码文件时,复制所述头代码文件并将复制的所述头代码文件存入所述目标文件夹中,建立静态库项目文件。
可选的,所述根据预置模拟器对所述静态库项目文件进行编译,生成所述静态库项目文件的.a文件,包括:
当检测到所述静态库项目文件中的头代码文件时,启动预置模拟器;
在启动所述预置模拟器时,通过所述预置模拟器所述头代码文件进行编写,生成所述静态库项目文件的.a文件。
可选的,所述在启动所述预置模拟器时,通过所述预置模拟器所述头代码文件进行编写,生成所述静态库项目文件的.a文件,包括:
在启动所述预置模拟器时,读取所述头代码文件中的函数名称或函数参数;
当读取到所述头代码文件中的函数名称或函数参数时,通过所述预置模拟器将所述函数名称或函数参数编写成目标程序,获取所述目标程序;
在获取到所述目标程序时,将所述目标程序和所述头代码文件进行编译生成二进制格式的所述静态库项目文件的.a文件。
可选的,所述在生成所述静态库项目文件的.a文件时,读取所述SDK中的.a文件包括:
当生成所述静态库项目文件的.a文件时,搜索所述SDK的.a文件;
在搜索到所述SDK的.a文件时,读取所述SDK的.a文件。
可选的,所述根据所述静态库项目文件的.a文件和所述SDK中的.a文件,生成新的.a文件并替换所述SDK中的.a文件,包括:
当获取到所述静态库项目文件的.a文件和所述SDK中的.a文件时,获取预置lipo命令;
根据所述预置lipo命令,将述静态库项目文件的.a文件和所述SDK中的.a文件进行合并生成新的.a文件;
可选的,所述在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件之前,还包括;
终端在接收到用户的操作指令时,解压预存的SDK;
当解压所述SDK时,检测所述SDK暴露的信息。
此外,为实现上述目的,本发明还提供一种真机SDK兼容模拟器debug的装置,所述真机SDK兼容模拟器debug的装置包括:
获取建立单元,用户在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件
生成单元,用于根据预置模拟器对所述静态库项目文件进行编译,生成所述静态库项目文件的.a文件;
读取单元,用于在生成所述静态库项目文件的.a文件时,读取所述SDK中的.a文件;
生成替换单元,用于根据所述静态库项目文件的.a文件和所述SDK中的.a文件,生成新的.a文件并替换所述SDK中的.a文件。
可选的,所述获取建立单元具体用于:
在检测到SDK暴露的SDK名称和头代码文件时,获取所述SDK暴露的SDK名称和头代码文件;
当获取到所述SDK名称时,创建目标文件夹并命名;
当获取到所述头代码文件代时,当获取到所述头代码文件时,复制所述头代码文件并将复制的所述头代码文件存入所述目标文件夹中,建立静态库项目文件可选的,所述读取单元具体用于:
当检测到所述静态库项目文件中的头代码文件时,启动预置模拟器;
在启动所述预置模拟器时,通过所述预置模拟器对所述头代码文件进行编写,生成所述静态库项目文件的.a文件。
可选的,所述读取单元具体还用于:
在启动所述预置模拟器时,读取所述头代码文件中的函数名称或函数参数;
当读取到所述头代码文件中的函数名称或函数参数时,通过所述预置模拟器将所述函数名称或函数参数编写成目标程序,获取所述目标程序;
在获取到所述目标程序时,将所述目标程序和所述头代码文件进行编译生成二进制格式的所述静态库项目文件的.a文件。
可选的,所述读取单元具体用于:
当生成所述静态库项目文件的.a文件时,搜索所述SDK的.a文件;
在搜索到所述SDK的.a文件时,读取所述SDK的.a文件。
可选的,所述生成替换单元具体用于:
当获取到所述静态库项目文件的.a文件和所述SDK中的.a文件时,获取预置lipo命令;
根据所述预置lipo命令,将述静态库项目文件的.a文件和所述SDK中的.a文件进行合并生成新的.a文件;
在获取到所述新的.a文件时,替换所述SDK中的.a文件。
可选的,所述真机SDK兼容模拟器debug的装置,还包括:
终端在接收到用户的操作指令时,解压预存的SDK;
当解压所述SDK时,检测所述SDK暴露的信息。
此外,为实现上述目的,本发明还提供一种计算机设备,所述计算机设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的真机SDK兼容模拟器debug程序,所述真机SDK兼容模拟器debug程序被所述处理器执行时实现如上发明所述真机SDK兼容模拟器debug的方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有真机SDK兼容模拟器debug程序,所述真机SDK兼容模拟器debug程序被处理器执行时实现如上发明所述的真机SDK兼容模拟器debug的方法的步骤。
本发明实施例提出的一种真机SDK兼容模拟器debug的方法、装置、计算机设备及计算机可读存储介质,通过在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件;根据预置模拟器对所述静态库项目文件进行编译,生成所述静态库项目文件的.a文件;在生成所述静态库项目文件的.a文件时,读取所述SDK中的.a文件;根据所述静态库项目文件的.a文件和所述SDK中的.a文件,生成新的.a文件并替换所述SDK中的.a文件,实现了在没有SDK源代码的情况下,通过真机的SDK建立一个静态库项目,并根据在不同型号模拟器的编译环境下对静态库项目进行编译,获取静态库项目不同型号的.a文件。
附图说明
图1为本发明实施例方案涉及的硬件运行环境的计算机设备结构示意图;
图2为本发明真机SDK兼容模拟器debug的方法第一实施例的流程示意图;
图3为本发明真机SDK兼容模拟器debug的方法第二实施例的流程示意图;
图4为本发明真机SDK兼容模拟器debug的方法第三实施例的流程示意图;
图5为图4中步骤S22的细化流程示意图;
图6为本发明真机SDK兼容模拟器debug的方法第四实施例的流程示意图;
图7为本发明真机SDK兼容模拟器debug的方法第五实施例的流程示意图;
图8为本发明真机SDK兼容模拟器debug的方法第六实施例的流程示意图。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件;根据预置模拟器对所述静态库项目文件进行编译,生成所述静态库项目文件的.a文件;在生成所述静态库项目文件的.a文件时,读取所述SDK中的.a文件;根据所述静态库项目文件的.a文件和所述SDK中的.a文件,生成新的.a文件并替换所述SDK中的.a文件。
由于现有技术,现有的供应商提供了真机开发的SDK,而模拟器无法对该SDK进行编译。
本发明提供一种解决方案,在没有SDK源代码的情况下,通过真机的SDK建立一个静态库项目,并根据在不同型号模拟器的编译环境下对静态库项目进行编译,获取静态库项目不同型号的.a文件。
如图1所示,图1为本发明实施例方案涉及的硬件运行环境的终端结构示意图。
本发明实施例终端可以是平板电脑、便携计算机等终端设备。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及真机SDK兼容模拟器debug程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的真机SDK兼容模拟器debug程序,并执行以下操作:
在检测到SDK暴露的信息时,获取SDK暴露的信息建立静态库项目文件;
根据预置模拟器对静态库项目文件进行编译,生成静态库项目文件的.a文件;
在生成静态库项目文件的.a文件时,读取SDK中的.a文件;
根据静态库项目文件的.a文件和SDK中的.a文件,生成新的.a文件并替换SDK中的.a文件。
进一步地,处理器1001可以调用存储器1005中存储的真机SDK兼容模拟器debug程序,还执行以下操作:
在检测到SDK暴露的SDK名称和头代码文件时,获取SDK暴露的SDK名称和头代码文件;
当获取到SDK名称时,建立目标文件夹并命名;
当获取到所述头代码文件时,复制所述头代码文件并将复制的所述头代码文件存入所述目标文件夹中,建立静态库项目文件。
进一步地,处理器1001可以调用存储器1005中存储的真机SDK兼容模拟器debug程序,还执行以下操作:
当检测到静态库项目文件中的头代码文件时,启动预置模拟器;
在启动所述预置模拟器时,通过预置模拟器对头代码文件进行编写,生成静态库项目文件的.a文件。
进一步地,处理器1001可以调用存储器1005中存储的真机SDK兼容模拟器debug程序,还执行以下操作:
在启动预置模拟器时,读取头代码文件中的函数名称或函数参数;
当读取到头代码文件中的函数名称或函数参数时,通过所述预置模拟器将所述函数名称或函数参数编写成目标程序,获取所述目标程序;
在获取到目标程序时,将目标程序和所述头代码文件进行编译生成二进制格式的静态库项目文件的.a文件。
进一步地,处理器1001可以调用存储器1005中存储的真机SDK兼容模拟器debug程序,还执行以下操作:
当生成静态库项目文件的.a文件时,搜索所述SDK的.a文件;
在搜索到SDK的.a文件时,读取SDK的.a文件。
进一步地,处理器1001可以调用存储器1005中存储的真机SDK兼容模拟器debug程序,还执行以下操作:
当获取到静态库项目文件的.a文件和SDK中的.a文件时,获取预置lipo命令;
根据预置lipo命令,将静态库项目文件的.a文件和SDK中的.a文件进行合并生成新的.a文件;
在获取到新的.a文件时,替换SDK中的.a文件。
进一步地,处理器1001可以调用存储器1005中存储的真机SDK兼容模拟器debug程序,还执行以下操作:
终端在接收到用户的操作指令时,解压预存的SDK;
当解压SDK时,检测SDK暴露的信息。
参照图2,本发明为真机SDK兼容模拟器debug的方法的第一实施例,所述真机SDK兼容模拟器debug的方法包括:
步骤S10,在检测到SDK暴露的信息时,获取SDK暴露的信息建立静态库项目文件;
终端在检测到SDK暴露的信息时,获取SDK暴露的信息并建立一个SDK的静态库项目文件,在大多数应用中,有一些公共代码是需要反复使用,就把这些代码编译为“库”文件在链接步骤中,连接器将从库文件取得所需的代码,复制到生成的可执行文件中,将这种库称为静态库,其特点是可执行文件中包含了库代码的一份完整拷贝。SDK暴露的信息的包括SDK的名称、类名称以及头代码文件等。当终端获取到SDK的名称时,获取预置的建立指令,根据SDK的名称,建立一个文件夹并以SDK的名称命名。当检测到SDK暴露出来的类信息,根据类的信息在该文件夹中建立类信息相同的文件夹。当类信息为类名称时,根据类的名称,在该文件夹中建立类名称相同的文件夹。当类信息为类参数信息时,根据类参数信息,修改该文件夹类文件参数;当终端检测SDK中暴露的头代码文件时,复制SDK中的头代码文件并将头代码文件中的头代码复制到类文件夹中建立静态库项目文件。
步骤S20,根据预置模拟器对所述静态库项目文件进行编译,生成静态库项目文件的.a文件;
当终端检测到静态库项目文件中的头代码文件时,终端启动预置的模拟器。终端中有多个不同型号的模拟器,用户可以在终端上对不同型号的模拟器进行设置。当终端启动预置模拟器时,模拟器中的编译程序对头代码文件进行编译,生成头代码文件对应的目标程序,即实现文件。
步骤S30,在生成静态库项目文件的.a文件时,读取SDK中的.a文件;
当终端在生成静态库项目文件的.a文件时,对SDK进行检测。当终端检测到SDK中的.a文件时,读取SDK中的.a文件。例如,当终端生成静态库项目文件的.a文件时,获取到预置的检测指令,检测指令中包含.a文件的名称信息。当终端获取到.a文件的名称时,根据.a文件的名称在SDK中查找,或者,检测指令中包含了.a文件的参数信息,终端根据.a文件的参数信息在SDK中进行搜索。
步骤S40,根据静态库项目文件的.a文件和SDK中的.a文件,生成新的.a文件并替换SDK中的.a文件。
当终端获取静态库项目文件的.a文件和SDK中的.a文件时,获取到预置的合并替换指令,将获取到的静态库项目文件的.a文件和SDK中的.a文件进行合并生成一个新的.a文件,并将新的.a文件替换SDK中的.a文件。
在本实施例中,终端检测到SDK暴露的信息建立静态库项目文件,在建立静态库项目文件时,终端根据预置模拟器对静态库项目文件进行编译生成静态库项目文件的.a文件。在检测到SDK中的.a文件时,读取SDK中的.a文件,当获取到静态库项目文件的.a文件和SDK中的.a文件时,将静态库项目文件的.a文件和SDK中的.a文件进行合并替换SDK中的.a文件,在没有SDK源代码的情况下,通过真机的SDK建立一个静态库项目,并根据在不同型号模拟器的编译环境下对静态库项目进行编译,获取静态库项目不同型号的.a文件。
进一步的,参照图3,图3为本发明真机SDK兼容模拟器debug的方法第二实施例,基于上述图2所示的实施例,步骤S10包括:
步骤S11,在检测到SDK暴露的SDK名称和头文件代码时,获取SDK暴露的SDK名称和头代码文件;
步骤S12,当获取到SDK名称时,创建目标文件夹并命名;
步骤S13,当获取到头代码文件时,复制头代码文件并将复制的头代码文件存入目标文件夹中,建立静态库项目文件。
终端在检测SDK的过程中,检测SDK暴露的信息。当SDK暴露的信息的SDK的名称和头代码文件时,终端获取到SDK的名称和头代码文件。终端获取到SDK的名称时,获取预置的建立指令,根据SDK的名称,建立一个目标文件夹并以SDK的名称命名。当终端检测SDK中暴露的头代码文件时,复制SDK中的头代码文件并将头代码文件中的头代码该目标文件中,建立静态库项目文件。头代码文件的文件后缀名一般带有.h,当终端检测到SDK文件中暴露出的文件名称中带有.h文件时,获取.h文件中的头代码文件。
在本实施例中,终端在检测到SDK暴露的名称和头代码文件时,获取加检测到的SDK名称和SDK头代码文件。根据获取到SDK名称,创建目标文件夹并以SDK名称命名,当获取到的SDK头代码文件,复制SDK中的头代码文件并将头代码文件中的头代码复制到该目标文件夹中,建立静态库项目文件,在没有SDK源代码的情况下,通过真机的SDK建立一个静态库项目文件。
参照图4,图4为本发明真机SDK兼容模拟器debug的方法第三实施例,基于上述图2所示的实施例,步骤S20包括:
步骤S21,当检测到静态库项目文件中的头代码文件时,启动预置模拟器;
步骤S22,在启动所述预置模拟器时,通过预置模拟器对头代码文件进行编写,生成静态库项目文件的.a文件。
当终端检测到静态库项目文件中的头代码文件时,终端启动预置的模拟器。终端中有多个不同型号的模拟器,用户可以在终端上对不同型号的模拟器进行设置。当终端启动预置模拟器时,模拟器中的编译程序对头代码文件进行编写,生成头代码文件对应的目标程序,即实现文件。编译程序为词法分析程序,终端在执行词法分析程序对头代码文件进行编码,是对头代码文件中由函数字符组成的函数代码进行处理,从左至右逐个字符地对头代码中的函数进行扫描,产生一个个的函数单词符号,把作为字符串的头代码改造成为函数单词符号串的目标程序,再将目标程序和头代码文件进行编写,生成静态库项目文件的.a文件。
在本实施例中,终端在获取到静态库文件中的头代码文件时,终端启动预置的模拟器。当终端启动预置模拟器时,通过模拟器中的编译程序对头代码文件进行编写,生成头代码文件的目标程序,再将目标程序与头代码文件进行编译生成静态库项目文件的.a文件。在本没有.a文件的源代码情况下,通过预置模拟器对静态库项目文件中的头代码文件进行编译,生成模拟器环境的.a文件。
参照图5,图5为本发明4中步骤S22的细化流程图,步骤S22包括:
步骤S221,在启动预置模拟器时,读取头代码文件中的函数名称或函数参数;
步骤S222,当读取到头代码文件中的函数名称或函数参数时,通过所述预置模拟器将所述函数名称或函数参数编写成目标程序,获取所述目标程序;
步骤S223,在获取到目标程序时,将目标程序和头代码文件进行编译生成二进制格式的静态库项目文件的.a文件。
终端在启动预置模拟器时,获取头代码文件中的代码函数名称或函数参数,模拟器中的编译程序通过头代码文件中的函数信息或参数信息进行编写,生成头代码文件的目标程序。目标程序为头代码文件对应的实现代码。具体为头代码文件中的函数单词符号经编译程序分析,一般产生二元式:函数单词种别;函数单词自身的值。函数单词种别通常用整数编码,如果一个种别只含一个函数单词符号,那么对这个函数单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个函数单词符号,那么,对于它的每个函数单词符号,除了给出种别编码以外,还应给出自身的值。编译程序的语法分析器以函数单词符号作为输入,分析函数单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入函数符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现中间代码,即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。有两类优化:一类是对语法分析后的中间代码进行优化,它不依赖于具体的计算机;另一类是在生成目标代码时进行的,它在很大程度上依赖于具体的计算机。对于前一类优化,根据它所涉及的程序范围可分为局部优化、循环优化和全局优化三个不同的级别。目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。目标代码有三种形式:
①可以立即执行的机器语言代码,所有地址都重定位;
②待装配的机器语言模块,当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码;
③汇编语言代码,须经过汇编程序汇编后,成为可执行的机器语言代码。
目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。终端根据模拟器中编译程序对头代码文件中的函数名称或函数参数进行编写,生成头代码文件对应的实现文件。终端在获取到实现文件时,将实现文件和头代码文件进行编写,生成一个模拟器编译环境的静态库项目文件的.a文件。
在本实施例中,终端在启动预置模拟器时,获取头代码文件中的函数名称或函数参数。终端根据预置模拟器中编译程序对头代码文件中的函数名称或函数参数进行编写,生成头代码文件对应的目标程序,当终端将目标程序和头代码文件进行编译,生成模拟器编译环境的静态库项目文件的.a文件。在本没有.a文件的源代码情况下,通过预置模拟器对静态库项目文件中的头代码文件进行编译,生成模拟器环境的.a文件。
参照图6,图6为本发明真机SDK兼容模拟器debug的方法第四实施例,基于上述图2所示的实施例,步骤S30包括:
步骤S31,当生成静态库项目文件的.a文件时,搜索所述SDK的.a文件;
步骤S31,当搜索到SDK的.a文件时,读取SDK的.a文件。
当终端在生成静态库项目文件的.a文件时,对SDK进行搜索。当终端搜索到SDK中的.a文件时,读取SDK中的.a文件。例如,当终端生成静态库项目文件的.a文件时,获取到预置的检测指令,检测指令中包含.a文件的名称信息。当终端获取到.a文件的名称时,根据.a文件的名称在SDK中查找,或者,检测指令中包含了.a文件的参数信息,终端根据.a文件的参数信息在SDK中进行搜索。
在本实施例中,当终端在生成静态库项目文件的.a文件,对SDK进行搜索。当终端搜索到SDK中的.a文件时,读取SDK中的.a文件。通过对SDK的搜索,快速的获读取到SDK中的.a文件。
参照图7,图7为本发明真机SDK兼容模拟器debug的方法第五实施例,基于上述图2所示的实施例,步骤S40包括:
步骤S41,当获取到静态库项目文件的.a文件和SDK中的.a文件时,获取预置lipo命令;
步骤S42,根据预置lipo命令,将述静态库项目文件的.a文件和SDK中的.a文件进行合并生成新的.a文件;
步骤S43,在获取到新的.a文件时,替换SDK中的.a文件。
终端在获取到静态库项目文件的.a文件和SDK中的.a文件时,获取预置的lipo命令。在获取到预置lipo命令时,将获取到的两份不同编译环境下生成的.a文件进行合并,生成新的.a文件,将生成新的.a文件替换SDK中的.a文件,生成一个兼容真机和模拟器编译环境的SDK。在终端的mac系统上面合并.a文件是通过lipo命令进行的,lipo命令是管理FatFile的工具,可以查看cpu架构,提取特定架构,整合和拆分库文件,具体做法是:
1、打开终端的mac(电脑自带命令行工具);
2、通过cd命令行,跳转到到待合并的.a文件夹中,文件夹中需要准备好待合并的.a文件;
3、通过lipo-createA.a B.a-output C.a命令将A于B合并成C。
在本实施例中,终端在获取到获取到静态库项目文件的.a文件和SDK中的.a文件时,获取预置的lipo命令。在获取到预置lipo命令时,将获取到的两份不同编译环境下生成的.a文件进行合并,生成新的.a文件,将生成新的.a文件替换SDK中的.a文件,生成一个兼容真机和模拟器编译环境的SDK。
参照图8,图8为本发明真机SDK兼容模拟器debug的方法第六实施例,基于上述图2所示的实施例,步骤S10之前,还包括:
步骤S50,终端在接收到用户的操作指令时,根据所述操作指令解压预存的SDK;
步骤S60,当解压所述SDK时,检测所述SDK暴露的信息。
终端在接收到用户的操作指令时,解压预存的SDK。当终端在解压预存的SDK时,检测SDK在解压过程中暴露的信息,SDK暴露的信息包括SDK名称、类名称、接口、头代码等等信息。
在本实施例中,终端在接收到用户的操作指令时,解压预存的SDK。当终端在解压预存的SDK时,检测SDK在解压过程中暴露的信息,通过解压SDK来检测SDK暴露的信息。
此外,本发明实施例还提出一种计算机设备,计算机可读存储介质上存储有真机SDK兼容模拟器debug程序,真机SDK兼容模拟器debug程序被处理器执行时实现如上实施例的真机SDK兼容模拟器debug的方法的步骤。
此外,本发明实施例还提出一种计算机可读存储介质在于,计算机可读存储介质上存储有真机SDK兼容模拟器debug程序,真机SDK兼容模拟器debug程序被处理器执行时实现如上实施例的真机SDK兼容模拟器debug的方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (10)

1.一种真机SDK兼容模拟器debug的方法,其特征在于,所述真机SDK兼容模拟器debug的方法包括:
在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件;
根据预置模拟器对所述静态库项目文件进行编译,生成所述静态库项目文件的.a文件;
在生成所述静态库项目文件的.a文件时,读取所述SDK中的.a文件;
根据所述静态库项目文件的.a文件和所述SDK中的.a文件,生成新的.a文件并替换所述SDK中的.a文件。
2.如权利要求1所述的真机SDK兼容模拟器debug的方法,其特征在于,所述在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件,包括:
在检测到SDK暴露的SDK名称和头代码文件时,获取所述SDK暴露的SDK名称和头代码文件;
当获取到所述SDK名称时,创建目标文件夹并命名;
当获取到所述头代码文件时,复制所述头代码文件并将复制的所述头代码文件存入所述目标文件夹中,建立静态库项目文件。
3.如权利要求2所述的真机SDK兼容模拟器debug的方法,其特征在于,所述根据预置模拟器对所述静态库项目文件进行编译,生成所述静态库项目文件的.a文件,包括:
当检测到所述静态库项目文件中的头代码文件时,启动预置模拟器;
在启动所述预置模拟器时,通过所述预置模拟器对所述头代码文件进行编写,生成所述静态库项目文件的.a文件。
4.如权利要求3所述的真机SDK兼容模拟器debug的方法,其特征在于,所述在启动所述预置模拟器时,通过所述预置模拟器对所述头代码文件进行编写,生成所述静态库项目文件的.a文件,包括:
在启动所述预置模拟器时,读取所述头代码文件中的函数名称或函数参数;
当读取到所述头代码文件中的函数名称或函数参数时,通过所述预置模拟器将所述函数名称或函数参数编写成目标程序,获取所述目标程序;
在获取到所述目标程序时,将所述目标程序和所述头代码文件进行编译生成二进制格式的所述静态库项目文件的.a文件。
5.如权利要求1所述的真机SDK兼容模拟器debug的方法,其特征在于,所述在生成所述静态库项目文件的.a文件时,读取所述SDK中的.a文件包括:
当生成所述静态库项目文件的.a文件时,搜索所述SDK的.a文件;
在搜索到所述SDK的.a文件时,读取所述SDK的.a文件。
6.如权利要求1-5中任意一项所述的真机SDK兼容模拟器debug的方法,其特征在于,所述根据所述静态库项目文件的.a文件和所述SDK中的.a文件,生成新的.a文件并替换所述SDK中的.a文件,包括:
当获取到所述静态库项目文件的.a文件和所述SDK中的.a文件时,获取预置lipo命令;
根据所述预置lipo命令,将所述静态库项目文件的.a文件和所述SDK中的.a文件进行合并生成新的.a文件;
在获取到所述新的.a文件时,替换所述SDK中的.a文件。
7.如权利要求1所述的真机SDK兼容模拟器debug的方法,其特征在于,所述在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件之前,还包括;
终端在接收到用户的操作指令时,解压预存的SDK;
当解压所述SDK时,检测所述SDK暴露的信息。
8.一种真机SDK兼容模拟器debug的装置,其特征在于,所述真机SDK兼容模拟器debug的装置包括:
获取建立单元,用户在检测到SDK暴露的信息时,获取所述SDK暴露的信息建立静态库项目文件
生成单元,用于根据预置模拟器对所述静态库项目文件进行编译,生成所述静态库项目文件的.a文件;
读取单元,用于在生成所述静态库项目文件的.a文件时,读取所述SDK中的.a文件;
生成替换单元,用于根据所述静态库项目文件的.a文件和所述SDK中的.a文件,生成新的.a文件并替换所述SDK中的.a文件。
9.一种计算机设备,其特征在于,所述计算机设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的真机SDK兼容模拟器debug程序,所述真机SDK兼容模拟器debug程序被所述处理器执行时实现如权利要求1至7中任一项所述真机SDK兼容模拟器debug的方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有真机SDK兼容模拟器debug程序,所述真机SDK兼容模拟器debug程序被处理器执行时实现如权利要求1至7中任一项所述的真机SDK兼容模拟器debug的方法的步骤。
CN201910482350.9A 2019-06-04 2019-06-04 真机SDK兼容模拟器debug的方法、装置、设备及存储介质 Pending CN110297768A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910482350.9A CN110297768A (zh) 2019-06-04 2019-06-04 真机SDK兼容模拟器debug的方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910482350.9A CN110297768A (zh) 2019-06-04 2019-06-04 真机SDK兼容模拟器debug的方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN110297768A true CN110297768A (zh) 2019-10-01

Family

ID=68027555

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910482350.9A Pending CN110297768A (zh) 2019-06-04 2019-06-04 真机SDK兼容模拟器debug的方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN110297768A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112596734A (zh) * 2020-12-15 2021-04-02 五八同城信息技术有限公司 静态库生成方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108021415A (zh) * 2017-12-30 2018-05-11 有米科技股份有限公司 自动打包方法、装置、计算机设备及存储介质

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108021415A (zh) * 2017-12-30 2018-05-11 有米科技股份有限公司 自动打包方法、装置、计算机设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
FRANCIS01: "iOS SDK开发之 .a静态库", Retrieved from the Internet <URL:https://www.cnblogs.com/francisblogs/p/8329332.html> *
汉斯哈哈哈: "iOS 静态库开发", Retrieved from the Internet <URL:https://www.51cto.com/article/490013.html> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112596734A (zh) * 2020-12-15 2021-04-02 五八同城信息技术有限公司 静态库生成方法及装置
CN112596734B (zh) * 2020-12-15 2024-06-07 五八同城信息技术有限公司 静态库生成方法及装置

Similar Documents

Publication Publication Date Title
Karsai et al. Design guidelines for domain specific languages
US8762962B2 (en) Methods and apparatus for automatic translation of a computer program language code
JP5350428B2 (ja) 自動プログラム生成装置、方法及びコンピュータプログラム
CN102270128B (zh) 库一致性检查器
CN110287096A (zh) H5前端页面测试方法、电子装置及计算机可读存储介质
CN110737431B (zh) 软件开发方法、开发平台、终端设备及存储介质
US20190087160A1 (en) System and method for creating domain specific language
CN106776266A (zh) 测试工具的配置方法及终端设备
CN109491904B (zh) 一种SparkSQL应用程序的自动化测试方法和装置
CN114398282A (zh) 测试脚本的生成方法、装置、设备及存储介质
Shaughnessy Ruby Under a Microscope: An Illustrated Guide to Ruby Internals
CN110297768A (zh) 真机SDK兼容模拟器debug的方法、装置、设备及存储介质
CN113221506A (zh) 一种讲义排版的方法、装置、电子设备及存储介质
Ichii et al. A rule-based automated approach for extracting models from source code
Murawski et al. A contextual equivalence checker for IMJ
CN113641594B (zh) 跨端自动化测试方法以及相关装置
CN116976252A (zh) 一种回归仿真方法、装置、设备、介质及程序产品
CN113822002B (zh) 数据处理方法、装置、计算机设备及存储介质
CN112597037B (zh) 一种Java和Python结合的自动化脚本开发方法和装置
CN107577476A (zh) 一种基于模块划分的安卓系统源码差异性分析方法、服务器及介质
KR100846203B1 (ko) 모바일 어플리케이션의 생성 방법 및 이를 구현하기 위한프로그램을 기록한 기록매체
Lopez-Rojas OMCCp: A MetaModelica Based Parser Generator Applied to Modelica
CN112596737A (zh) 一种函数调用关系的扫描方法、系统、设备及存储介质
CN112965909A (zh) 测试数据、测试用例生成方法及系统、存储介质
McNamara Rust in Action

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