CN111638884B - 一种插件化工程编译的方法、系统、装置和存储介质 - Google Patents

一种插件化工程编译的方法、系统、装置和存储介质 Download PDF

Info

Publication number
CN111638884B
CN111638884B CN202010427756.XA CN202010427756A CN111638884B CN 111638884 B CN111638884 B CN 111638884B CN 202010427756 A CN202010427756 A CN 202010427756A CN 111638884 B CN111638884 B CN 111638884B
Authority
CN
China
Prior art keywords
plug
information
mark
source code
compiling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010427756.XA
Other languages
English (en)
Other versions
CN111638884A (zh
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.)
Seashell Housing Beijing Technology Co Ltd
Original Assignee
Seashell Housing Beijing Technology 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 Seashell Housing Beijing Technology Co Ltd filed Critical Seashell Housing Beijing Technology Co Ltd
Priority to CN202010427756.XA priority Critical patent/CN111638884B/zh
Publication of CN111638884A publication Critical patent/CN111638884A/zh
Application granted granted Critical
Publication of CN111638884B publication Critical patent/CN111638884B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

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通常包含有大量的业务功能。为了便于开发,通常采用插件化工程实现。即,不同的业务功能先采用不同的业务插件实现,再将这些插件放置于宿主中,最后对包括宿主的工程进行整体编译构建。由于所有的业务插件在整体编译构建时每次都需要全量编译,导致整个APP编译构建的速度慢,工作效率低下。
发明内容
针对上述现有技术,本发明实施例公开一种实现插件化工程编译的方法,可以避免业务插件每次在整体编译构建时都需要全量编译带来的效率低下问题,达到高效且准确编译的目的。
本申请方法实施例公开的一种实现插件化工程编译的方法具体包括:
对工程源码中的业务插件进行编译,生成对应的插件编译结果;
为所述插件编译结果生成第一标记信息,所述第一标记信息用于标识所述插件编译结果;
将所述插件编译结果和对应的第一标记信息关联保存在远端服务器中;
在需要对工程源码进行整体编译构建时,从所述远端服务器获取所述第一标记信息,并根据所述工程源码中业务插件生成第二标记信息;
判断所述第一标记信息是否符合所述第二标记信息,如果符合,则从所述远端服务器下载所述第一标记信息对应的插件编译结果,将下载的插件编译结果作为所述工程源码进行整体编译构建的插件编译结果;否则,直接对所述工程源码中的业务插件进行编译。
较佳地,
所述为插件编译结果生成第一标记信息的步骤包括:
根据所述业务插件在工程源码中的位置关系生成第一源码标记;
根据所述业务插件所在工程源码的混淆信息生成第一混淆标记,所述混淆信息是所述工程源码进行整体编译构建时用于混淆处理的信息;
根据设置的不稳定依赖信息生成第一依赖标记,所述不稳定依赖信息是所述业务插件在编译时对应的版本号;
将所述第一源码标记、第一混淆标记和第一依赖标记组合构成所述第一标记信息。
较佳地,
所述根据工程源码中业务插件生成第二标记信息的步骤包括:
根据所述业务插件在所述工程源码中当前的位置关系生成第二源码标记;
根据所述业务插件在工程源码当前的混淆信息生成第二混淆标记;
根据获取当前的不稳定依赖信息生成第二依赖标记;
将所述第二源码标记、第二混淆标记和第二依赖标记组合构成所述第二标记信息。
较佳地,
所述将插件编译结果和对应的第一标记信息关联保存在远端服务器中的步骤之后,还进一步包括:
监控所述工程源码中业务插件的更新情况;
在所述工程源码中业务插件发生更新的情况下,对更新后的业务插件重新进行编译,生成更新后的插件编译结果;
为所述更新后的插件编译结果重新生成第一标记信息;
将所述更新后的插件编译结果和重新生成的第一标记信息重新关联保存在所述远端服务器中。
本发明实施例公开一种实现插件化工程编译的系统,可以避免业务插件每次在整体编译构建时都需要全量编译带来的效率低下问题,达到高效且准确编译的目的。
本申请公开的一种实现插件化工程编译的系统,该系统包括开发平台本地和远端服务器;
所述开发平台本地,用于对工程源码中的业务插件进行编译,生成对应的插件编译结果;为所述插件编译结果生成第一标记信息,所述第一标记信息用于标识所述插件编译结果;将所述插件编译结果和对应的第一标记信息关联保存在远端服务器中;在需要对工程源码进行整体编译构建时,从所述远端服务器获取所述第一标记信息,并根据所述工程源码中业务插件生成第二标记信息;判断所述第一标记信息是否符合所述第二标记信息,如果符合,则从所述远端服务器下载所述第一标记信息对应的插件编译结果,将下载的插件编译结果作为所述工程源码进行整体编译构建的插件编译结果;否则,直接对所述工程源码中的业务插件进行编译;
所述远端服务器,用于保存所述插件编译结果和对应的第一标记信息。
较佳地,
所述远端服务器包括第一远端服务器、第二远端服务器、第三远端服务器;
所述第一远端服务器,用于保存所述插件编译结果和对应的第一标记信息;
所述第二远端服务器,用于保存工程源码;
所述第三远端服务器,用于保存不稳定依赖信息;
所述开发平台本地为所述插件编译结果生成第一标记信息时,用于根据所述业务插件在工程源码中的位置关系生成第一源码标记;根据所述业务插件所在工程源码的混淆信息生成第一混淆标记,所述混淆信息是所述工程源码进行整体编译构建时用于混淆处理的信息;根据设置的不稳定依赖信息生成第一依赖标记,所述不稳定依赖信息是所述业务插件在编译时对应的版本号;将所述第一源码标记、第一混淆标记和第一依赖标记组合构成所述第一标记信息。
较佳地,
所述开发平台本地根据工程源码中业务插件生成第二标记信息时,用于根据所述业务插件在所述工程源码中当前的位置关系生成第二源码标记;根据所述业务插件在工程源码当前的混淆信息生成第二混淆标记;根据获取当前的不稳定依赖信息生成第二依赖标记;将所述第二源码标记、第二混淆标记和第二依赖标记组合构成所述第二标记信息。
较佳地,
该系统进一步包括监控设备;
所述监控设备,用于监控所述工程源码中业务插件的更新情况;在所述工程源码中业务插件发生更新的情况下,对更新后的业务插件重新进行编译,生成更新后的插件编译结果;为所述更新后的插件编译结果重新生成第一标记信息;将所述更新后的插件编译结果和重新生成的第一标记信息重新关联保存在所述远端服务器中。
本发明实施例公开一种实现插件化工程编译的装置,可以避免业务插件每次在整体编译构建时都需要全量编译带来的效率低下问题,达到高效且准确编译的目的
本申请实施例公开的一种实现插件化工程编译的装置,具体包括:
编译模块,用于对工程源码中的业务插件进行编译,生成对应的插件编译结果;为所述插件编译结果生成第一标记信息,所述第一标记信息用于标识所述插件编译结果;将所述插件编译结果和对应的第一标记信息关联保存在远端服务器中;在需要对工程源码进行整体编译构建时,从所述远端服务器获取所述第一标记信息,并根据所述工程源码中业务插件生成第二标记信息;
判别模块,用于判断所述第一标记信息是否符合所述第二标记信息,如果符合,则从所述远端服务器下载所述第一标记信息对应的插件编译结果,将下载的插件编译结果作为所述工程源码进行整体编译构建的插件编译结果;否则,直接对所述工程源码中的业务插件进行编译。
本申请实施例还公开一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述指令被处理器执行时可实现上述实现插件化工程编译的方法。
本申请实施例还公开一种电子设备,该电子设备至少包括上述计算机可读存储介质,还包括处理器;
所述处理器,用于从所述计算机可读存储介质中读取所述可执行指令,并执行所述指令以实现上述实现插件化工程编译的方法。
综上所述,本申请实施例提出一种实现插件化工程编译方案中,事先将业务插件进行编译得到插件编译结果,并将插件编译结果保存在远端服务器中。当需要对工程源码整体编译构建时,直接下载插件编译结果即可,从而提高编译效率。另外,本申请实施例还对插件编译结果进行标记,只有标记比对符合的情况下才进行下载,从而保证编译的准确性。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实现插件化工程编译的系统实施例一的示意图。
图2是本申请实现插件化工程编译的方法实施例一的流程图。
图3是本申请实现插件化工程编译的系统实施例二的示意图。
图4是本申请实现插件化工程编译的方法实施例二的流程图。
图5是本申请方法实施例二中监控工程源码中业务插件的流程图。
图6是本申请实现插件化工程编译的装置实施例示意图。
图7是本申请实现插件化工程编译的电子设备结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其他步骤或单元。
下面以具体实施例对本发明的技术方案进行详细说明。下面几个具体实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
本申请实施例先将工程源码中的业务插件进行编译,将其插件编译结果保存在远端服务器中。在对工程源码进行整体编译构建时,不再对业务插件进行全量编译,而是直接利用远端服务器中保存的插件编译结果,从而大大提高编译工作效率。另一方面,本申请实施例还为编译结果设置了第一标记信息,并在需要为工程源码进行整体编译构建时生成第二标记信息,只有在第一标记信息和第二标记信息符合时,才从远端服务器将对应的编译结果进行下载,从而提高工程源码整体编译构建的准确性。
图1是本申请实现插件化工程编译的方法实施例一的系统示意图。如图1所示,该系统包括开发平台本地101和远端服务器102。其中,开发平台本地101对工程源码进行编译,远端服务器102可以保存插件编译结果和对应的第一标记信息。
图2是本申请实现插件化工程编译的方法实施例一的流程图。如图2所示,该方法包括:
步骤201:对工程源码中的业务插件进行编译,生成对应的插件编译结果。
步骤202:为所述插件编译结果生成第一标记信息,所述第一标记信息用于标识所述插件编译结果。
步骤203:将所述插件编译结果和对应的第一标记信息关联保存在远端服务器中。
上述步骤201~步骤203是事先将工程源码中的业务插件进行编译,将插件编译结果和对应的第一标记信息保存到远端服务器中的过程。插件编译结果可以提供给多方使用,因此不保存在开发平台本地101,而是保存在远端服务器102上。另外,功能庞大的工程源码中通常包含大量的业务插件,为了后续能够准确获取插件编译结果,本申请实施例对插件编译结果进行了标记,以便在进行工程源码整体编译构建时可以更好地识别并下载。
步骤204:在需要对工程源码进行整体编译构建时,从所述远端服务器获取所述第一标记信息,并根据所述工程源码中业务插件生成第二标记信息。
实际应用中,庞大的工程源码通常由不同的开发人员开发,并各自将自身开发的源码部分保存到统一的位置,本实施例中的工程源码在本技术领域有时也被称为“代码仓库”。在整个插件化工程中,工程源码会经常发生变化。比如,由于对业务插件进行了更新,可能造成插件编译结果存在差别。再比如,工程源码整体编译构建需要的其他相关信息发生了变化,也可能造成插件编译结果存在差别。因此,本步骤204的工程源码或其相关信息可能与步骤201中的不同,不能直接根据第一标记信息从远端服务器中下载对应的插件编译结果,而需要利用步骤204当前工程源码中的业务插件生成第二标记信息,比较所述第一标记信息和第二标记信息后再执行下载操作。
步骤205:判断所述第一标记信息是否符合所述第二标记信息,如果符合,则执行步骤206;否则,执行步骤207。
此时,步骤202为工程源码中业务插件的插件编译结果生成了第一标记信息,步骤204再次根据当前的工程源码中业务插件生成了第二标记信息,如果第一标记信息和第二标记信息相同,说明工程源码中业务插件应当是一致的,可以直接利用第一标记信息对应的插件编译结果,即执行步骤206。相反,如果第一标记信息和第二标记信息不相同,说明工程源码中业务插件不一致,比如可能是业务插件发生了更改,也可能是业务插件编译时涉及的其他相关信息发生了变化,不能直接利用第一标记信息对应的插件编译结果,即执行步骤207。
步骤206:从所述远端服务器下载所述第一标记信息对应的插件编译结果,将下载的插件编译结果作为所述工程源码进行整体编译构建的插件编译结果。
步骤207:直接对所述工程源码中的业务插件进行编译。
应用本申请实施例方案,由于不再对业务插件进行全量编译,直接利用远端服务器中保存的插件编译结果,可以大大提高编译工作效率。另外,本申请实施例通过对第一标记信息和第二标记信息的比较,可以准确判断远端服务器102中的插件编译结果是否为自身需要的插件编译结果,保证了工程源码整体编译构建时的准确性。
为了更好地说明本申请实施例方案,下面用其他较佳实施例进行详细描述。图3是本申请实现插件化工程编译的方法实施例二的系统示意图。如图3所示,该系统包括:开发平台本地101、远端服务器102和监控设备106。其中,远端服务器102包括第一远端服务器103、第二远端服务器104、第三远端服务器105。其中,开发平台本地101和上述方法实施例一中的开发平台本地101相同。远端服务器102和方法实施例一中的远端服务器102相同,其中包括三个不同的远端服务器分别保存不同的信息。第一远端服务器103保存业务插件的插件编译结果和对应的第一标记信息;第二远端服务器104保存提供给开发平台本地101需要的工程源码(即:代码仓库);第三远端服务器105保存不稳定依赖信息,不稳定依赖信息可以为业务插件在编译时对应的版本号。本申请实施例二利用三个不同的远端服务器分别保存上述插件编译结果和对应的第一标记信、工程源码、不稳定依赖信息,实际应用中也可以利用同一个远端服务器保存,不作为本申请实施例方案保护范围的限制。
图4是本申请实现插件化工程编译的方法实施例二的流程图。如图4所示,该方法包括:
步骤401:对工程源码中的业务插件进行编译,生成对应的插件编译结果。
本步骤与方法实施例一中的步骤201相同。
步骤402:根据业务插件在工程源码中的位置关系生成第一源码标记。
步骤403:根据业务插件在工程源码的混淆信息生成第一混淆标记,所述混淆信息是所述工程源码进行整体编译构建时用于混淆处理的信息。
步骤404:根据设置的不稳定依赖信息生成第一依赖标记,所述不稳定依赖信息是所述业务插件在编译时对应的版本号。
步骤405:将第一源码标记、第一混淆标记和第一依赖标记组合构成所述第一标记信息。
上述步骤402~步骤405是生成第一标记信息的方法。本申请实施例中,假设第一标记信息由第一源码标记、第一混淆标记和第一依赖标记组合构成。当然,实际应用中,也可以不限于上述三种方式组合,比如由第一源码标记单独构成第一标记信息即可,或者由第一源码标记和第一混淆标记两种组成,或者由第一源码标记和第一依赖标记两种组成,或者添加其他信息共同组成。
其中,
1)第一源码标记可以标识业务插件在工程源码中的位置关系。本领域技术人员知道,工程源码也称为代码仓库,是一个庞大的体系。为了便于识别,通常利用工程名(project)、分支(branch)、分支上最新提交的代码ID(commit-id)、模块(module)、变体(flavor)、构建类型(buildtype)进行标识业务插件位于工程源码中的位置。比如:某个工程源码中业务插件的第一源码标记为bk_android_secondhouse/master/aef3ab/app/beike/debug。其中:
bk_android_secondhouse对应project,表示该业务插件所在的工程名为bk_android_secondhouse;
master对应branch,表示该业务插件属于master分支;
aef3ab对应commit-id,表示该业务插件最新提交的代码ID为aef3ab;
app对应module,表示该业务插件所属的模块为app;
beike对应flavor,表示该业务插件的变体为beike;
debug对应buildtype,表示该业务插件所属的构建类型为debug。
通过上述第一源码标记可以确定编译的业务插件在工程源码中的位置。
2)第一混淆标记可以标识业务插件所在工程源码使用的混淆信息。
工程源码在向外提供时通常是经过整体编译架构后的结果,为了防止反编译带来的风险,通常在编译过程中利用混淆规则将工程源码进行混淆处理。这里所述的混淆规则可以视为所述混淆信息。混淆规则在开发过程中可能会发生变化。比如:为了防止反编译,工程源码中业务插件采用了混淆规则A进行了混淆处理,后续工程源码将混淆规则A更改为混淆规则B。在实际应用中,为了存储或传输方便,还可以将混淆规则进行简化处理,比如计算混淆规则的MD5值,将混淆规则的MD5值作为混淆信息。不管是哪种形式的混淆信息,其目的都是用于工程源码的混淆处理。如果混淆信息发生了变化,这种情况可以理解为工程源码整体编译构建需要的其他相关信息发生了变化,所述其他相关信息就是指用于混淆处理的混淆信息。那么,通过上述第一混淆标记可以确定业务插件所在工程源码的混淆信息。如果后续生成的第二混淆标记和第一混淆标记不符合,可以认为混淆信息已经发生变化。
3)第一依赖标记可以标识设置的不稳定依赖信息。
实际应用中,工程源码中业务插件每次的插件编译结果可能有编译时对应的版本号,该版本号根据不同的编译次序变化,这类编译时相关的变化因素称为不稳定依赖信息。实际应用中,不稳定依赖信息可以为“SNAPSHOT”方式,或者为“+”方式。以“+”方式举例:某个业务插件在第一次编译时的版本号为1.0.0版,在第二次编译时的版本号为1.0.1版,并以此类推。如果工程源码中业务插件事先在编译时依赖的版本号为1.0.1版,而工程源码在整体建议构建时要求1.0.+版本(表示需要当前最新版本)。如果当前最新为1.0.2版本,而插件编译结果为1.0.1版,其依赖的版本号不相同,此时也可以理解为工程源码整体编译构建需要的其他相关信息发生了变化。本申请实施例二中的版本号是一种不稳定依赖信息,实际应用中还可能是其他不稳定依赖信息,此处不再赘述。通过上述第一依赖标记可以确定业务插件所在工程源码的不稳定依赖信息。如果后续生成的第二依赖标记和第一依赖标记不符合,可以认为不稳定依赖已经发生了变化。
本申请实施例二将生成的第一源码标记、第一混淆标记和第一依赖标记组合构成第一标记信息。也就是说,在标记插件编译结果时,不但考虑到业务插件在已有工程中位置关系,还考虑了业务插件所在工程源码的混淆信息以及不稳定依赖信息,可以更加准确地对插件编译结果进行标记。
步骤406:将插件编译结果和对应的第一标记信息关联保存在远端服务器中。
本步骤与上述方法实施例一中的步骤203相同。在本申请方法实施例二中,可以将其保存到第一远端服务器103中。
步骤407:在需要对工程源码进行整体编译构建时,从所述远端服务器获取所述第一标记信息。
本步骤可以由开发平台本地101从第二远端服务器104获取工程源码,从第一远端服务器103获取第一标记信息。
步骤408:根据业务插件在工程源码中当前的位置关系生成第二源码标记。
步骤409:根据业务插件在工程源码中当前的混淆信息生成第二混淆标记。
步骤410:根据当前的不稳定依赖信息生成第二依赖标记。
步骤411:将第二源码标记、第二混淆标记和第二依赖标记组合构成第二标记信息。
上述步骤408~步骤411是生成第二标记信息的方法。其中,步骤408和步骤402相似,步骤409和步骤403相似,其区别在于步骤402和步骤403是利用事先生成业务插件时的工程源码,而步骤408和步骤409是利用当前工程源码,两者可能相同,也可能不相同。另外,第三远端服务器105保存了为工程源码设置的不稳定依赖信息,步骤410可以直接从第三远端服务器105中获取当前的不稳定依赖信息,即获取最新版本号。
步骤412:判断第一标记信息是否符合第二标记信息,如果符合,则执行步骤413;否则,执行步骤414。
实际应用中,可以利用业务插件的路径表示第一源码标记,利用另一个json文件记录第一混淆标记和第一依赖标记,将其共同表示第一标记信息。比如:
bk_android_secondhouse/master/aef3ab/app/beike/debug
metadata.json;
其中,第一行路径表示第一源码标记,第二行的json文件metadata.json记录有第一混淆标记和第一依赖标记。
步骤413:从远端服务器下载第一标记信息对应的插件编译结果,将下载的插件编译结果作为工程源码进行整体编译构建的插件编译结果。
本申请实施例中,可以从第一远端服务器下载插件编译结果。
步骤414:直接对所述工程源码中的业务插件进行编译。
上述步骤412~步骤414与方法实施例一中的步骤205~步骤207相似。可以理解的是,在本申请方法实施例二中,只有满足第一源码标记符合第二源码标记,第一混淆标记符合第二混淆标记,且第一依赖标记符合第二依赖标记的情况下,第一标记信息才符合第二标记信息。进一步地,才能认为第一远端服务器103中保存的插件编译结果可以直接使用,于是将其下载放置于工程源码的宿主中进行整体编译构建。本申请实施例由于不需要每次对业务插件进行全量编译,大大提高整体编译效率,而且由于在标记时不但考虑到业务插件在已有工程中位置关系,还考虑了业务插件所在工程源码的混淆信息以及不稳定依赖信息,避免将不符合工程源码整体编译构建的插件编译结果下载到宿主中,使编译工作更加准确。
实际应用中,开发人员会经常更新业务插件并提交给第二远端服务器104保存。为了及时更新插件编译结果,在另一个较佳实施例中,还可以在步骤406之后进一步监控工程源码中业务插件的变化。如图5所示,监控设备106监控工程源码中业务插件的方法具体包括:
步骤501:监控工程源码中的业务插件的更新情况。
本申请实施例中的工程源码保存在第二远端服务器104中,监控设备106需要对第二远端服务器104中工程源码中的业务插件进行监控。如果开发人员对某个业务插件进行了更新,会将更新后的业务插件保存到第二服务器104中,监控设备106由此会监控到变化的发生。
步骤502:在工程源码中业务插件发生更新的情况下,对更新后的业务插件重新进行编译,生成更新后的插件编译结果。
步骤503:为更新后的插件编译结果重新生成第一标记信息。
步骤504:将更新后的插件编译结果和重新生成的第一标记信息重新关联保存在远端服务器中。
这里,监控设备106监控到业务插件的更新后,会将重新编译后的插件编译结果和第一标记信息保存到第一远端服务器103中。这样,当后续需要对工程源码进行整体编译构建时,会从第一远端服务器103获取到最新的插件编译结果。
本申请实施例还提出一种实现插件化工程编译的系统。图1是本申请实现插件化工程编译的系统实施例一的示意图。如图1所示,该系统包括开发平台本地101和远端服务器102。其中:
开发平台本地101,用于对工程源码中的业务插件进行编译,生成对应的插件编译结果;为所述插件编译结果生成第一标记信息,所述第一标记信息用于标识所述插件编译结果;将所述插件编译结果和对应的第一标记信息关联保存在远端服务器102中;在需要对工程源码进行整体编译构建时,从远端服务器102获取所述第一标记信息,并根据工程源码中业务插件生成第二标记信息;判断所述第一标记信息是否符合所述第二标记信息,如果符合,则从远端服务器102下载第一标记信息对应的插件编译结果,将下载的插件编译结果作为工程源码进行整体编译构建的插件编译结果;否则,直接对工程源码中的业务插件进行编译。
远端服务器102,用于保存所述插件编译结果和对应的第一标记信息。
应用本申请系统实施例一的方案,在需要对工程源码进行整体编译构建时,不再对其中的业务插件进行全量编译,直接利用远端服务器中保存的插件编译结果,可以大大提高编译工作效率。另外,本申请实施例通过对第一标记信息和第二标记信息的比较,可以准确判断远端服务器102中的插件编译结果是否为自身需要的插件编译结果,保证了工程源码整体编译构建时的准确性。
图3是本申请实现插件化工程编译的系统实施例二的示意图。如图3所示,该系统包括开发平台本地101、远端服务器102、监控设备106。其中,远端服务器102包括第一远端服务器103、第二远端服务器104、第三远端服务器105。其中:
开发平台本地101,用于对工程源码中的业务插件进行编译,生成对应的插件编译结果;为所述插件编译结果生成第一标记信息,所述第一标记信息用于标识所述插件编译结果;具体的,将所述插件编译结果和对应的第一标记信息关联保存在第一远端服务器103中;在需要对工程源码进行整体编译构建时,从第一远端服务器103获取所述第一标记信息,并根据工程源码中业务插件生成第二标记信息;判断所述第一标记信息是否符合所述第二标记信息,如果符合,则从第一远端服务器103下载第一标记信息对应的插件编译结果,将下载的插件编译结果作为工程源码进行整体编译构建的插件编译结果;否则,直接对工程源码中的业务插件进行编译。
第一远端服务器103,用于保存所述插件编译结果和对应的第一标记信息。
第二远端服务器103,用于保存工程源码。
第三远端服务器103,用于保存不稳定依赖信息。
进一步地,在开发平台本地101为所述插件编译结果生成第一标记信息时,根据业务插件在工程源码中的位置关系生成第一源码标记;根据业务插件所在工程源码的混淆信息生成第一混淆标记,所述混淆信息是所述工程源码进行整体编译构建时用于混淆处理的信息;根据设置的不稳定依赖信息生成第一依赖标记,不稳定依赖信息是所述业务插件在编译时对应的版本号;将第一源码标记、第一混淆标记和第一依赖标记组合构成所述第一标记信息。
进一步地,开发平台本地101根据工程源码中业务插件生成第二标记信息时,用于根据业务插件在工程源码中当前的位置关系生成第二源码标记;根据业务插件在工程源码当前的混淆信息生成第二混淆标记;根据获取当前的不稳定依赖信息生成第二依赖标记;将所述第二源码标记、第二混淆标记和第二依赖标记组合构成所述第二标记信息。
进一步地,还可以设置监控设备106。具体的:
监控设备106,用于监控保存所述工程源码中业务插件的更新情况;在工程源码中业务插件发生更新的情况下,对更新后的业务插件重新进行编译,生成更新后的插件编译结果;为所述更新后的插件编译结果重新生成第一标记信息;将所述更新后的插件编译结果和重新生成的第一标记信息重新关联保存在远端服务器中。
也就是说,监控设备106可以实时监控第二远端服务器104中工程源码的业务插件更新情况,并在更新后重新编译并保存到第一远端服务器103中。这样,开发平台本地101就可以从中获取到最新的插件编译结果,提高命中率。
在本申请系统实施例二中,不需要每次对业务插件进行全量编译,提高了整体编译效率,而且由于在标记时不但考虑到业务插件在已有工程中位置关系,还考虑了业务插件所在工程源码的混淆信息以及不稳定依赖信息,更为准确地对插件编译结果进行标记,避免了将不符合工程源码整体编译构建的插件编译结果下载到宿主中,使编译工作更加准确。另外,本申请系统实施例二还可以设置一个监控设备106,监控工程源码的更新变化,并实时更新插件编译结果,提高获取相应的插件编译结果的命中率,从而进一步提高编译工作的效率。
本申请实施例还公开一种实现插件化工程编译的装置,即开发平台本地101的具体实施方式。图6是实现插件化工程编译的装置实施例的示意图。如图6所示,该装置包括编译模块601和判别模块602。其中:
编译模块601,用于对工程源码中的业务插件进行编译,生成对应的插件编译结果;为所述插件编译结果生成第一标记信息,所述第一标记信息用于标识所述插件编译结果;将所述插件编译结果和对应的第一标记信息关联保存在远端服务器102中;在需要对工程源码进行整体编译构建时,从远端服务器102获取所述第一标记信息,并根据所述工程源码中业务插件生成第二标记信息。
判别模块602,用于判断所述第一标记信息是否符合所述第二标记信息,如果符合,则从所述远端服务器102下载所述第一标记信息对应的插件编译结果,将下载的插件编译结果作为所述工程源码进行整体编译构建的插件编译结果;否则,直接对所述工程源码中的业务插件进行编译。
应用本申请实施例方案,编译模块601不再对业务插件进行全量编译,直接利用远端服务器102中保存的插件编译结果,可以大大提高编译工作效率。另外,本申请实施例通过对第一标记信息和第二标记信息的比较,可以准确判断远端服务器102中的插件编译结果是否为自身需要的插件编译结果,保证了工程源码整体编译构建时的准确性。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储指令,所述指令在由处理器执行时可执行如上所述实现插件化工程编译的方法中的步骤。实际应用中,所述的计算机可读介质可以是上述实施例各设备/装置/系统所包含的,也可以是单独存在,而未装配入该设备/装置/系统中。其中,在计算机可读存储介质中存储指令,其存储的指令在由处理器执行时可执行如上所述实现插件化工程编译的方法中的步骤。
根据本申请公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件,或者上述的任意合适的组合,但不用于限制本申请保护的范围。在本申请公开的实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
如图7所示,本发明实施例还提供一种电子设备。如图7所示,其示出了本发明实施例所涉及的电子设备的结构示意图,具体来讲:
该电子设备可以包括一个或一个以上处理核心的处理器701、一个或一个以上计算机可读存储介质的存储器702以及存储在存储器上并可在处理器上运行的计算机程序。在执行所述存储器702的程序时,可以实现插件化工程编译的方法。
具体的,实际应用中,该电子设备还可以包括电源704、输入输出单元703等部件。本领域技术人员可以理解,图7中示出的电子设备的结构并不构成对该电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器701是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器702内的软件程序和/或模块,以及调用存储在存储器702内的数据,执行服务器的各种功能和处理数据,从而对该电子设备进行整体监控。
存储器702可用于存储软件程序以及模块,即上述计算机可读存储介质。处理器701通过运行存储在存储器702的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器702可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据服务器的使用所创建的数据等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器702还可以包括存储器控制器,以提供处理器701对存储器702的访问。
该电子设备还包括给各个部件供电的电源704,可以通过电源管理系统与处理器701逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源704还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入输出单元703,该输入输出单元703可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。该输入输出单元703还可以用于显示由用户输入的信息或提供给用户的信息以及各种图像用户接口,这些图形用户接口可以由图形、文本、图标、视频和其任意组合来构成。
本申请附图中的流程图和框图,示出了按照本申请公开的各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或者代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应该注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同附图中所标准的顺序发生。例如,两个连接地表示的方框实际上可以基本并行地执行,它们有时也可以按照相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或者流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,即使这样的组合或结合没有明确记载于本申请中。特别地,在不脱离本申请精神和教导的情况下,本申请的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合,所有这些组合和/或结合均落入本申请公开的范围。
本文中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思路,并不用于限制本申请。对于本领域的技术人员来说,可以依据本发明的思路、精神和原则,在具体实施方式及应用范围上进行改变,其所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (6)

