CN111831292A - 生成安装包的方法、装置、存储介质和电子设备 - Google Patents
生成安装包的方法、装置、存储介质和电子设备 Download PDFInfo
- Publication number
- CN111831292A CN111831292A CN202010623900.7A CN202010623900A CN111831292A CN 111831292 A CN111831292 A CN 111831292A CN 202010623900 A CN202010623900 A CN 202010623900A CN 111831292 A CN111831292 A CN 111831292A
- Authority
- CN
- China
- Prior art keywords
- class
- target
- identifier
- file
- association relationship
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本公开是关于一种生成安装包的方法、装置、存储介质和电子设备,该方法包括:在对目标应用项目进行打包的处理过程中,检测该处理过程中生成的目标文档中记录的每个布局文件的文件标识和每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,该关联关系信息用于表征文件标识与类标识之间的关联关系;检测该关联关系信息中的所有类标识是否都包含于类集合中,该类集合包括该目标应用项目中包含的所有控件类的类标识;在确定该所有类标识都包含于该类集合的情况下,继续执行该处理过程,以生成该目标应用项目的安装包。能够在生成安装包的过程中对布局文件引用的控件类进行检测,避免控件类引用异常的情况,提高生成的安装包的可靠性。
Description
技术领域
本公开涉及软件开发领域,尤其涉及一种生成安装包的方法、装置、存储介质和电子设备。
背景技术
对软件应用项目的代码进行编译和打包并生成安装包是基于Android(安卓)、IOS或Windows平台的软件开发中的一个重要环节。在这些软件开发过程中,通常需要引入标记语言进行软件应用的交互界面的布局设计。以基于Android平台的软件开发为例,应用项目内通常以XML(Extensible Markup Language,可扩展标记语言)文件等对软件应用界面的布局进行设计。XML布局文件内包含一个或多个控件类,这些控件类用于实现软件应用界面内包含的功能。开发过程所需的控件类包含Android平台提供的原生控件,以及开发者基于功能需求自定义的控件类,这些控件类名均作为标签被写在XML布局文件内。
发明内容
为克服相关技术中存在的问题,本公开提供一种生成安装包的方法、装置、存储介质和电子设备。
根据本公开实施例的第一方面,提供一种生成安装包的方法,所述方法包括:
在对目标应用项目进行打包的处理过程中,检测所述处理过程中生成的目标文档中记录的每个布局文件的文件标识和所述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,所述关联关系信息用于表征所述文件标识与所述类标识之间的关联关系;
检测所述关联关系信息中的所有类标识是否都包含于类集合中,所述类集合包括所述目标应用项目中包含的所有控件类的类标识;
在确定所述所有类标识都包含于所述类集合的情况下,继续执行所述处理过程,以生成所述目标应用项目的安装包。
可选的,在所述检测所述关联关系信息中的所有类标识是否都包含于类集合中之后,所述方法还包括:
在确定所述关联关系信息中存在不包含于所述类集合的目标类标识的情况下,停止所述处理过程并输出提示信息;其中,所述提示信息包括:所述关联关系信息中的每个所述目标类标识,以及每个目标布局文件的文件标识,所述目标布局文件所引用的目标控件类的类标识为所述目标类标识。
可选的,所述在对目标应用项目进行打包的处理过程中,检测所述处理过程中生成的目标文档中记录的每个布局文件的文件标识和所述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,包括:
通过预设的打包工具执行所述处理过程,直至生成所述目标文档;
通过预设的任务插件读取所述目标文档,以确定所述目标文档中所述每个布局文件的文件标识、所述目标控件类的类标识、以及所述每个布局文件与所述目标控件类之间的引用关系;
根据所述引用关系,以键值对的形式储存所述每个布局文件的文件标识与所述目标控件类的类标识,作为所述关联关系信息。
可选的,所述检测所述关联关系信息中的所有类标识是否都包含于类集合中,包括:
通过预设的字节码操作工具对所述目标应用项目进行搜索,以确定所述所有控件类;
将所述所有控件类的类标识缓存至目标容器,以获取所述类集合;
将所述关联关系信息中的每个类标识与所述类集合进行匹配,以确定所述关联关系信息中的所有类标识是否都包含于所述类集合中。
根据本公开实施例的第二方面,提供一种生成安装包的装置,所述装置包括:
信息确定模块,被配置为在对目标应用项目进行打包的处理过程中,检测所述处理过程中生成的目标文档中记录的每个布局文件的文件标识和所述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,所述关联关系信息用于表征所述文件标识与所述类标识之间的关联关系;
标识检测模块,被配置为检测所述关联关系信息中的所有类标识是否都包含于类集合中,所述类集合包括所述目标应用项目中包含的所有控件类的类标识;
安装包生成模块,被配置为在确定所述所有类标识都包含于所述类集合的情况下,继续执行所述处理过程,以生成所述目标应用项目的安装包。
可选的,所述装置还包括:
提示输出模块,被配置为在确定所述关联关系信息中存在不包含于所述类集合的目标类标识的情况下,停止所述处理过程并输出提示信息;其中,所述提示信息包括:所述关联关系信息中的每个所述目标类标识,以及每个目标布局文件的文件标识,所述目标布局文件所引用的目标控件类的类标识为所述目标类标识。
可选的,所述信息确定模块,被配置为:
通过预设的打包工具执行所述处理过程,直至生成所述目标文档;
通过预设的任务插件读取所述目标文档,以确定所述目标文档中所述每个布局文件的文件标识、所述目标控件类的类标识、以及所述每个布局文件与所述目标控件类之间的引用关系;
根据所述引用关系,以键值对的形式储存所述每个布局文件的文件标识与所述目标控件类的类标识,作为所述关联关系信息。
可选的,所述标识检测模块,被配置为:
通过预设的字节码操作工具对所述目标应用项目进行搜索,以确定所述所有控件类;
将所述所有控件类的类标识缓存至目标容器,以获取所述类集合;
将所述关联关系信息中的每个类标识与所述类集合进行匹配,以确定所述关联关系信息中的所有类标识是否都包含于所述类集合中。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开第一方面所提供的生成安装包的方法的步骤。
根据本公开实施例的第四方面,提供一种移动终端,包括:本公开第二方面所提供的生成安装包的装置。
本公开的实施例所提供的技术方案,能够在对目标应用项目进行打包的处理过程中,检测该处理过程中生成的目标文档中记录的每个布局文件的文件标识和上述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,该关联关系信息用于表征该文件标识与该类标识之间的关联关系;检测该关联关系信息中的所有类标识是否都包含于类集合中,该类集合包括该目标应用项目中包含的所有控件类的类标识;在确定该所有类标识都包含于该类集合的情况下,继续执行该处理过程,以生成该目标应用项目的安装包。能够在生成安装包的过程中对布局文件引用的控件类进行检测,避免布局文件对控件类引用异常的情况,提高生成的安装包的可靠性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1是根据一示例性实施例示出的一种生成安装包的方法的流程图;
图2是根据图1示出的另一种生成安装包的方法的流程图;
图3是根据图2示出的一种确定关联关系信息的方法的流程图;
图4是根据图2示出的一种检测类标识的方法的流程图;
图5是根据一示例性实施例示出的一种生成安装包的装置的框图;
图6是根据图5示出的另一种生成安装包的装置的框图;
图7是根据一示例性实施例示出的一种电子设备的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
在基于XML等标记语言进行软件应用开发的相关技术中,在自定义控件类的路径发生了改变,或者在XML布局文件中填写的控件类的标签有误的情况下,对软件应用项目的编译和打包依然可以进行,进而生成应用的APK(Android application package,Android应用程序包)安装包。但是,由于XML布局文件内的标签对应的控件类无法被识别和应用,导致上述构成中生成的安装包的可靠性较差。这种较差的可靠性体现在,终端系统在运行该安装包或者在安装包被安装完成后执行应用程序的某个功能时,无法通过XML布局文件中的标签识别和引用该功能对应的控件类,进而出现应用无法正常安装,或者应用运行过程中发生崩溃异常的情况。并且,出现控件类引用异常的应用一经发布后,很难在线上进行修复。
图1是根据一示例性实施例示出的一种生成安装包的方法的流程图,如图1所示,该方法包括以下步骤:
在步骤101中,在对目标应用项目进行打包的处理过程中,检测该处理过程中生成的目标文档中记录的每个布局文件的文件标识和该每个布局文件所引用的目标控件类的类标识,以获取关联关系信息。
其中,该关联关系信息用于表征该文件标识与该类标识之间的关联关系。
本公开实施例以该目标应用项目为基于Android平台的软件应用项目为例对上述的生成安装包的方法进行说明。具体地,该处理过程为通过Android平台提供的SDK(Software Development Kit,软件开发工具包)中的AAPT(Android Asset PackagingTool,安卓资源打包工具)和gradle(一种项目自动化构建开源工具)脚本对目标应用项目的Java代码进行打包并最终生成APK文件(及上述的安装包)的过程。APK是Android使用的应用程序包文件格式,APK文件内包含被编译的代码文件(.dex文件)、文件资源(resources)、原生资源文件(assets)、证书(certificates)和清单文件(manifest file)。该布局文件为XML文件,该目标控件类为XML文件所引用的Android平台提供的原生控件类或开发人员自定义的控件类,其具体的引用方式为将控件类的引用路径作为XML标签添加至XML文件中。该布局文件的文件标识可以为文件名,该目标控件类(以及下列的控件类)的类标识可以为包含控件类的类名的引用路径,例如,对于应用项“xxx”所需的类名为A的控件类,该控件类的类标识可以表示为com.xxx.A。
示例地,在上述AAPT的执行过程中,首先会对应用项目中的类文件和资源文件(包含XML布局文件)进行处理,并在目标应用项目的指定目录下生成一个名为aapt_rules.txt的文本文档。该aapt_rules.txt文档即为上述的目标文档,该目标文档中记录着所有XML文件的文件信息和所有在XML文件里声明的控件类的类信息。并且,由于该目标文档为Java运行时文件,因此该目标文档中还包括执行Java运行时keep操作所需的执行信息等其他信息。在该步骤101中,需要根据该目标文档提供的所有信息确定布局文件和其引用的目标控件类之间的引用关系,并生成用于记录这种引用关系的关联关系信息。
在步骤102中,检测该关联关系信息中的所有类标识是否都包含于类集合中。
其中,该类集合包括该目标应用项目中包含的所有控件类的类标识。
在步骤103中,在确定上述所有类标识都包含于该类集合的情况下,继续执行该处理过程,以生成该目标应用项目的安装包。
示例地,该类集合为对该目标应用项目的所有Java文件进行搜索而生成的类标识的集合。若关联关系信息中记录的某个类标识不存在于这个类集合中,则说明该类标识(实际为控件类A的引用路径)发生了改变或者布局文件内的类标识标签有误。若确定关联关系信息中记录的所有类标识都存在于这个类集合中,则确定布局文件中声明的目标控件类能够被正常引用,进而在该步骤103中继续执行该处理过程。
在本公开一实施例中,该处理过程可以理解为包含另两个部分,即AAPT的执行过程和gradle脚本的执行过程。该gradle脚本的执行过程包括:通过task控件将该目标应用项目的Java代码文件编译为.class文件再转换成APK所包含的.dex文件的过程。需要说明的是,在AAPT的执行过程结束后,可以获得该目标文档,而在步骤103中确定上述所有类标识都包含于该类集合之后,可以继续执行gradle脚本的执行过程,进而生成该目标应用项目的APK文件。
综上所述,本公开的实施例所提供的技术方案,能够在对目标应用项目进行打包的处理过程中,检测该处理过程中生成的目标文档中记录的每个布局文件的文件标识和上述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,该关联关系信息用于表征该文件标识与该类标识之间的关联关系;检测该关联关系信息中的所有类标识是否都包含于类集合中,该类集合包括该目标应用项目中包含的所有控件类的类标识;在确定该所有类标识都包含于该类集合的情况下,继续执行该处理过程,以生成该目标应用项目的安装包。能够在生成安装包的过程中对布局文件引用的控件类进行检测,避免控件类引用异常的情况,提高生成的安装包的可靠性。
图2是根据图1示出的另一种生成安装包的方法的流程图,如图2所示,在上述步骤102之后,上述方法还包括:
在步骤104中,在确定该关联关系信息中存在不包含于该类集合的目标类标识的情况下,停止该处理过程并输出提示信息。
其中,该提示信息包括:该关联关系信息中的每个该目标类标识,以及每个目标布局文件的文件标识,该目标布局文件所引用的目标控件类的类标识为该目标类标识。
示例地,若在上述步骤102中存在不包含于该类集合的目标类标识,则需要向开发人员输出用于提示该布局文件发生了引用异常的情况的提示信息。该引用异常的情况可以包括:控件类的引用路径发生了改变导致的无法根据布局文件中声明的路径查询到的控件类的异常情况,以及,布局文件内的类标识标签本身书写错误导致的找不到控件类的异常情况。该提示信息需要指示出打包过程中已出现上述异常情况,并且,优选地,该提示信息需要指示出哪些控件类和哪些布局文件出现了上述异常情况。具体地,该步骤104可以包括:在确定该关联关系信息中存在不包含于该类集合的目标类标识的情况下,停止该目标应用项目的打包过程(即该处理过程)并获取该关联关系信息中的所有目标类标识;根据该关联关系信息查找出每个目标类标识对应的文件标识;以键值对的形式输出每个目标类标识及其对应的文件标识。如此,开发人员可以根据上述的提示信息对出现异常的布局文件和控件类进行调整。在接收到开发人员调整后的应用项目文件后,可以继续执行上述的步骤103,以生成该目标应用项目的APK文件。
图3是根据图2示出的一种确定关联关系信息的方法的流程图,如图3所示,该步骤101,包括:
在步骤1011中,通过预设的打包工具执行该处理过程,直至生成该目标文档。
示例地,由于下列的步骤1012和1013都已该目标文档为基础,因此,该步骤1011中采用的“直至该目标文档被生成”的表述,可以理解为上述的APPT的执行过程结束并获得该目标文档。
在步骤1012中,通过预设的任务插件读取该目标文档,以确定该目标文档中上述每个布局文件的文件标识、该目标控件类的类标识、以及上述每个布局文件与该目标控件类之间的引用关系。
在步骤1013中,根据该引用关系,以键值对的形式储存上述每个布局文件的文件标识与该目标控件类的类标识,作为该关联关系信息。
示例地,该任务插件为预先编写的具备字符串匹配功能的task插件,该task插件通过字符串匹配去除该目标文档中的一些干扰信息(例如,上述的keep操作所需的执行信息等其他信息),如此,就可以提取出每个布局文件的文件标识和目标控件类的类标识。之后,根据布局文件和目标控件类的引用关系,以键值对的形式储存这些文件标识和类标识,作为该关联关系信息。具体地,上述的键值对形式可以表示为(key,value);其中,key为键,用于保存目标控件类的类标识;value为值,用于保存布局文件的文件标识。需要说明的是,一个布局文件可能会引用多个目标控件类,在这种情况下,此处需要将每个目标控件类与该布局文件的关系都储存为一个键值对。例如,文件标识为A的布局文件引用了类标识为a、b和c的三个目标控件类。则在该步骤1013之后,在该关联关系信息中,该文件标识A和类标识a、b和c之间的引用关系被储存为(a,A)、(b,A)和(c,A)。
图4是根据图2示出的一种检测类标识的方法的流程图,如图4所示,该步骤102,包括:
在步骤1021中,通过预设的字节码操作工具对该目标应用项目进行搜索,以确定上述所有控件类。
在步骤1022中,将上述所有控件类的类标识缓存至目标容器,以获取该类集合。
在步骤1023中,将该关联关系信息中的每个类标识与该类集合进行匹配,以确定该关联关系信息中的所有类标识是否都包含于该类集合中。
示例地,该字节码操作工具为Javassist类库,Javassist类库中包含一个classPool类。该classPool类可以读取应用项目内所有Java文件,并获取这些Java文件中所有控件类的类信息,进而将这些类信息中的类标识缓存到Javassist类库内部的容器(即该目标容器)中。在获取到上述的类集合后,该步骤1023中的匹配过程可以包括:将该关联关系信息中的每个键值对的key中记录的类标识与该类集合中的所有类标识进行对比和匹配。在对该关联关系信息中的每个键值对中的key进行一次遍历后,就可以确定该关联关系信息中的所有类标识是否都包含于该类集合中。
综上所述,本公开的实施例所提供的技术方案,能够在对目标应用项目进行打包的处理过程中,检测该处理过程中生成的目标文档中记录的每个布局文件的文件标识和上述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,该关联关系信息用于表征该文件标识与该类标识之间的关联关系;检测该关联关系信息中的所有类标识是否都包含于类集合中,该类集合包括该目标应用项目中包含的所有控件类的类标识;在确定该所有类标识都包含于该类集合的情况下,继续执行该处理过程,以生成该目标应用项目的安装包。能够在生成安装包的过程中对布局文件引用的控件类进行检测,避免控件类引用异常的情况,提高生成的安装包的可靠性。
图5是根据一示例性实施例示出的一种生成安装包的装置的框图,如图5所示,该装置500包括:
信息确定模块510,被配置为在对目标应用项目进行打包的处理过程中,检测所述处理过程中生成的目标文档中记录的每个布局文件的文件标识和所述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,所述关联关系信息用于表征所述文件标识与所述类标识之间的关联关系;
标识检测模块520,被配置为检测该关联关系信息中的所有类标识是否都包含于类集合中,该类集合包括该目标应用项目中包含的所有控件类的类标识;
安装包生成模块530,被配置为在确定上述所有类标识都包含于该类集合的情况下,继续执行该处理过程,以生成该目标应用项目的安装包。
图6是根据图5示出的另一种生成安装包的装置的框图,如图6所示,该装置500,还包括:
提示输出模块540,被配置为在确定该关联关系信息中存在不包含于该类集合的目标类标识的情况下,停止该处理过程并输出提示信息;其中,该提示信息包括:该关联关系信息中的每个该目标类标识,以及每个目标布局文件的文件标识,该目标布局文件所引用的目标控件类的类标识为该目标类标识。
可选的,该信息确定模块510,被配置为:
通过预设的打包工具执行该处理过程,直至生成该目标文档;
通过预设的任务插件读取该目标文档,以确定该目标文档中上述每个布局文件的文件标识、该目标控件类的类标识、以及上述每个布局文件与该目标控件类之间的引用关系;
根据该引用关系,以键值对的形式储存上述每个布局文件的文件标识与该目标控件类的类标识,作为该关联关系信息。
可选的,该标识检测模块520,被配置为:
通过预设的字节码操作工具对该目标应用项目进行搜索,以确定上述所有控件类;
将上述所有控件类的类标识缓存至目标容器,以获取该类集合;
将该关联关系信息中的每个类标识与该类集合进行匹配,以确定该关联关系信息中的所有类标识是否都包含于该类集合中。
综上所述,本公开的实施例所提供的技术方案,能够在对目标应用项目进行打包的处理过程中,检测该处理过程中生成的目标文档中记录的每个布局文件的文件标识和上述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,该关联关系信息用于表征该文件标识与该类标识之间的关联关系;检测该关联关系信息中的所有类标识是否都包含于类集合中,该类集合包括该目标应用项目中包含的所有控件类的类标识;在确定该所有类标识都包含于该类集合的情况下,继续执行该处理过程,以生成该目标应用项目的安装包。能够在生成安装包的过程中对布局文件引用的控件类进行检测,避免布局文件对控件类引用异常的情况,提高生成的安装包的可靠性。
图7是根据一示例性实施例示出的一种电子设备的框图。该电子设备700可以是,例如,移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图7,电子设备700可以包括以下一个或多个组件:处理组件702,存储器704,电力组件706,多媒体组件708,音频组件710,输入/输出(I/O)的接口712,传感器组件714,以及通信组件716。
处理组件702通常控制电子设备700的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理组件702可以包括一个或多个处理器720来执行指令,以完成上述的生成安装包的方法的全部或部分步骤。此外,处理组件702可以包括一个或多个模块,便于处理组件702和其他组件之间的交互。例如,处理组件702可以包括多媒体模块,以方便多媒体组件708和处理组件702之间的交互。
存储器704被配置为存储各种控件类型的数据以支持在电子设备700的操作。这些数据的示例包括用于在电子设备700上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器704可以由任何控件类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电力组件706为电子设备700的各种组件提供电力。电力组件706可以包括电源管理系统,一个或多个电源,及其他与为电子设备700生成、管理和分配电力相关联的组件。
多媒体组件708包括在所述电子设备700和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件708包括一个前置摄像头和/或后置摄像头。当电子设备700处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件710被配置为输出和/或输入音频信号。例如,音频组件710包括一个麦克风(MIC),当电子设备700处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器704或经由通信组件716发送。在一些实施例中,音频组件710还包括一个扬声器,用于输出音频信号。
I/O接口712为处理组件702和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件714包括一个或多个传感器,用于为电子设备700提供各个方面的状态评估。例如,传感器组件714可以检测到电子设备700的打开/关闭状态,组件的相对定位,例如所述组件为电子设备700的显示器和小键盘,传感器组件714还可以检测电子设备700或电子设备700一个组件的位置改变,用户与电子设备700接触的存在或不存在,电子设备700方位或加速/减速和电子设备700的温度变化。传感器组件714可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件714还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件714还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件716被配置为便于电子设备700和其他设备之间有线或无线方式的通信。电子设备700可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件716经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件716还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,电子设备700可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的生成安装包的方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器704,上述指令可由电子设备700的处理器720执行以完成上述的生成安装包的方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的生成安装包的方法的代码部分。
综上所述,本公开通过在对目标应用项目进行打包的处理过程中,根据该处理过程中生成的目标文档确定关联关系信息,该目标文档用于记录该目标应用项目中包含的每个布局文件以及上述每个布局文件所引用的目标控件类,该关联关系信息用于表征上述每个布局文件的文件标识与该目标控件类的类标识之间的关联关系;检测该关联关系信息中的所有类标识是否都包含于类集合中,该类集合包括该目标应用项目中包含的所有控件类的类标识;在确定上述所有类标识都包含于该类集合的情况下,继续执行该处理过程,以生成该目标应用项目的安装包。能够在生成安装包的过程中对布局文件引用的控件类进行检测,避免控件类引用异常的情况,提高生成的安装包的可靠性。
本领域技术人员在考虑说明书及实践本公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种生成安装包的方法,其特征在于,所述方法包括:
在对目标应用项目进行打包的处理过程中,检测所述处理过程中生成的目标文档中记录的每个布局文件的文件标识和所述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,所述关联关系信息用于表征所述文件标识与所述类标识之间的关联关系;
检测所述关联关系信息中的所有类标识是否都包含于类集合中,所述类集合包括所述目标应用项目中包含的所有控件类的类标识;
在确定所述所有类标识都包含于所述类集合的情况下,继续执行所述处理过程,以生成所述目标应用项目的安装包。
2.根据权利要求1所述的方法,其特征在于,在所述检测所述关联关系信息中的所有类标识是否都包含于类集合中之后,所述方法还包括:
在确定所述关联关系信息中存在不包含于所述类集合的目标类标识的情况下,停止所述处理过程并输出提示信息;其中,所述提示信息包括:所述关联关系信息中的每个所述目标类标识,以及每个目标布局文件的文件标识,所述目标布局文件所引用的目标控件类的类标识为所述目标类标识。
3.根据权利要求1所述的方法,其特征在于,所述在对目标应用项目进行打包的处理过程中,检测所述处理过程中生成的目标文档中记录的每个布局文件的文件标识和所述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,包括:
通过预设的打包工具执行所述处理过程,直至生成目标文档;
通过预设的任务插件读取所述目标文档,以确定所述目标文档中所述每个布局文件的文件标识、所述目标控件类的类标识、以及所述每个布局文件与所述目标控件类之间的引用关系;
根据所述引用关系,以键值对的形式储存所述每个布局文件的文件标识与所述目标控件类的类标识,作为所述关联关系信息。
4.根据权利要求1所述的方法,其特征在于,所述检测所述关联关系信息中的所有类标识是否都包含于类集合中,包括:
通过预设的字节码操作工具对所述目标应用项目进行搜索,以确定所述所有控件类;
将所述所有控件类的类标识缓存至目标容器,以获取所述类集合;
将所述关联关系信息中的每个类标识与所述类集合进行匹配,以确定所述关联关系信息中的所有类标识是否都包含于所述类集合中。
5.一种生成安装包的装置,其特征在于,所述装置包括:
信息确定模块,被配置为在对目标应用项目进行打包的处理过程中,检测所述处理过程中生成的目标文档中记录的每个布局文件的文件标识和所述每个布局文件所引用的目标控件类的类标识,以获取关联关系信息,所述关联关系信息用于表征所述文件标识与所述类标识之间的关联关系;
标识检测模块,被配置为检测所述关联关系信息中的所有类标识是否都包含于类集合中,所述类集合包括所述目标应用项目中包含的所有控件类的类标识;
安装包生成模块,被配置为在确定所述所有类标识都包含于所述类集合的情况下,继续执行所述处理过程,以生成所述目标应用项目的安装包。
6.根据权利要求5所述的装置,其特征在于,所述装置还包括:
提示输出模块,被配置为在确定所述关联关系信息中存在不包含于所述类集合的目标类标识的情况下,停止所述处理过程并输出提示信息;其中,所述提示信息包括:所述关联关系信息中的每个所述目标类标识,以及每个目标布局文件的文件标识,所述目标布局文件所引用的目标控件类的类标识为所述目标类标识。
7.根据权利要求5所述的装置,其特征在于,所述信息确定模块,被配置为:
通过预设的打包工具执行所述处理过程,直至生成所述目标文档;
通过预设的任务插件读取所述目标文档,以确定所述目标文档中所述每个布局文件的文件标识、所述目标控件类的类标识、以及所述每个布局文件与所述目标控件类之间的引用关系;
根据所述引用关系,以键值对的形式储存所述每个布局文件的文件标识与所述目标控件类的类标识,作为所述关联关系信息。
8.根据权利要求5所述的装置,其特征在于,所述标识检测模块,被配置为:
通过预设的字节码操作工具对所述目标应用项目进行搜索,以确定所述所有控件类;
将所述所有控件类的类标识缓存至目标容器,以获取所述类集合;
将所述关联关系信息中的每个类标识与所述类集合进行匹配,以确定所述关联关系信息中的所有类标识是否都包含于所述类集合中。
9.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该程序指令被处理器执行时实现权利要求1-4中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:权利要求5-8中任一项所述的生成安装包的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010623900.7A CN111831292A (zh) | 2020-06-30 | 2020-06-30 | 生成安装包的方法、装置、存储介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010623900.7A CN111831292A (zh) | 2020-06-30 | 2020-06-30 | 生成安装包的方法、装置、存储介质和电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111831292A true CN111831292A (zh) | 2020-10-27 |
Family
ID=72899510
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010623900.7A Pending CN111831292A (zh) | 2020-06-30 | 2020-06-30 | 生成安装包的方法、装置、存储介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111831292A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541305A (zh) * | 2023-06-26 | 2023-08-04 | 京东方艺云(杭州)科技有限公司 | 一种异常检测的方法、装置、电子设备及存储介质 |
-
2020
- 2020-06-30 CN CN202010623900.7A patent/CN111831292A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116541305A (zh) * | 2023-06-26 | 2023-08-04 | 京东方艺云(杭州)科技有限公司 | 一种异常检测的方法、装置、电子设备及存储介质 |
CN116541305B (zh) * | 2023-06-26 | 2023-12-15 | 京东方艺云(杭州)科技有限公司 | 一种异常检测的方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106406956B (zh) | 应用程序的安装方法及装置 | |
CN111221559A (zh) | 应用更新方法、装置、存储介质、终端及服务器 | |
CN111736916A (zh) | 基于Java语言的动态扩展方法、装置、电子设备及存储介质 | |
CN111221733A (zh) | 信息处理方法、装置、移动终端及存储介质 | |
CN113377370A (zh) | 一种文件处理方法、装置、电子设备及存储介质 | |
CN111538502A (zh) | 安装包的处理方法、装置、电子设备及存储介质 | |
CN116069612A (zh) | 一种异常定位方法、装置和电子设备 | |
CN108153540B (zh) | 系统升级的方法、装置、终端及存储介质 | |
CN111831292A (zh) | 生成安装包的方法、装置、存储介质和电子设备 | |
CN113010157A (zh) | 一种代码生成方法及装置 | |
CN106293683B (zh) | 一种项目的编译方法及装置 | |
CN104899059A (zh) | 操作系统升级方法及装置 | |
CN112631695B (zh) | 一种数据校验方法、装置、电子设备及存储介质 | |
CN111131000B (zh) | 一种信息传输方法、装置、服务器、终端 | |
CN114896165A (zh) | 会话机器人系统的测试方法、装置、电子设备和存储介质 | |
CN107526683B (zh) | 应用程序功能冗余度的检测方法、装置及存储介质 | |
CN116048951A (zh) | 软件问题的复现方法、装置、电子设备及存储介质 | |
CN109933357B (zh) | 应用程序升级方法及装置 | |
CN113407879A (zh) | 一种数据上报方法、装置及可读介质 | |
CN107193622B (zh) | 代码编译的处理方法、装置及终端 | |
CN110659081B (zh) | 用于程序对象的文件处理方法、装置及电子设备 | |
CN114020504B (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN111124553B (zh) | 一种程序执行方法、装置、终端及存储介质 | |
CN111596949B (zh) | 一种开发应用程序的方法及装置 | |
CN116450534B (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 |