CN107122219A - 安装文件的获取方法和装置 - Google Patents
安装文件的获取方法和装置 Download PDFInfo
- Publication number
- CN107122219A CN107122219A CN201710212354.6A CN201710212354A CN107122219A CN 107122219 A CN107122219 A CN 107122219A CN 201710212354 A CN201710212354 A CN 201710212354A CN 107122219 A CN107122219 A CN 107122219A
- Authority
- CN
- China
- Prior art keywords
- unit
- compiling
- plug
- file
- code set
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种安装文件的获取方法和装置。其中,该方法包括:接收到编译指令,编译指令用于指示对第一资源文件和第二资源文件进行编译,得到待安装的目标应用的安装文件;在编译指令的触发下执行对第一资源文件的编译,得到目标应用的插件;在完成对第一资源文件的编译之后,继续执行对第二资源文件和插件的编译,得到目标应用的安装文件。本发明解决了相关技术中在开发应用安装包时开发编译的效率较低的技术问题。
Description
技术领域
本发明涉及计算机领域,具体而言,涉及一种安装文件的获取方法和装置。
背景技术
为了避免频繁的应用更新对用户造成烦扰,插件开发技术显得越来越重要。插件开发指将原本独立的APP(手机软件Application的缩写)拆分成一个宿主APP和多个插件APP。插件APP内置在宿主APP中,手机安装宿主APP,在宿主APP运行后会加载、安装插件APP。宿主APP也可以通过从应用内部存储目录(如手机自带内存的目录)、外部存储目录(如SD卡的目录)中加载插件APP。对于应用提供方,可以通过网络动态下发新的插件APP,使得用户无需安装新的APP,从而更新已安装的APP的功能或修复线上漏洞Bug。
上述的宿主APP是指在开发人员完成编码后,编译生成的能够在移动设备(如Android***手机、IOS***手机等)上正常安装并运行的安装包。上述的插件APP是指在编译生成安装包后,不能独立运行而需要依托于宿主APP才能运行的安装包。
在编译过程中,需要开发人员输入相关命令分别对插件APP所在的工程和宿主APP所在的工程进行编译,编译过程中需要大量的重复劳动(如输入编译命令、调整文件位置等),且在开发阶段,例如在界面开发、设计还原等需要频繁查看界面效果的场景,往往会面临只改1个像素,却需要编译整个项目(如宿主工程),进行效果的验证查看,该验证过程严重影响了项目进度,降低了开发效率,在修改其余参数时也面临着同样的窘境。
针对相关技术中在开发应用安装包时开发编译的效率较低的技术问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种安装文件的获取方法和装置,以至少解决相关技术中在开发应用安装包时开发编译的效率较低的技术问题。
根据本发明实施例的一个方面,提供了一种安装文件的获取方法,该方法包括:接收到编译指令,其中,编译指令用于指示对第一资源文件和第二资源文件进行编译,得到待安装的目标应用的安装文件;在编译指令的触发下执行对第一资源文件的编译,得到目标应用的插件;在完成对第一资源文件的编译之后,继续执行对第二资源文件和插件的编译,得到目标应用的安装文件。
根据本发明实施例的另一方面,还提供了一种安装文件的获取装置,该装置包括:接收单元,用于接收到编译指令,其中,编译指令用于指示对第一资源文件和第二资源文件进行编译,得到待安装的目标应用的安装文件;第一编译单元,用于在编译指令的触发下执行对第一资源文件的编译,得到目标应用的插件;第二编译单元,用于在完成对第一资源文件的编译之后,继续执行对第二资源文件和插件的编译,得到目标应用的安装文件。
在本发明实施例中,在接收到编译指令时,通过在计算机上启动的进程对第一资源文件进行编译,得到目标应用的插件,并通过该进程对第二资源文件和得到的插件进行编译,得到目标应用的安装文件,而不用在编译的过程中逐个输入命令和相关参数,可以解决了相关技术中在开发应用安装包时开发编译的效率较低的技术问题,进而达到提高编译效率的技术效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的安装文件的获取方法的硬件环境的示意图;
图2是根据本发明实施例的一种可选的安装文件的获取方法的流程图;
图3是根据本发明实施例的一种可选的安装文件的获取***的示意图;
图4是根据本发明实施例的一种可选的安装文件的获取方法的流程图;
图5是根据本发明实施例的一种可选的Gradle插件中代码的示意图;
图6是根据本发明实施例的一种可选的Gradle插件中代码的示意图;
图7是根据本发明实施例的一种可选的Gradle插件中代码的示意图;
图8是根据本发明实施例的一种可选的编译界面的示意图;
图9是根据本发明实施例的一种可选的安装文件的获取装置的示意图;以及
图10是根据本发明实施例的一种终端的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先,在对本发明实施例进行描述的过程中出现的部分名词或者术语适用于如下解释:
APP:手机软件Application的缩写。
宿主APP:在开发人员完成编码后,编译生成能够在移动设备(如Android手机)上正常安装并运行的安装包。
插件APP:编译生成安装包后,不能独立运行,需要依托于宿主APP才能运行的安装包。
插件开发:将原本独立的APP拆分成一个宿主APP和多个插件APP。插件APP内置在宿主APP中,手机安装宿主APP,在宿主APP运行后会加载、安装插件APP。
实施例1
根据本发明实施例,提供了一种安装文件的获取方法的方法实施例。
可选地,在本实施例中,上述安装文件的获取方法可以应用于如图1所示的由服务器102和终端104所构成的硬件环境中。如图1所示,服务器102通过网络与终端104进行连接,上述网络包括但不限于:广域网、城域网或局域网,终端104并不限定于PC、手机、平板电脑等。本发明实施例的安装文件的获取方法可以由服务器102来执行,也可以由终端104来执行,还可以是由服务器102和终端104共同执行。其中,终端104执行本发明实施例的安装文件的获取方法也可以是由安装在其上的客户端来执行。
图2是根据本发明实施例的一种可选的安装文件的获取方法的流程图,如图2所示,该方法可以包括以下步骤:
步骤S202,接收到编译指令,编译指令用于指示对第一资源文件和第二资源文件进行编译,得到待安装的目标应用的安装文件;
步骤S204,在编译指令的触发下执行对第一资源文件的编译,得到目标应用的插件;
步骤S206,在完成对第一资源文件的编译之后,继续执行对第二资源文件和插件的编译,得到目标应用的安装文件。
通过上述步骤S202至步骤S208,在接收到编译指令时,通过在计算机上启动的进程对第一资源文件进行编译,得到目标应用的插件,并通过该进程对第二资源文件和得到的插件进行编译,得到目标应用的安装文件,而不用在编译的过程中逐个输入命令和相关参数,可以解决了相关技术中在开发应用安装包时开发编译的效率较低的技术问题,进而达到提高编译效率的技术效果。
上述的第一资源文件为包括插件应用的源代码的文件;第二资源文件为包括宿主应用的源代码的文件;目标应用即得到的包括插件应用的宿主应用。
上述的进程可通过执行预先定义好的任务脚本来完成对第一资源文件和第二资源文件的编译,且预先制定的任务脚本中包括各种类型的应用安装包(即安装文件)开发所涉及的参数,在编译过程中,可以根据源代码文件中的相关参数在脚本中选择对应的参数,从而可以使得任务脚本具备较强的适应性。
在任务脚本执行完编译之后,还可以通过任务脚本中的安装命令自动将得到的目标应用的安装文件安装至移动终端侧,便于对目标应用进行调试。
上述的目标应用是指安装在移动终端上的应用,如安卓设备上的安卓应用、IOS设备上IOS应用等。本申请的上述方法可以在包括CPU等控制器的设备上执行。
在本申请的技术方案中,应用开发工程师通过在终端Terminal上点击编译按钮(产生编译指令),相应的任务就会自动执行,每个插件工程生成对应的插件APP,由于插件APP并不能单独运行,而需要依赖于宿主APP运行,故可以通过任务自动将此插件APP拷贝至宿主APP所在工程内置的插件目录,再通过相应的任务编译宿主工程,生成可独立运行的APP(目标应用),并安装到手机等移动设备上,在移动设备上运行该独立的APP,以对插件APP的功能进行验证,在验证通过后即可发布。为了进一步详述本申请的实施例,下面结合图2详述本申请的实施例:
在步骤S202提供的技术方案中,在接收到编译指令之前,本申请的方法还包括:创建包括第一代码集合的第一脚本(即上述的任务脚本),其中,第一代码集合用于对第一资源文件进行编译;创建包括第二代码集合的第二脚本(即上述的任务脚本),其中,第二代码集合用于对第二资源文件和插件进行编译。
根据开发的过程,按照编译步骤,将各个编译步骤中需要使用的编译命令直接以脚本命令的形式写入脚本文件中,而无需在开发的过程中,由开发人员记住编译步骤、以及各个编译步骤中需要使用的编译命令,每次完整的编译都由开发人员花费时间去回想编译命令、手动输入编译命令,避免大量的重复劳动,节省了工作人员宝贵的时间。
即使在项目中有新成员加入时,新成员也可快速上手,无需进行大量的培训,只需要调用上述的脚本即可,而无需去了解编译的过程,避免了整个项目的进度被影响。
当开发人员在编译工具(如Android Studio)中点击编译按钮时,随即产生了一个编译指令,该编译指令可触发本申请的编译过程,也即可以自动运行目标应用的编译和安装的步骤。
上述的Android Studio是一个Android集成开发工具,基于IntelliJ IDEA。与Eclipse ADT类似,Android Studio提供了集成的Android开发工具,可用于开发和调试。
可选地,为了提高与脚本之间的兼容度,在接收到编译指令之前,本申请的方法还可以包括如下步骤:创建用于在编译工具中运行的调用工具,其中,调用工具用于在编译指令的触发下,通过进程调用第一脚本和第二脚本提供的接口,以执行第一代码集合和第二代码集合。
上述的调用工具可以在编译工具中以插件的形式存在,该调用工具的功能包括检测上述的编译指令,在检测到该命令的情况下,直接对第一脚本和第二脚本进行调用,具体是通过第一脚本和第二脚本提供的接口对其进行调用。
上述编译工具中的调用工具可以在运行时创建一条进程(即本申请的所提及的进程),通过该进程专门处理资源文件的编译,而不用与其它应用(如编译工具)共用一条进程,可以提高处理效率。
在步骤S204提供的技术方案中,在编译指令的触发下执行对第一资源文件的编译包括:在进程上执行第一代码集合,以对第一资源文件进行编译。
具体地,在进程上执行第一代码集合,以对第一资源文件进行编译时,可以通过如下方式实现:在进程上执行第一代码集合,以指示编译工具对第一资源文件所在的项目(即插件工程或者插件项目)进行编译,得到插件。
可选地,在插件为多个的情况下,在进程上执行第一代码集合是指:在进程的多个线程上执行多个第一代码集合,每个线程对应于一个插件的第一代码集合,也即每个线程用于跑对应于一个插件的第一代码集合,具体就是执行第一代码集合中的编译命令,进而完成对各个第一资源文件的编译。
为了进一步提高编译的效率,上述的多个线程允许并行运行。
在步骤S206提供的技术方案中,继续执行对第二资源文件和插件的编译包括:在进程上执行第二代码集合,以对第二资源文件和插件进行编译。
需要说明的是,上述编译得到的插件可以每次输出时在指定的位置(便于编译),也可以输出至任意的位置。若上述的插件每次输出的位置不同或者不满足宿主工程的编译需求,在进程上执行第二代码集合之前,可将编译得到的插件存放至第二资源文件所在项目中与插件相关联的位置。
在进程上执行第二代码集合,以对第二资源文件和插件进行编译包括:在进程上执行第二代码集合,以指示编译工具对第二资源文件所在的项目(即宿主工程或宿主项目)进行编译。
需要说明的是,对于某些存在依赖文件的应用,还需要对这些依赖文件(即第三资源文件)进行相应的处理,在接收到编译指令之后,通过计算机设备对第三资源文件进行打包,得到目标数据包,其中,第三资源文件为目标应用在运行时需要用到的资源文件。
例如,对于安卓应用而言,在Android Library中抽取Android项目的通用功能,独立成为一个组件,可供其它Android项目使用,在应用编译的过程中,可将上述AndroidLibrary导出为JAR文件(全称为Java Archive,即Java归档文件),JAR文件是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件,主要是将编写好的类,打包编译独立的JAR包,供其它应用程序(即上述的目标应用)使用。
在得到目标应用的安装文件和目标数据包之后,即可安装目标应用的安装文件至移动终端,以对目标应用进行测试。
相关技术中,在开发编译插件APP的过程中效率较低,在开发阶段,例如在界面开发、设计还原等需要频繁查看界面效果的场景,往往会面临只改1个像素,却需要编译整个项目(宿主工程),验证影响了项目进度,降低了开发效率,在修改其余参数时也面临着同样的窘境,由于不能修改单个插件工程,仅编译单个插件并快速在手机验证插件上功能,严重影响开发效率和开发人员的积极性。
而使用本申请提供的技术方案,在编译验证的过程中,仅仅只需要点击编译工具上的编译按钮,即可通过调用脚本的形式自动运行相关的指令,调用编译工具进行编译,并自动将安装包安装至移动设备上,方便开发人员及时查看修改后的效果。尤其是在频繁修改,需要进行验证的情况下,本申请可以极大的提高整个项目的进度。
为了进一步详述本申请的实施例,下面以安卓应用(即目标应用)为例,结合图3和图4详述本申请的实施例。
具体的思路如图3所示:制定好编译项目的命令协议,主要包括用于编译插件项目的第一代码集合、用于编译宿主应用的第二代码集合,编写Gradle插件(也即第一脚本和第二脚本),具体即将第一代码集合和第二代码集合植入脚本,在Android项目根目录的“build.gradle”文件中引入Gradle插件。然后编写Run++插件(即编译工具中的调用工具),在编译平台Android Studio中安装Run++插件,运行Run++插件,选中需要编译的项目,点击run按钮,开始编译、安装,此过程中可能会使用到依赖文件(即文件库中的第三资源文件)。
上述的Gradle插件是一个基于Apache Ant和Apache Maven概念的项目自动化建构工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。以面向Java应用为主,当前其支持的语言限于Java、Groovy和Scala,未来将支持更多的语言;同时Gradle也是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven、Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy、build脚本使用Groovy编写。
由此可见,使用Gradle插件便于进行项目管理,使得构建更为灵活。
需要说明的是,对于IOS等其它类型的应用而言,也可以选择对应的工具应用来编译脚本。
下面结合图4详述本申请的实现步骤:
步骤S402,定义编译、安装、启动及导出JAR包等命令协议。
将编译、安装、启动及导出JAR包等命令以及相互之间逻辑根据定义好。
步骤S404,基于第一步的协议,编写Gradle插件,提供Gradle进行编译的接口。
根据上述定义好的逻辑关系将编译、安装、启动及导出JAR包等命令编写为Gradle插件(即第一脚本和第二脚本)。
对于导出JAR包、安装应用相关的命令也可以一并写入Gradle插件中,以便于相关流程的自动运行。
上述的Gradle插件提供有如下调用接口:
(1)assemble Release Run接口:用于编译宿主工程、插件工程,生成APP(目标应用的安装文件);
(2)install Release Run接口:调用并安装目标应用的安装文件至手机;
(3)export Library Run接口:用于导出JAR,提供给宿主APP或插件APP使用。
步骤S406,在Android项目中引入编写的Gradle插件。具体包括如下几个子步骤:
步骤S4062,在Android工程根目录添加代码依赖,具体代码如图5所示,图5示出了一种可选地建立Android工程根目录的代码依赖的代码;
步骤S4064,在宿主工程声明引入Host插件,具体代码如图6所示;
步骤S4066,在宿主工程声明引入Plugin插件,具体代码如图7所示。
步骤S408,编写Android Studio插件(即Run++插件,也即调用工具),提供可视化操作界面。
对于工作人员而言,在使用本申请的技术方案进行应用验证的过程中,先启动编译工具Android Studio,如图8所示,安装步骤S408编写的Android Studio(即Run++插件)插件,点击工具栏编译图标,运行插件。插件启动后,默认选中开发人员正在编辑的Android工程,直接点击“run”编译当前工程。
图8中,cdk为通用开发工具库,host为宿主工程,jjc表示竞技彩插件工程,kpc表示快频彩插件工程,szc表示数字彩插件工程。LIBRARY即为Android Library;PLUGIN表示为插件工程;HOST表示为宿主工程。如图8中所示,选中jjc插件工程,直接点击“run”按钮,即可快速安装至手机。
需要说明的是,可以预先根据需求对重启“restart”、配置“config”以及数据库“database”进行配置。
如需要安装应用后重启移动设备,即可选中“restart”(即小框内存在符号“√”表示选中)。
在本申请的技术方案中,开发人员也可以选择其它插件工程、宿主工程进行编译,支持多插件并行编译。整个编译过程,不需要开发人员输入任何编译代码,不需要思考编译步骤,不需要等待逐个插件编译。从而大大节省时间,提升工作效率。
通过本申请提供的实施例,实现了Android Studio编译工具的可视化;提升了Android开发人员进行插件开发的效率,减少编译等待时间;本申请的技术方案简单、易用,便于推广。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施上述安装文件的获取方法的安装文件的获取装置。图9是根据本发明实施例的一种可选的安装文件的获取装置的示意图,如图9所示,该装置可以包括:接收单元92、第一编译单元94以及第二编译单元96。
接收单元92,用于接收到编译指令,编译指令用于指示对第一资源文件和第二资源文件进行编译,得到待安装的目标应用的安装文件;
第一编译单元94,用于在编译指令的触发下执行对第一资源文件的编译,得到目标应用的插件;
第二编译单元96,用于在完成对第一资源文件的编译之后,继续执行对第二资源文件和插件的编译,得到目标应用的安装文件。
需要说明的是,该实施例中的接收单元92可以用于执行本申请实施例1中的步骤S202,该实施例中的第一编译单元94可以用于执行本申请实施例1中的步骤S204,该实施例中的第二编译单元96可以用于执行本申请实施例1中的步骤S206。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现。
通过上述模块,在接收到编译指令时,通过在计算机上启动的进程对第一资源文件进行编译,得到目标应用的插件,并通过该进程对第二资源文件和得到的插件进行编译,得到目标应用的安装文件,而不用在编译的过程中逐个输入命令和相关参数,可以解决了相关技术中在开发应用安装包时开发编译的效率较低的技术问题,进而达到提高编译效率的技术效果。
上述的第一资源文件为包括插件应用的源代码的文件;第二资源文件为包括宿主应用的源代码的文件;目标应用即得到的包括插件应用的宿主应用。
上述的进程可通过执行预先定义好的任务脚本来完成对第一资源文件和第二资源文件的编译,且预先制定的任务脚本中包括各种类型的应用安装包(即安装文件)开发所涉及的参数,在编译过程中,可以根据源代码文件中的相关参数在脚本中选择对应的参数,从而可以使得任务脚本具备较强的适应性。
在任务脚本执行完编译之后,还可以通过任务脚本中的安装命令自动将得到的目标应用的安装文件安装至移动终端侧,便于对目标应用进行调试。
上述的目标应用是指安装在移动终端上的应用,如安卓设备上的安卓应用、IOS设备上IOS应用等。本申请的上述方法可以在包括CPU等控制器的设备上执行。
在本申请的技术方案中,应用开发工程师通过在终端Terminal上点击编译按钮(产生编译指令),相应的任务就会自动执行,每个插件工程生成对应的插件APP,由于插件APP并不能单独运行,而需要依赖于宿主APP运行,故可以通过任务自动将此插件APP拷贝至宿主APP所在工程内置的插件目录,再通过相应的任务编译宿主工程,生成可独立运行的APP(目标应用),并安装到手机等移动设备上,在移动设备上运行该独立的APP,以对插件APP的功能进行验证,在验证通过后即可发布。
可选地,本申请的装置还可以包括:第一创建单元,用于在接收到编译指令之前,创建包括第一代码集合的第一脚本,其中,第一代码集合用于对第一资源文件进行编译;第二创建单元,用于创建包括第二代码集合的第二脚本,其中,第二代码集合用于对第二资源文件和插件进行编译。
根据开发的过程,按照编译步骤,将各个编译步骤中需要使用的编译命令直接以脚本命令的形式写入脚本文件中,而无需在开发的过程中,由开发人员记住编译步骤、以及各个编译步骤中需要使用的编译命令,每次完整的编译都由开发人员花费时间去回想编译命令、手动输入编译命令,避免大量的重复劳动,节省了工作人员宝贵的时间。
可选地,可以通过本申请的装置包括的如下模块提高与脚本之间的兼容度:第三创建单元,用于在接收到编译指令之前,创建用于在编译工具中运行的调用工具,其中,调用工具用于在编译指令的触发下,通过进程调用第一脚本和第二脚本提供的接口,以执行第一代码集合和第二代码集合。
上述的调用工具可以在编译工具中以插件的形式存在,该调用工具的功能包括检测上述的编译指令,在检测到该命令的情况下,直接对第一脚本和第二脚本进行调用,具体是通过第一脚本和第二脚本提供的接口对其进行调用。
上述编译工具中的调用工具可以在运行时创建一条进程(即本申请的所提及的进程),通过该进程专门处理资源文件的编译,而不用与其它应用(如编译工具)共用一条进程,可以提高处理效率。
可选地,第一编译单元还用于在进程上执行第一代码集合,以对第一资源文件进行编译。
具体地,第一编译单元在进程上执行第一代码集合,以对第一资源文件进行编译时,可以通过如下模块实现:第一编译模块,用于在进程上执行第一代码集合,以指示编译工具对第一资源文件所在的项目进行编译,得到插件。
可选地,第一编译模块还用于在插件为多个的情况下,在进程的多个线程上执行多个第一代码集合,其中,每个线程对应于一个插件的第一代码集合。
为了进一步提高编译的效率,上述的多个线程允许并行运行。
可选地,第二编译单元还用于在进程上执行第二代码集合,以对第二资源文件和插件进行编译。
需要说明的是,上述编译得到的插件可以每次输出时在指定的位置(便于编译),也可以输出至任意的位置。若上述的插件每次输出的位置不同或者不满足宿主工程的编译需求,则在进程上执行第二代码集合之前,可通过第二编译单元包括的保存模块将编译得到的插件存放至第二资源文件所在项目中与插件相关联的位置。
可选地,第二编译单元还可包括第二编译模块,用于在进程上执行第二代码集合,以指示编译工具对第二资源文件所在的项目进行编译。
需要说明的是,对于某些存在依赖文件的应用,还需要对这些依赖文件(即第三资源文件)进行相应的处理,具体通过该装置的打包单元实现,打包单元在接收到编译指令之后,通过计算机设备对第三资源文件进行打包,得到目标数据包,其中,第三资源文件为目标应用在运行时需要用到的资源文件。
例如,对于安卓应用而言,在Android Library中抽取Android项目的通用功能,独立成为一个组件,可供其它Android项目使用,在应用编译的过程中,可将上述AndroidLibrary导出为JAR文件(全称为Java Archive,即Java归档文件),JAR文件是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件,主要是将编写好的类,打包编译独立的JAR包,供其它应用程序(即上述的目标应用)使用。
在得到目标应用的安装文件和目标数据包之后,可通过该装置的安装单元安装目标应用的安装文件至移动终端,以对目标应用进行测试。
相关技术中,在开发编译插件APP的过程中效率较低,在开发阶段,例如在界面开发、设计还原等需要频繁查看界面效果的场景,往往会面临只改1个像素,却需要编译整个项目(宿主工程),验证影响了项目进度,降低了开发效率,在修改其余参数时也面临着同样的窘境,由于不能修改单个插件工程,仅编译单个插件并快速在手机验证插件上功能,严重影响开发效率和开发人员的积极性。
而使用本申请提供的技术方案,在编译验证的过程中,仅仅只需要点击编译工具上的编译按钮,即可通过调用脚本的形式自动运行相关的指令,调用编译工具进行编译,并自动将安装包安装至移动设备上,方便开发人员及时查看修改后的效果。尤其是在频繁修改,需要进行验证的情况下,本申请可以极大的提高整个项目的进度。
此处需要说明的是,上述模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在如图1所示的硬件环境中,可以通过软件实现,也可以通过硬件实现,其中,硬件环境包括网络环境。
实施例3
根据本发明实施例,还提供了一种用于实施上述安装文件的获取方法的服务器或终端。
图10是根据本发明实施例的一种终端的结构框图,如图10所示,该终端可以包括:一个或多个(图中仅示出一个)处理器1001、存储器1003、以及传输装置1005(如上述实施例中的发送装置),如图10所示,该终端还可以包括输入输出设备1007。
其中,存储器1003可用于存储软件程序以及模块,如本发明实施例中的安装文件的获取方法和装置对应的程序指令/模块,处理器1001通过运行存储在存储器1003内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的安装文件的获取方法。存储器1003可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器1003可进一步包括相对于处理器1001远程设置的存储器,这些远程存储器可以通过网络连接至终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
上述的传输装置1005用于经由一个网络接收或者发送数据,还可以用于处理器与存储器之间的数据传输。上述的网络具体实例可包括有线网络及无线网络。在一个实例中,传输装置1005包括一个网络适配器(Network Interface Controller,NIC),其可通过网线与其他网络设备与路由器相连从而可与互联网或局域网进行通讯。在一个实例中,传输装置1005为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
其中,具体地,存储器1003用于存储应用程序。
处理器1001可以通过传输装置1005调用存储器1003存储的应用程序,以执行下述步骤:接收到编译指令,其中,编译指令用于指示对第一资源文件和第二资源文件进行编译,得到待安装的目标应用的安装文件;在编译指令的触发下执行对第一资源文件的编译,得到目标应用的插件;在完成对第一资源文件的编译之后,继续执行对第二资源文件和插件的编译,得到目标应用的安装文件。
处理器1001还用于执行下述步骤:创建包括第一代码集合的第一脚本,其中,所述第一代码集合用于对所述第一资源文件进行编译;创建包括第二代码集合的第二脚本,其中,所述第二代码集合用于对所述第二资源文件和所述插件进行编译。
采用本发明实施例,在接收到编译指令时,通过在计算机上启动的进程对第一资源文件进行编译,得到目标应用的插件,并通过该进程对第二资源文件和得到的插件进行编译,得到目标应用的安装文件,而不用在编译的过程中逐个输入命令和相关参数,可以解决了相关技术中在开发应用安装包时开发编译的效率较低的技术问题,进而达到提高编译效率的技术效果。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解,图10所示的结构仅为示意,终端可以是智能手机(如Android手机、iOS手机等)、平板电脑、掌上电脑以及移动互联网设备(Mobile InternetDevices,MID)、PAD等终端设备。图10其并不对上述电子装置的结构造成限定。例如,终端还可包括比图10中所示更多或者更少的组件(如网络接口、显示装置等),或者具有与图10所示不同的配置。
本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令终端设备相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(RandomAccess Memory,RAM)、磁盘或光盘等。
实施例4
本发明的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于执行安装文件的获取方法的程序代码。
可选地,在本实施例中,上述存储介质可以位于上述实施例所示的网络中的多个网络设备中的至少一个网络设备上。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:
S11,接收到编译指令,编译指令用于指示对第一资源文件和第二资源文件进行编译,得到待安装的目标应用的安装文件;
S12,在编译指令的触发下执行对第一资源文件的编译,得到目标应用的插件;
S13,在完成对第一资源文件的编译之后,继续执行对第二资源文件和插件的编译,得到目标应用的安装文件。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:
S21,创建包括第一代码集合的第一脚本,其中,第一代码集合用于对第一资源文件进行编译;
S22,创建包括第二代码集合的第二脚本,其中,第二代码集合用于对第二资源文件和插件进行编译。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (14)
1.一种安装文件的获取方法,其特征在于,包括:
接收到编译指令,其中,所述编译指令用于指示对第一资源文件和第二资源文件进行编译,得到待安装的目标应用的安装文件;
在所述编译指令的触发下执行对所述第一资源文件的编译,得到所述目标应用的插件;
在完成对所述第一资源文件的编译之后,继续执行对所述第二资源文件和所述插件的编译,得到所述目标应用的安装文件。
2.根据权利要求1所述的方法,其特征在于,
在接收到编译指令之前,所述方法还包括:创建包括第一代码集合的第一脚本,其中,所述第一代码集合用于对所述第一资源文件进行编译;创建包括第二代码集合的第二脚本,其中,所述第二代码集合用于对所述第二资源文件和所述插件进行编译;
在所述编译指令的触发下执行对所述第一资源文件的编译包括:在进程上执行所述第一代码集合,以对所述第一资源文件进行编译;
继续执行对所述第二资源文件和所述插件的编译包括:在所述进程上执行所述第二代码集合,以对所述第二资源文件和所述插件进行编译。
3.根据权利要求2所述的方法,其特征在于,在进程上执行所述第一代码集合,以对所述第一资源文件进行编译包括:
在进程上执行所述第一代码集合,以指示编译工具对所述第一资源文件所在的项目进行编译,得到所述插件。
4.根据权利要求3所述的方法,其特征在于,在所述插件为多个的情况下,在进程上执行所述第一代码集合包括:
在所述进程的多个线程上执行多个所述第一代码集合,其中,每个所述线程对应于一个所述插件的所述第一代码集合。
5.根据权利要求2所述的方法,其特征在于,
在所述进程上执行所述第二代码集合之前,所述方法还包括:将编译得到的所述插件存放至所述第二资源文件所在项目中与所述插件相关联的位置;
在所述进程上执行所述第二代码集合,以对所述第二资源文件和所述插件进行编译包括:在所述进程上执行所述第二代码集合,以指示编译工具对所述第二资源文件所在的项目进行编译。
6.根据权利要求2所述的方法,其特征在于,在接收到编译指令之前,所述方法还包括:
创建用于在编译工具中运行的调用工具,其中,所述调用工具用于在所述编译指令的触发下,通过所述进程调用所述第一脚本和所述第二脚本提供的接口,以执行所述第一代码集合和所述第二代码集合。
7.根据权利要求1所述的方法,其特征在于,在得到所述目标应用的安装文件之后,所述方法还包括:
安装所述目标应用的安装文件至移动终端,以对所述目标应用进行测试。
8.一种安装文件的获取装置,其特征在于,包括:
接收单元,用于接收到编译指令,其中,所述编译指令用于指示对第一资源文件和第二资源文件进行编译,得到待安装的目标应用的安装文件;
第一编译单元,用于在所述编译指令的触发下执行对所述第一资源文件的编译,得到所述目标应用的插件;
第二编译单元,用于在完成对所述第一资源文件的编译之后,继续执行对所述第二资源文件和所述插件的编译,得到所述目标应用的安装文件。
9.根据权利要求8所述的装置,其特征在于,
所述装置还包括:第一创建单元,用于在接收到编译指令之前,创建包括第一代码集合的第一脚本,其中,所述第一代码集合用于对所述第一资源文件进行编译;第二创建单元,用于创建包括第二代码集合的第二脚本,其中,所述第二代码集合用于对所述第二资源文件和所述插件进行编译;
所述第一编译单元还用于在进程上执行所述第一代码集合,以对所述第一资源文件进行编译;
所述第二编译单元还用于在所述进程上执行所述第二代码集合,以对所述第二资源文件和所述插件进行编译。
10.根据权利要求9所述的装置,其特征在于,所述第一编译单元包括:
第一编译模块,用于在进程上执行所述第一代码集合,以指示编译工具对所述第一资源文件所在的项目进行编译,得到所述插件。
11.根据权利要求10所述的装置,其特征在于,
第一编译模块还用于在所述插件为多个的情况下,在所述进程的多个线程上执行多个所述第一代码集合,其中,每个所述线程对应于一个所述插件的所述第一代码集合。
12.根据权利要求9所述的装置,其特征在于,所述第二编译单元包括:
保存模块,用于在所述进程上执行所述第二代码集合之前,将编译得到的所述插件存放至所述第二资源文件所在项目中与所述插件相关联的位置;
第二编译模块,用于在所述进程上执行所述第二代码集合,以指示编译工具对所述第二资源文件所在的项目进行编译。
13.根据权利要求9所述的装置,其特征在于,所述装置还包括:
第三创建单元,用于在接收到编译指令之前,创建用于在编译工具中运行的调用工具,其中,所述调用工具用于在所述编译指令的触发下,通过所述进程调用所述第一脚本和所述第二脚本提供的接口,以执行所述第一代码集合和所述第二代码集合。
14.根据权利要求8所述的装置,其特征在于,所述装置还包括:
安装单元,用于在得到所述目标应用的安装文件之后,安装所述目标应用的安装文件至移动终端,以对所述目标应用进行测试。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710212354.6A CN107122219A (zh) | 2017-03-31 | 2017-03-31 | 安装文件的获取方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710212354.6A CN107122219A (zh) | 2017-03-31 | 2017-03-31 | 安装文件的获取方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107122219A true CN107122219A (zh) | 2017-09-01 |
Family
ID=59726181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710212354.6A Pending CN107122219A (zh) | 2017-03-31 | 2017-03-31 | 安装文件的获取方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107122219A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107885502A (zh) * | 2017-11-10 | 2018-04-06 | 广州市千钧网络科技有限公司 | 接口处理方法、处理装置、接口管理方法和管理装置 |
CN111061489A (zh) * | 2019-12-27 | 2020-04-24 | 上海米哈游天命科技有限公司 | 一种多平台编译检测方法、装置、设备及介质 |
CN111309335A (zh) * | 2020-02-28 | 2020-06-19 | 腾讯音乐娱乐科技(深圳)有限公司 | 插件应用的编译方法、装置及计算机可读存储介质 |
CN111427584A (zh) * | 2020-04-14 | 2020-07-17 | 北京达佳互联信息技术有限公司 | 可执行文件的生成方法、装置及设备 |
CN111782237A (zh) * | 2020-05-11 | 2020-10-16 | 车智互联(北京)科技有限公司 | 一种适于在移动终端中运行的应用的更新方法 |
CN112000340A (zh) * | 2020-08-19 | 2020-11-27 | 北京字节跳动网络技术有限公司 | 文件处理方法、装置、电子设备及存储介质 |
CN113296778A (zh) * | 2020-04-13 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 一种资源文件的处理方法、装置、服务器、客户端及*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282402A1 (en) * | 2013-03-15 | 2014-09-18 | Digital Rapids Corporation | Systems and methods for controlling branch latency within computing applications |
CN104102477A (zh) * | 2013-04-08 | 2014-10-15 | 腾讯科技(深圳)有限公司 | 移动终端应用插件化方法及框架平台*** |
CN104536776A (zh) * | 2014-11-28 | 2015-04-22 | 百度在线网络技术(北京)有限公司 | 一种在宿主端插件运行环境中运行插件应用的方法与装置 |
CN104932928A (zh) * | 2014-03-17 | 2015-09-23 | 无锡天脉聚源传媒科技有限公司 | 一种基于java的插件化开发方法及*** |
-
2017
- 2017-03-31 CN CN201710212354.6A patent/CN107122219A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140282402A1 (en) * | 2013-03-15 | 2014-09-18 | Digital Rapids Corporation | Systems and methods for controlling branch latency within computing applications |
CN104102477A (zh) * | 2013-04-08 | 2014-10-15 | 腾讯科技(深圳)有限公司 | 移动终端应用插件化方法及框架平台*** |
CN104932928A (zh) * | 2014-03-17 | 2015-09-23 | 无锡天脉聚源传媒科技有限公司 | 一种基于java的插件化开发方法及*** |
CN104536776A (zh) * | 2014-11-28 | 2015-04-22 | 百度在线网络技术(北京)有限公司 | 一种在宿主端插件运行环境中运行插件应用的方法与装置 |
Non-Patent Citations (1)
Title |
---|
MML: ""Android插件开发框架"", 《HTTPS://BLOG.CSDN.NET/MINGMINGLOVE/ARTICLE/DETAILS/49177659》 * |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107885502A (zh) * | 2017-11-10 | 2018-04-06 | 广州市千钧网络科技有限公司 | 接口处理方法、处理装置、接口管理方法和管理装置 |
CN107885502B (zh) * | 2017-11-10 | 2021-10-15 | 广州市千钧网络科技有限公司 | 接口处理方法、处理装置、接口管理方法和管理装置 |
CN111061489A (zh) * | 2019-12-27 | 2020-04-24 | 上海米哈游天命科技有限公司 | 一种多平台编译检测方法、装置、设备及介质 |
CN111061489B (zh) * | 2019-12-27 | 2023-06-27 | 上海米哈游天命科技有限公司 | 一种多平台编译检测方法、装置、设备及介质 |
CN111309335A (zh) * | 2020-02-28 | 2020-06-19 | 腾讯音乐娱乐科技(深圳)有限公司 | 插件应用的编译方法、装置及计算机可读存储介质 |
CN111309335B (zh) * | 2020-02-28 | 2023-08-15 | 腾讯音乐娱乐科技(深圳)有限公司 | 插件应用的编译方法、装置及计算机可读存储介质 |
CN113296778A (zh) * | 2020-04-13 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 一种资源文件的处理方法、装置、服务器、客户端及*** |
CN111427584A (zh) * | 2020-04-14 | 2020-07-17 | 北京达佳互联信息技术有限公司 | 可执行文件的生成方法、装置及设备 |
CN111782237A (zh) * | 2020-05-11 | 2020-10-16 | 车智互联(北京)科技有限公司 | 一种适于在移动终端中运行的应用的更新方法 |
CN112000340A (zh) * | 2020-08-19 | 2020-11-27 | 北京字节跳动网络技术有限公司 | 文件处理方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107122219A (zh) | 安装文件的获取方法和装置 | |
US8074201B2 (en) | Deployment and execution of a program on an embedded device | |
US8595693B2 (en) | Model driven deployment of composite applications | |
CN106302008A (zh) | 数据更新方法和装置 | |
CN105893850A (zh) | 漏洞修复方法和装置 | |
CN105117233A (zh) | Api调用方法及装置 | |
CN103677921B (zh) | 一种Android***兼容wifi芯片的方法及*** | |
US20150331406A1 (en) | Programming auxiliary system of programmable controller and method thereof | |
CN106707848A (zh) | 一种控制***的控制程序组织结构和下载方法 | |
CN109933521A (zh) | 基于bdd的自动化测试方法、装置、计算机设备及存储介质 | |
US20150106153A1 (en) | Workflow compilation | |
CN107391219B (zh) | 函数编译方法和装置 | |
CN103853586A (zh) | 一种在uefi层实现无线网卡驱动的方法 | |
CN103544100A (zh) | 便携数据处理设备应用程序的测试方法、***和客户端 | |
CN110362490B (zh) | 融合iOS与Android移动应用的自动化测试方法及*** | |
CN107885658B (zh) | 测试前置实现方法、装置、终端设备及存储介质 | |
CN106326099B (zh) | 一种用于程序跟踪的方法、装置及电子设备 | |
CN108563579A (zh) | 白盒测试方法、装置、***及存储介质 | |
CN112148278A (zh) | 可视化的区块链智能合约框架及智能合约开发部署方法 | |
CN112328229A (zh) | 一种快速创建Jenkins流水线的方法 | |
CN110119282A (zh) | 一种基于通用嵌入式计算机的物联网终端及*** | |
CN109766278A (zh) | 基于osgi框架的网关设备web后台自动测试方法 | |
CN112231206A (zh) | 应用程序测试的脚本编辑方法、计算机可读存储介质及测试平台 | |
CN111459506A (zh) | 深度学习平台集群的部署方法、装置、介质及电子设备 | |
CN112631915B (zh) | 一种pcie设备软件仿真的方法、***、设备及介质 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170901 |
|
RJ01 | Rejection of invention patent application after publication |