1.一种实现插件化工程编译的方法,其特征在于,该方法包括:
对工程源码中的业务插件进行编译,生成对应的插件编译结果;
为所述插件编译结果生成第一标记信息,所述第一标记信息用于标识所述插件编译结果;所述为插件编译结果生成第一标记信息包括:根据所述业务插件在工程源码中的位置关系生成第一源码标记;根据所述业务插件所在工程源码的混淆信息生成第一混淆标记,所述混淆信息是所述工程源码进行整体编译构建时用于混淆处理的信息;根据设置的不稳定依赖信息生成第一依赖标记,所述不稳定依赖信息是所述业务插件在编译时对应的版本号;将所述第一源码标记、第一混淆标记和第一依赖标记组合构成所述第一标记信息;
将所述插件编译结果和对应的第一标记信息关联保存在远端服务器中;
在需要对工程源码进行整体编译构建时,从所述远端服务器获取所述第一标记信息,并根据所述工程源码中业务插件生成第二标记信息;所述根据工程源码中业务插件生成第二标记信息的步骤包括:根据所述业务插件在所述工程源码中当前的位置关系生成第二源码标记;根据所述业务插件在工程源码当前的混淆信息生成第二混淆标记;根据获取当前的不稳定依赖信息生成第二依赖标记;将所述第二源码标记、第二混淆标记和第二依赖标记组合构成所述第二标记信息;
判断所述第一标记信息是否符合所述第二标记信息,如果符合,则从所述远端服务器下载所述第一标记信息对应的插件编译结果,将下载的插件编译结果作为所述工程源码进行整体编译构建的插件编译结果;否则,直接对所述工程源码中的业务插件进行编译。
2.根据权利要求1所述的方法,其特征在于,所述将插件编译结果和对应的第一标记信息关联保存在远端服务器中的步骤之后,还进一步包括:
监控所述工程源码中业务插件的更新情况;
在所述工程源码中业务插件发生更新的情况下,对更新后的业务插件重新进行编译,生成更新后的插件编译结果;
为所述更新后的插件编译结果重新生成第一标记信息;
将所述更新后的插件编译结果和重新生成的第一标记信息重新关联保存在所述远端服务器中。
3.一种实现插件化工程编译的系统,其特征在于,该系统包括开发平台本地和远端服务器;所述远端服务器包括第一远端服务器、第二远端服务器、第三远端服务器;
所述开发平台本地,用于对工程源码中的业务插件进行编译,生成对应的插件编译结果;为所述插件编译结果生成第一标记信息,所述第一标记信息用于标识所述插件编译结果;所述生成第一标记信息时,用于根据所述业务插件在工程源码中的位置关系生成第一源码标记;根据所述业务插件所在工程源码的混淆信息生成第一混淆标记,所述混淆信息是所述工程源码进行整体编译构建时用于混淆处理的信息;根据设置的不稳定依赖信息生成第一依赖标记,所述不稳定依赖信息是所述业务插件在编译时对应的版本号;将所述第一源码标记、第一混淆标记和第一依赖标记组合构成所述第一标记信息;将所述插件编译结果和对应的第一标记信息关联保存在远端服务器中;在需要对工程源码进行整体编译构建时,从所述远端服务器获取所述第一标记信息,并根据所述工程源码中业务插件生成第二标记信息;生成第二标记信息时,用于根据所述业务插件在所述工程源码中当前的位置关系生成第二源码标记;根据所述业务插件在工程源码当前的混淆信息生成第二混淆标记;根据获取当前的不稳定依赖信息生成第二依赖标记;将所述第二源码标记、第二混淆标记和第二依赖标记组合构成所述第二标记信息;判断所述第一标记信息是否符合所述第二标记信息,如果符合,则从所述远端服务器下载所述第一标记信息对应的插件编译结果,将下载的插件编译结果作为所述工程源码进行整体编译构建的插件编译结果;否则,直接对所述工程源码中的业务插件进行编译;
所述第一远端服务器,用于保存所述插件编译结果和对应的第一标记信息;
所述第二远端服务器,用于保存工程源码;
所述第三远端服务器,用于保存不稳定依赖信息。
4.根据权利要求3所述的系统,其特征在于,该系统进一步包括监控设备;
所述监控设备,用于监控所述工程源码中业务插件的更新情况;在所述工程源码中业务插件发生更新的情况下,对更新后的业务插件重新进行编译,生成更新后的插件编译结果;为所述更新后的插件编译结果重新生成第一标记信息;将所述更新后的插件编译结果和重新生成的第一标记信息重新关联保存在所述远端服务器中。
5.一种实现插件化工程编译的装置,其特征在于,该装置包括:
编译模块,用于对工程源码中的业务插件进行编译,生成对应的插件编译结果;为所述插件编译结果生成第一标记信息,所述第一标记信息用于标识所述插件编译结果;所述生成第一标记信息时,用于根据所述业务插件在工程源码中的位置关系生成第一源码标记;根据所述业务插件所在工程源码的混淆信息生成第一混淆标记,所述混淆信息是所述工程源码进行整体编译构建时用于混淆处理的信息;根据设置的不稳定依赖信息生成第一依赖标记,所述不稳定依赖信息是所述业务插件在编译时对应的版本号;将所述第一源码标记、第一混淆标记和第一依赖标记组合构成所述第一标记信息;将所述插件编译结果和对应的第一标记信息关联保存在远端服务器中;在需要对工程源码进行整体编译构建时,从所述远端服务器获取所述第一标记信息,并根据所述工程源码中业务插件生成第二标记信息;生成第二标记信息时,用于根据所述业务插件在所述工程源码中当前的位置关系生成第二源码标记;根据所述业务插件在工程源码当前的混淆信息生成第二混淆标记;根据获取当前的不稳定依赖信息生成第二依赖标记;将所述第二源码标记、第二混淆标记和第二依赖标记组合构成所述第二标记信息;
判别模块,用于判断所述第一标记信息是否符合所述第二标记信息,如果符合,则从所述远端服务器下载所述第一标记信息对应的插件编译结果,将下载的插件编译结果作为所述工程源码进行整体编译构建的插件编译结果;否则,直接对所述工程源码中的业务插件进行编译。
6.一种计算机可读存储介质,其上存储有计算机指令,其特征在于,所述指令被处理器执行时可实现权利要求1或2所述实现插件化工程编译的方法。
CN202010427756.XA 2020-05-19 2020-05-19 一种插件化工程编译的方法、系统、装置和存储介质 Active CN111638884B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010427756.XA CN111638884B (zh) 2020-05-19 2020-05-19 一种插件化工程编译的方法、系统、装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010427756.XA CN111638884B (zh) 2020-05-19 2020-05-19 一种插件化工程编译的方法、系统、装置和存储介质

Publications (2)

Publication Number Publication Date
CN111638884A CN111638884A (zh) 2020-09-08
CN111638884B true CN111638884B (zh) 2021-07-23

Family

ID=72331984

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010427756.XA Active CN111638884B (zh) 2020-05-19 2020-05-19 一种插件化工程编译的方法、系统、装置和存储介质

Country Status (1)

Country Link
CN (1) CN111638884B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112732314A (zh) * 2020-12-30 2021-04-30 北京一亩田新农网络科技有限公司 基于android插件化差分打包方法、装置、电子设备及计算机可读介质
CN112882718B (zh) * 2021-02-26 2024-03-01 百果园技术(新加坡)有限公司 编译处理方法、装置、设备及存储介质
CN113031965B (zh) * 2021-04-23 2024-08-16 上海数禾信息科技有限公司 应用程序业务工程编译方法、装置、设备和存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107577469A (zh) * 2017-08-21 2018-01-12 厦门悦讯教育科技有限公司 一种软件打包发布管理方法
CN108279904A (zh) * 2017-12-26 2018-07-13 努比亚技术有限公司 代码编译方法及终端
CN110990019A (zh) * 2019-11-20 2020-04-10 腾讯音乐娱乐科技(深圳)有限公司 一种Java类分析方法、装置、存储介质及电子设备
CN111124420A (zh) * 2019-12-19 2020-05-08 北京百度网讯科技有限公司 编译方法、装置、电子设备及可读存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2159732A1 (en) * 2008-08-21 2010-03-03 Thomson Licensing Method and device for code obfuscation

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107577469A (zh) * 2017-08-21 2018-01-12 厦门悦讯教育科技有限公司 一种软件打包发布管理方法
CN108279904A (zh) * 2017-12-26 2018-07-13 努比亚技术有限公司 代码编译方法及终端
CN110990019A (zh) * 2019-11-20 2020-04-10 腾讯音乐娱乐科技(深圳)有限公司 一种Java类分析方法、装置、存储介质及电子设备
CN111124420A (zh) * 2019-12-19 2020-05-08 北京百度网讯科技有限公司 编译方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN111638884A (zh) 2020-09-08

Similar Documents

Publication Publication Date Title
CN111638884B (zh) 一种插件化工程编译的方法、系统、装置和存储介质
US20200192658A1 (en) Identifying versions of running programs using signatures derived from object files
CN109918285B (zh) 一种开源软件的安全识别方法及装置
US9063819B2 (en) Extensible patch management
US20170169223A1 (en) Detection system and method thereof
US8819644B2 (en) Selective data flow analysis of bounded regions of computer software applications
CN110990019B (zh) 一种Java类分析方法、装置、存储介质及电子设备
CN111090433A (zh) 一种数据处理的方法、装置和存储介质
CN102681835A (zh) 代码克隆通知以及体系结构改变可视化
Leino et al. Fine-grained caching of verification results
CN102707999A (zh) 利用成功的问题解决的应用兼容性
CN104471557A (zh) 动态语言的优化执行
US20120054728A1 (en) Maintaining a database of patch data
CN113342323B (zh) 软件在线开发的方法及装置
CN115686631B (zh) 一种基于知识基的随机指令生成方法、装置及存储介质
CN112052461B (zh) 一种基于指令注入的代码处理方法、终端及存储介质
CN113110865A (zh) 一种服务器热更新方法及装置
CN111966382A (zh) 机器学习模型的在线部署方法、装置及相关设备
CN113961226A (zh) 一种软件开发工具包修复方法、终端、服务器及设备
CN111105289B (zh) 一种基于aop方式的客户端订单取消判断方法及装置
CN110688320A (zh) 全局变量的检测方法、装置及终端设备
CN110737438A (zh) 一种数据处理方法和装置
CN115904387A (zh) 程序模块编译方法、计算机设备和程序产品
CN117667643A (zh) 测试用例集的演化方法、装置、计算设备集群及存储介质
CN116128433A (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
TA01 Transfer of patent application right

Effective date of registration: 20201027

Address after: 100085 Floor 102-1, Building No. 35, West Second Banner Road, Haidian District, Beijing

Applicant after: Seashell Housing (Beijing) Technology Co.,Ltd.

Address before: 300 280 Tianjin Economic and Technological Development Zone Nangang Industrial Zone Office Building C Block 1, Room 112, Unit 05

Applicant before: BEIKE TECHNOLOGY Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant