CN111309335B - 插件应用的编译方法、装置及计算机可读存储介质 - Google Patents
插件应用的编译方法、装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN111309335B CN111309335B CN202010130814.2A CN202010130814A CN111309335B CN 111309335 B CN111309335 B CN 111309335B CN 202010130814 A CN202010130814 A CN 202010130814A CN 111309335 B CN111309335 B CN 111309335B
- Authority
- CN
- China
- Prior art keywords
- file
- target
- class
- information
- resource
- 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
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例公开了一种插件应用的编译方法、装置及计算机可读存储介质。该方案从目标工程的归档文件中确定出目标归档文件;解析目标归档文件,得到目标类信息和目标资源文件信息;对目标工程进行资源编译得到第一编译文件集合,并根据目标资源文件信息对其过滤处理得到第二编译文件集合;对目标工程对应进行代码编译得到第一类文件集合,并对其过滤处理得到第二类文件集合;将第二编译文件集合以及第二类文件集合打包处理,生成目标工程的插件程序包,实现了移除掉目标归档文件包含的类和资源文件,使得目标归档文件只参与编译过程,而不参与打包过程,能够避免生成的插件程序包在运行时出现类文件或者资源文件的依赖冲突。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种插件应用的编译方法、装置及计算机可读存储介质。
背景技术
在Android插件化开发中,为了拓展自身功能,插件工程通常会引用某些第三方AAR进行开发,但是如果插件工程中的一些AAR也被宿主应用引用的话,会导致生成的插件程序包在进行插件化运行时,容易出现类文件或者资源文件的依赖冲突。
发明内容
本发明实施例提供一种插件应用的编译方法、装置及计算机可读存储介质,旨在避免插件化编译生成的插件程序包在运行时出现类文件或者资源文件的依赖冲突。
本发明实施例提供一种插件应用的编译方法,包括:
从目标工程对应的归档文件中确定出目标归档文件;
解析所述目标归档文件,得到目标类信息和目标资源文件信息;
对所述目标工程对应的归档文件进行资源编译,得到第一编译文件集合,并根据所述目标资源文件信息对所述第一编译文件集合进行过滤处理,得到第二编译文件集合;
对所述目标工程对应的归档文件进行代码编译,得到第一类文件集合,并根据所述目标类信息对所述第一类文件集合过滤处理,得到第二类文件集合;
将所述第二编译文件集合中的资源文件以及所述第二类文件集合中的类文件打包处理,生成所述目标工程的插件程序包。
本发明实施例还提供一种插件应用的编译装置,包括:
文件确定单元,用于从目标工程对应的归档文件中确定出目标归档文件;
文件解析单元,用于解析所述目标归档文件,得到目标类信息和目标资源文件信息;
资源编译单元,用于对所述目标工程对应的归档文件进行资源编译,得到第一编译文件集合,并根据所述目标资源文件信息对所述第一编译文件集合进行过滤处理,得到第二编译文件集合;
代码编译单元,用于对所述目标工程对应的归档文件进行代码编译,得到第一类文件集合,并根据所述目标类信息对所述第一类文件集合过滤处理,得到第二类文件集合;
文件打包单元,用于将所述第二编译文件集合中的资源文件以及所述第二类文件集合中的类文件打包处理,生成所述目标工程的插件程序包。
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行本发明实施例所提供的任一插件应用的编译方法。
本发明实施例提供的插件应用的编译方案,在进行插件化开发时,从目标工程对应的归档文件中确定出目标归档文件,解析该目标归档文件,得到目标类信息和目标资源文件信息,对全部的归档文件进行资源编译,即目标工程的所有归档文件都参与到资源编译中,然后再根据目标资源文件信息对资源编译得到第一编译文件集合进行过滤处理,接下来,使目标工程的所有归档文件都参与代码编译,得到第一类文件集合,再根据目标类信息对第一类文件集合过滤,对经过过滤处理得到的第二编译文件集合和第二类文件集合进行打包处理,得到目标工程的插件程序包。通过上述方案,在满足插件工程正常编译的同时,使得最终生成的插件程序包中不包含有需要排除的目标归档文件中的资源和代码,能够避免生成的插件程序包在运行时出现类文件或者资源文件的依赖冲突。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的插件应用的编译方法的第一流程示意图;
图2a是本发明实施例提供的插件应用的编译方法的第二流程示意图;
图2b是本发明实施例提供的插件应用的编译方法的应用场景示意图;
图3a是本发明实施例提供的插件应用的编译装置的第一种结构示意图;
图3b是本发明实施例提供的插件应用的编译装置的第二种结构示意图;
图4是本发明实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明实施例提供一种插件应用的编译方法,该插件应用的编译方法的执行主体可以是本发明实施例提供的插件应用的编译装置,或者集成了该插件应用的编译装置的电子设备,其中该插件应用的编译装置可以采用硬件或者软件的方式实现。其中,电子设备可以是智能手机、平板电脑、掌上电脑、笔记本电脑、或者台式电脑等设备。
请参阅图1,图1是本发明实施例提供的插件应用的编译方法的第一流程示意图。该插件应用的编译方法的具体流程可以如下:
101、从目标工程对应的归档文件中确定出目标归档文件。
需要说明的是,本申请实施例的方案可以应用于插件化开发中。其中,插件化是指在安卓设备中免安装运行APK(Android Package,安卓安装包)的一种机制,插件化技术的特点是无需单独安装APK,即可运行,即插即用,无需升级宿主应用,减少app的更新频率。在插件化开发中,插件工程通常会引用一些第三方AAR(Android Archive,Android库项目的二进制归档文件),以拓展自身功能。但是,插件工程引用的第三方AAR有可能会被宿主应用所引用,为了避免插件工程在运行时出现类文件或者资源文件的依赖冲突,通过本申请实施例提供的方案可以在插件工程的编译过程中,可以使得指定的AAR只参与工程的编译,而不参与最终的打包过程,也就是说,能够在生成的插件APK(即插件程序包)中移除掉用户指定的AAR所包含的类和资源文件。下文中的归档文件可以是二进制归档文件,即AAR。
基于此,在进行插件化开发之前,需要用户预先确定有哪些AAR既被插件工程所引用,又被宿主应用引用。例如,开发人员预先配置好待排除的归档文件的多个预设坐标元素项的具体坐标元素值,通过这些具体的坐标值来定义哪些AAR需要进行排除。例如,在一些实施例中,预设坐标元素项至少包括以下两项:组织标识(Groupid)和项目标识(artifactid)。可以预先构建一个excludeAAR集合,开发人员预先配置需要排除的目标归档文件的Groupid和artifactid的值,将这些Groupid和artifactid的值存储至预先构建的excludeAAR集合。
例如,开发人员指定需要从目标工程中排除的AAR文件的groupid与artifactid的值,假设要排除的某AAR文件的groupid为“com.test”,artifactid为“my-aar”时,则输入“com.test:my-aar”;按照这样的格式获取全部待排除AAR文件的groupid与artifactid的值,作为预设坐标元素值,并存储至excludeAAR集合。
当用户触发对目标工程的编译指令后,电子设备获取该目标工程的全部归档文件,并遍历全部归档文件,获取每一个归档文件的groupid与artifactid的值,将每一归档文件的groupid与artifactid的值与预设坐标元素值进行对比,以从全部归档文件中确定出待排除的归档文件,作为目标归档文件。
可以理解的是,待排除的归档文件可以是一个或者多个。并且上述预设坐标元素项为举例说明,在其他实施例中,还可以根据需要设置其他的坐标元素项作为预设坐标元素项,只要根据预设坐标元素项的值能够识别出特定的归档文件即可。
在一些实施例中,“从目标工程对应的归档文件中确定出目标归档文件”可以包括:确定目标工程,从远程仓库中获取所述目标工程对应的归档文件;遍历所述归档文件,以确定出预设坐标元素项的坐标元素值等于所述预设坐标元素值的归档文件,作为目标归档文件。
例如,确定目标工程,从远程仓库中获取目标工程对应的归档文件,并存储至缓存目录;获取每一归档文件的路径信息;根据路径信息,遍历缓存目录中的归档文件,以确定出预设坐标元素项的坐标元素值等于预设坐标元素值的归档文件,作为目标归档文件。
目标工程的全部归档文件可以存储在远程maven服务器中,在确定目标工程并对该工程进行编译时,可以根据该目标工程的名称、编号等标识信息从远程maven服务器中下载该目标工程对应的全部归档文件,并存储至电子设备的缓存目录中。在下载时,记录每一个归档文件在缓存目录中的路径信息,然后,根据路径信息遍历缓存目录中的归档文件,获取每一个归档文件的groupid信息、artifactid信息,对于每一归档文件的groupid的值、以及artifactid的值,判断是否位于excludeAAR集合中,若是,则说明该groupid的值、artifactid的值对应的归档文件为要移除的目标归档文件。
102、解析目标归档文件,得到目标类信息和目标资源文件信息。
在从目标工程的全部归档文件中确定出目标归档文件后,对目标归档文件进行解析,得到每一个目标归档文件中包含的目标类信息和目标资源文件信息。
例如,在一些实施例中,“解析目标归档文件,得到目标类信息和目标资源文件信息”可以包括:解压目标归档文件,得到文件目录;从文件目录中确定出类文件目录,并从类文件目录中获取目标类信息;从文件目录中确定出资源文件目录,并从资源文件目录中获取目标资源文件信息。
对于每一个目标AAR文件,解压AAR文件到temp目录(临时目录)中,确定类文件所在的类文件目录,以及资源文件所在的资源文件目录。从类文件目录中获取目标类信息,例如,目标类信息可以是temp目录中的类文件的包名和类名。从资源文件目录中获取目标资源文件信息,例如,目标资源文件信息可以是资源文件的相对路径或者xml文件的节点信息等。
在一些实施例中,“从文件目录中确定类文件目录,并从类文件目录中获取目标类信息”可以包括:从文件目录中确定类文件目录;解析类文件目录中的类文件,得到类文件的包名和类名;解析类文件目录中的信息描述文件,得到资源索引类名称;将包名、类名和资源索引类名称作为目标类信息。
该实施例中,收集temp目录中classes.jar内所有class文件的包名+类名,包名与类名拼接在一起可以用来唯一确定一个类文件,例如,将某class文件的包名和类名拼接在一起,可以得到“com.test.home.Main.class”。此外,获取类文件目录中的信息描述文件AndroidManifest.xml,对该文件进行解析得到资源索引类名称,例如,“包名/R.class”、“包名/R$attr.class”等。通过上述文件解析获取到的包名+类名、资源索引类名称等都可以作为该类文件对应的目标类信息,按照这样的方式,可以得到每一个目标归档文件的目标类信息。
在一些实施例中,“从文件目录中确定出资源文件目录,并从资源文件目录中获取目标资源文件信息”可以包括:从文件目录中确定出资源文件目录;获取资源文件目录中资源文件的相对路径和xml文件的节点信息,将相对路径和节点信息作为目标资源文件信息。
该实施例中,在确定资源文件目录,即res目录后,遍历temp目录中的res目录,获取res目录中每一资源文件的相对路径(res/xxx)。如果资源文件为values.xml文件,则解析该xml文件,得到每一个节点的节点信息,对于一个目标归档文件来说,将该归档文件对应的相对路径(res/xxx)和xml文件的节点信息作为其资源文件信息。
103、对目标工程对应的归档文件进行资源编译,得到第一编译文件集合,并根据目标资源文件信息对第一编译文件集合进行过滤处理,得到第二编译文件集合。
接下来对目标工程进行编译,先基于该目标工程的全部归档文件进行资源编译,得到第一编译文件集合。具体地,在资源编译任务完成后,获取原始资源编译输出目录,该输出目录下的全部文件构成第一编译文件集合。将该第一编译文件集合中属于目标资源文件信息对应的资源文件删除,则得到第二编译文件集合。
在一些实施例中,“根据目标资源文件信息对第一编译文件集合进行过滤处理,得到第二编译文件集合”可以包括:遍历第一编译文件集合中的文件;当访问到的文件为values.xml文件且所述values.xml文件的节点信息属于所述目标资源文件信息时,删除所述values.xml文件;当访问到的文件不为values.xml文件且访问到的文件的相对路径属于所述目标资源文件信息时,删除访问到的文件;将经过删除操作后,第一编译文件集合中剩余的文件,构成第二编译文件集合。
该实施例中,遍历原始资源编译输出目录中的文件,若文件为values.xml文件,则使用XmlSlurper将其加载到内存中,遍历每一个xml节点,若该节点属于目标资源文件信息,则移除该节点。若文件不为values.xml文件,且该文件的相对路径属于目标资源文件信息,则删除该文件。经过删除操作后,剩余的文件构成第二编译文件集合。
104、对目标工程对应的归档文件进行代码编译,得到第一类文件集合,并根据目标类信息对第一类文件集合过滤处理,得到第二类文件集合。
接下来,基于该目标工程的全部归档文件进行代码编译,生成并收集所有class文件,构成第一类文件集合。将该第一类文件集合中属于目标类文件信息对应的类文件删除,则得到第二类文件集合。
例如,在一些实施例中,“根据目标类信息对第一类文件集合过滤处理,得到第二类文件集合”可以包括:遍历第一类文件集合中的文件;当访问到的文件为class文件且所述class文件的信息属于所述目标类信息时,将所述class文件删除;当访问到的文件为jar包且所述jar包中包含有class文件的信息属于所述目标类信息时,将所述jar包删除;将经过删除操作处理后,第一类文件集合中剩余的文件,构成第二类文件集合。
该实施例中,可以通过一个自定义的转换工具,来对第一类文件集合进行过滤处理,将第一类文件集合中的每一类文件(包括class文件和jar包)输入到该转换工具中,由该转换工具解析输入的文件。其中,如果输入的是class文件、且该class文件的信息属于目标类信息,则删除该class文件,否则,在第二类文件集合中保留该class文件。如果输入的是jar包,则解析获取jar中所有class文件,只有在jar包中的所有class文件都不属于目标类信息时,才保留jar包到第二类文件集合中,否则,删除该jar包。
105、将第二编译文件集合中的资源文件以及第二类文件集合中的类文件打包处理,生成目标工程的插件程序包。
在进行过滤处理的,得到第二编译文件集合和第二类文件集合后,对这些集合中的文件进行打包处理,得到最终的插件程序包。
在一些实施例中,“将第二编译文件集合中的资源文件以及第二类文件集合中的类文件打包处理,生成目标工程的插件程序包”可以包括:根据dex编译器对第二类文件集合中的类文件进行编译,得到dex文件;将dex文件与第二编译文件集合中的资源文件进行打包处理,生成目标工程的插件程序包。
该实施例中,可以先使用dex编译器对第二类文件集合中的类文件进行编译,得到dex文件,再将dex文件与第二编译文件集合中的资源文件进行打包处理,输出最终APK,该APK不包含指定AAR的资源和代码。
此外,需要说明的是,本申请的方案可以应用于项目构建工具中,例如gradle(一种项目构建开源工具)。本方案可以封装成一个Gradle插件提供给用户使用,用户只需要在使用该插件时,配置好指定要从目标工程中排除的AAR的groupid与artifactid两项的值,即可实现指定的AAR只参与编译过程而不参与最终APK打包过程这一功能。
具体实施时,本申请不受所描述的各个步骤的执行顺序的限制,在不产生冲突的情况下,某些步骤还可以采用其它顺序进行或者同时进行。
由上可知,本发明实施例提出的插件应用的编译方法,在进行插件化开发时,从目标工程对应的归档文件中确定出目标归档文件,解析该目标归档文件,得到目标类信息和目标资源文件信息,对全部的归档文件进行资源编译,即目标工程的所有归档文件都参与到资源编译中,然后再根据目标资源文件信息对资源编译得到第一编译文件集合进行过滤处理,接下来,使目标工程的所有归档文件都参与代码编译,得到第一类文件集合,再根据目标类信息对第一类文件集合过滤,对经过过滤处理得到的第二编译文件集合和第二类文件集合进行打包处理,得到目标工程的插件程序包。通过上述方案,在满足插件工程正常编译的同时,不仅使得最终生成的插件程序包中不包含有需要排除的目标归档文件中的资源和代码,能够避免生成的插件程序包在运行时出现类文件或者资源文件的依赖冲突;而且能够减小插件程序包的体积,节省用户流量。
根据前面实施例所描述的方法,以下将举例作进一步详细说明。
请参阅图2a,图2a是本发明实施例提供的插件应用的编译方法的第二流程示意图。方法包括:
201、获取预设坐标元素值。
请参阅图2b,图2b是本发明实施例提供的插件应用的编译方法的应用场景示意图。
开发人员预先配置需要排除的目标归档文件的Groupid和artifactid的值,将这些Groupid和artifactid的值存储至预先构建的excludeAAR集合(待排除归档文件集合)。
202、根据预设坐标元素值,从目标工程对应的归档文件中确定出目标归档文件。
当用户触发对目标工程的编译指令后,电子设备从远程maven服务器下载目标工程引用的所有AAR到本地缓存目录。在下载完成后,获取所有AAR文件的groupid信息、artifactid信息以及路径信息,保存到localAARFiles集合(本地归档文件集合)中。
电子设备遍历本地归档文件集合中的全部归档文件,获取每一个归档文件的groupid与artifactid的值,将每一归档文件的groupid与artifactid的值与预设坐标元素值进行对比,以从全部归档文件中确定出待排除的归档文件,作为目标归档文件。例如,遍历本地归档文件集合,若本地归档文件集合中某AAR文件的项groupid信息、artifactid信息被包含在待排除归档文件集合中,说明该AAR文件为目标AAR,则将该AAR文件的信息保存到excludeLocalAARFiles集合(待排除的本地归档文件集合)中。
203、解压目标归档文件,得到文件目录。
204、解析目标归档文件,得到目标类信息和目标资源文件信息。
解压目标归档文件到目录temp中。
收集temp目录中classes.jar内所有class文件的包名+类名,包名+类名拼接在一起可以用来唯一确定一个class,组成类似于“com.test.home.Main.class”的字符串后,加入到excludeClasses集合(待排除类集合)中。
解析temp目录中的AndroidManifest.xml文件,获取manifest节点的package属性值,得到该AAR的包名(如"com.test"),进一步拼接,会得到“包名/R.cl ass”等资源索引类的名称。将“包名/R.class”、“包名/R$attr.class”等资源索引类的名称加入到excludeClasses集合中。
遍历中间目录temp中的res目录,收集所有资源文件的相对路径(res/xxx)到一个excludeDrawables集合中;若资源文件为values.xml文件,则解析该xml文件,将每一个节点的信息加入到excludeValues集合中。
其中,excludeDrawables集合中保存的是可视化资源文件的信息,excludeValues集合中保存的是字符串、颜色、尺寸、类型、主题等资源文件的信息。excludeDrawables集合和excludeValues集合中的信息构成目标资源文件信息。
205、对目标工程对应的归档文件进行资源编译,得到原始资源编译输出目录。
在得到目标类信息和目标资源信息后,基于目标工程的全部归档文件进行资源编译,得到原始资源编译输出目录。
206、根据目标资源文件信息对原始资源编译输出目录进行过滤处理,得到新的资源编译输出目录。
遍历原始资源编译输出目录中的文件,若文件为values.xml文件,则使用XmlSlurper将其加载到内存中,遍历每一个xml节点,若该节点存在于excludeValues集合,则移除该xml节点,遍历完成后,使用XmlNodePrinter把内存中的新xml内容写入到原来的values.xml中,得到新的values.xml。若文件不为values.xml文件,则判断该文件的相对路径在集合excludeDrawables中是否存在,若存在,则删除该文件。经过上述过滤操作后,得到一个新的资源编译输出目录。其中,XmlSlurper和XmlNodePrinter均为xml文件分析工具。
207、对目标工程对应的归档文件进行代码编译,得到第一类文件集合。
208、基于预设转换器和目标类信息对第一类文件集合进行过滤处理,得到第二类文件集合。
遍历第一类文件集合中的文件,若class文件的信息属于目标信息,则删除该class文件,若jar包中有class文件的信息属于目标类信息,则删除jar包。
接下来,基于该目标工程的全部归档文件进行代码编译,生成并收集所有类文件,构成第一类文件集合,将这些类文件输入预设转换器。其中,预设转换器可以是一个自定义Transform,例如图2b中所示的ExcludeClassTransform。
若ExcludeClassTransform输入的为一个class文件,则判断该class文件是否在excludeClasses集合中,不存在才被添加到过滤后的类文件集合中;若输入的为一个jar包,则获取并解析jar包中所有class文件,若jar中所有class文件都不在excludeClasses集合中,才将该jar包包含的所有class文件拷贝到过滤后的类文件集合中。通过这样的方式实现对第一类文件集合中的文件进行过滤,过滤后的类文件集合为第二类文件集合。
209、根据dex编译器对第二类文件集合中的类文件进行编译,得到dex文件。
210、将dex文件与第二编译文件集合中的资源文件进行打包处理,生成目标工程的插件程序包。
先使用dex编译器对第二类文件集合中的类文件进行编译,得到dex文件,再将dex文件与第二编译文件集合中的资源文件进行打包处理,输出最终APK,该APK不包含指定AAR的资源和代码。
由上可知,本发明实施例提出的插件应用的编译方法,在满足插件工程正常编译的同时,不仅使得最终生成的插件程序包中不包含有需要排除的目标归档文件中的资源和代码,能够避免生成的插件程序包在运行时出现类文件或者资源文件的依赖冲突;而且能够减小插件程序包的体积,节省用户流量。
为了实施以上方法,本发明实施例还提供一种插件应用的编译装置,该插件应用的编译装置具体可以集成在终端设备如手机、平板电脑等设备中。
例如,请参阅图3a,图3a是本发明实施例提供的插件应用的编译装置的第一种结构示意图。该插件应用的编译装置可以包括文件确定单元301、文件解析单元302、资源编译单元303、代码编译单元304以及文件打包单元305,如下:
文件确定单元301,用于从目标工程对应的归档文件中确定出目标归档文件;
文件解析单元302,用于解析所述目标归档文件,得到目标类信息和目标资源文件信息;
资源编译单元303,用于对所述目标工程对应的归档文件进行资源编译,得到第一编译文件集合,并根据所述目标资源文件信息对所述第一编译文件集合进行过滤处理,得到第二编译文件集合;
代码编译单元304,用于对所述目标工程对应的归档文件进行代码编译,得到第一类文件集合,并根据所述目标类信息对所述第一类文件集合过滤处理,得到第二类文件集合;
文件打包单元305,用于将所述第二编译文件集合中的资源文件以及所述第二类文件集合中的类文件打包处理,生成所述目标工程的插件程序包。
请参阅图3b,图3b是本发明实施例提供的插件应用的编译装置的第二种结构示意图。在一些实施例中,文件确定单元301包括:
文件获取子单元3011,用于确定目标工程,从远程仓库中获取所述目标工程对应的归档文件;
信息获取子单元3012,用于获取每一所述归档文件的路径信息;
文件确定子单元3013,用于遍历所述归档文件,以确定出预设坐标元素项的坐标元素值等于所述预设坐标元素值的归档文件,作为目标归档文件。
在一些实施例中,文件解析单元302还用于:解压所述目标归档文件,得到文件目录;
从所述文件目录中确定出类文件目录,并从所述类文件目录中获取目标类信息;
从所述文件目录中确定出资源文件目录,并从所述资源文件目录中获取目标资源文件信息。
在一些实施例中,文件解析单元302还用于:从所述文件目录中确定类文件目录;
解析所述类文件目录中的类文件,得到所述类文件的包名和类名;
解析所述类文件目录中的信息描述文件,得到资源索引类名称;
将所述包名、类名和资源索引类名称作为所述目标类信息。
在一些实施例中,代码编译单元304还用于:遍历所述第一类文件集合中的文件;
当访问到的文件为class文件且所述class文件的信息属于所述目标类信息时,将所述class文件删除;
当访问到的文件为jar包且所述jar包中包含有class文件的信息属于所述目标类信息时,将所述jar包删除;
将经过删除操作处理后,所述第一类文件集合中剩余的文件,构成第二类文件集合。
在一些实施例中,文件解析单元302还用于:从所述文件目录中确定出资源文件目录;
获取所述资源文件目录中资源文件的相对路径和xml文件的节点信息,将所述相对路径和所述节点信息作为目标资源文件信息。
在一些实施例中,资源编译单元303还用于:遍历所述第一编译文件集合中的文件;
当访问到的文件为values.xml文件且所述values.xml文件的节点信息属于所述目标资源文件信息时,删除所述values.xml文件;
当访问到的文件不为values.xml文件且访问到的文件的相对路径属于所述目标资源文件信息时,删除访问到的文件;
将经过删除操作后,所述第一编译文件集合中剩余的文件,构成第二编译文件集合。
在一些实施例中,文件打包单元305还用于:根据dex编译器对所述第二类文件集合中的类文件进行编译,得到dex文件;
将所述dex文件与所述第二编译文件集合中的资源文件进行打包处理,生成所述目标工程的插件程序包。
具体实施时,以上各个单元可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元的具体实施可参见前面的方法实施例,在此不再赘述。
应当说明的是,本发明实施例提供的插件应用的编译装置与上文实施例中的插件应用的编译方法属于同一构思,在插件应用的编译装置上可以运行插件应用的编译方法实施例中提供的任一方法,其具体实现过程详见插件应用的编译方法实施例,此处不再赘述。
本发明实施例提出的插件应用的编译装置,在进行插件化开发时,文件确定单元301从目标工程对应的归档文件中确定出目标归档文件,文件解析单元302解析该目标归档文件,得到目标类信息和目标资源文件信息,资源编译单元303对全部的归档文件进行资源编译,即目标工程的所有归档文件都参与到资源编译中,然后再根据目标资源文件信息对资源编译得到第一编译文件集合进行过滤处理,接下来,代码编译单元304使目标工程的所有归档文件都参与代码编译,得到第一类文件集合,再根据目标类信息对第一类文件集合过滤,文件打包单元305对经过过滤处理得到的第二编译文件集合和第二类文件集合进行打包处理,得到目标工程的插件程序包。通过上述方案,在满足插件工程正常编译的同时,使得最终生成的插件程序包中不包含有需要排除的目标归档文件中的资源和代码,能够避免生成的插件程序包在运行时出现类文件或者资源文件的依赖冲突。
本发明实施例还提供一种电子设备,请参阅图4,图4是本发明实施例提供的电子设备的结构示意图。具体来讲:
该电子设备可以包括一个或者一个以上处理核心的处理器401、一个或一个以上计算机可读存储介质的存储器402、电源403和输入单元404等部件。本领域技术人员可以理解,图4中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器401是该电子设备的控制中心,利用各种接口和线路连接整个电子设备的各个部分,通过运行或执行存储在存储器402内的软件程序和/或模块,以及调用存储在存储器402内的数据,执行电子设备的各种功能和处理数据,从而对电子设备进行整体监测。可选的,处理器401可包括一个或多个处理核心;优选的,处理器401可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器401中。
存储器402可用于存储软件程序以及模块,处理器401通过运行存储在存储器402的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器402可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据电子设备的使用所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器402还可以包括存储器控制器,以提供处理器401对存储器402的访问。
电子设备还包括给各个部件供电的电源403,优选的,电源403可以通过电源管理系统与处理器401逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源403还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该电子设备还可包括输入单元404,该输入单元404可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管图中未示出,电子设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,电子设备中的处理器401会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器402中,并由处理器401来运行存储在存储器402中的应用程序,从而实现各种功能,如下:
从目标工程对应的归档文件中确定出目标归档文件;
解析所述目标归档文件,得到目标类信息和目标资源文件信息;
对所述目标工程对应的归档文件进行资源编译,得到第一编译文件集合,并根据所述目标资源文件信息对所述第一编译文件集合进行过滤处理,得到第二编译文件集合;
对所述目标工程对应的归档文件进行代码编译,得到第一类文件集合,并根据所述目标类信息对所述第一类文件集合过滤处理,得到第二类文件集合;
将所述第二编译文件集合中的资源文件以及所述第二类文件集合中的类文件打包处理,生成所述目标工程的插件程序包。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
确定目标工程,从远程仓库中获取所述目标工程对应的归档文件;
获取每一所述归档文件的路径信息;
遍历所述归档文件,以确定出预设坐标元素项的坐标元素值等于所述预设坐标元素值的归档文件,作为目标归档文件。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
解压所述目标归档文件,得到文件目录;
从所述文件目录中确定出类文件目录,并从所述类文件目录中获取目标类信息;
从所述文件目录中确定出资源文件目录,并从所述资源文件目录中获取目标资源文件信息。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
从所述文件目录中确定类文件目录;
解析所述类文件目录中的类文件,得到所述类文件的包名和类名;
解析所述类文件目录中的信息描述文件,得到资源索引类名称;
将所述包名、类名和资源索引类名称作为所述目标类信息。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
遍历所述第一类文件集合中的文件;
当访问到的文件为class文件且所述class文件的信息属于所述目标类信息时,将所述class文件删除;
当访问到的文件为jar包且所述jar包中包含有class文件的信息属于所述目标类信息时,将所述jar包删除;
将经过删除操作处理后,所述第一类文件集合中剩余的文件,构成第二类文件集合。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
从所述文件目录中确定出资源文件目录;
获取所述资源文件目录中资源文件的相对路径和xml文件的节点信息,将所述相对路径和所述节点信息作为目标资源文件信息。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
遍历所述第一编译文件集合中的文件;
当访问到的文件为values.xml文件且所述values.xml文件的节点信息属于所述目标资源文件信息时,删除所述values.xml文件;
当访问到的文件不为values.xml文件且访问到的文件的相对路径属于所述目标资源文件信息时,删除访问到的文件;
将经过删除操作后,所述第一编译文件集合中剩余的文件,构成第二编译文件集合。
在一些实施例中,处理器401运行存储在存储器402中的应用程序,还可以实现如下功能:
根据dex编译器对所述第二类文件集合中的类文件进行编译,得到dex文件;
将所述dex文件与所述第二编译文件集合中的资源文件进行打包处理,生成所述目标工程的插件程序包。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
由上可知,本发明实施例提出的电子设备,在进行插件化开发时,从目标工程对应的归档文件中确定出目标归档文件,解析该目标归档文件,得到目标类信息和目标资源文件信息,对全部的归档文件进行资源编译,即目标工程的所有归档文件都参与到资源编译中,然后再根据目标资源文件信息对资源编译得到第一编译文件集合进行过滤处理,接下来,使目标工程的所有归档文件都参与代码编译,得到第一类文件集合,再根据目标类信息对第一类文件集合过滤,对经过过滤处理得到的第二编译文件集合和第二类文件集合进行打包处理,得到目标工程的插件程序包。通过上述方案,在满足插件工程正常编译的同时,使得最终生成的插件程序包中不包含有需要排除的目标归档文件中的资源和代码,能够避免生成的插件程序包在运行时出现类文件或者资源文件的依赖冲突。
为此,本发明实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本发明实施例所提供的任一种插件应用的编译方法中。例如,该指令可以执行:
从目标工程对应的归档文件中确定出目标归档文件;
解析所述目标归档文件,得到目标类信息和目标资源文件信息;
对所述目标工程对应的归档文件进行资源编译,得到第一编译文件集合,并根据所述目标资源文件信息对所述第一编译文件集合进行过滤处理,得到第二编译文件集合;
对所述目标工程对应的归档文件进行代码编译,得到第一类文件集合,并根据所述目标类信息对所述第一类文件集合过滤处理,得到第二类文件集合;
将所述第二编译文件集合中的资源文件以及所述第二类文件集合中的类文件打包处理,生成所述目标工程的插件程序包。
以上操作的具体实施可参见前面的实施例,在此不再赘述。
其中,该计算机可读存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该计算机可读存储介质中所存储的指令,可以执行本发明实施例所提供的任一种插件应用的编译方法,因此,可以实现本发明实施例所提供的任一种插件应用的编译方法所能实现的有益效果,详见前面的实施例,在此不再赘述。以上对本发明实施例所提供的一种插件应用的编译方法、装置及计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种插件应用的编译方法,其特征在于,包括:
从目标工程对应的归档文件中确定出目标归档文件;
解析所述目标归档文件,得到目标类信息和目标资源文件信息;
对所述目标工程对应的归档文件进行资源编译,得到第一编译文件集合,并根据所述目标资源文件信息对所述第一编译文件集合进行过滤处理,得到第二编译文件集合;
对所述目标工程对应的归档文件进行代码编译,得到第一类文件集合,并根据所述目标类信息对所述第一类文件集合过滤处理,得到第二类文件集合;
将所述第二编译文件集合中的资源文件以及所述第二类文件集合中的类文件打包处理,生成所述目标工程的插件程序包;
其中,所述解析所述目标归档文件,得到目标类信息和目标资源文件信息,包括:
解压所述目标归档文件,得到文件目录;
从所述文件目录中确定类文件目录;解析所述类文件目录中的类文件,得到所述类文件的包名和类名;解析所述类文件目录中的信息描述文件,得到资源索引类名称;将所述包名、类名和资源索引类名称作为所述目标类信息;
从所述文件目录中确定出资源文件目录;获取所述资源文件目录中资源文件的相对路径和xml文件的节点信息,将所述相对路径和所述节点信息作为目标资源文件信息;
所述根据所述目标资源文件信息对所述第一编译文件集合进行过滤处理,得到第二编译文件集合,包括:
遍历所述第一编译文件集合中的文件;
当访问到的文件为values.xml文件且所述values.xml文件的节点信息属于所述目标资源文件信息时,删除所述values.xml文件;
当访问到的文件不为values.xml文件且访问到的文件的相对路径属于所述目标资源文件信息时,删除访问到的文件;
将经过删除操作后,所述第一编译文件集合中剩余的文件,构成第二编译文件集合。
2.如权利要求1所述的插件应用的编译方法,其特征在于,所述从目标工程对应的归档文件中确定出目标归档文件包括:
确定目标工程,从远程仓库中获取所述目标工程对应的归档文件;
遍历所述归档文件,以确定出预设坐标元素项的坐标元素值等于预设坐标元素值的归档文件,作为目标归档文件。
3.如权利要求1所述的插件应用的编译方法,其特征在于,所述根据所述目标类信息对所述第一类文件集合过滤处理,得到第二类文件集合,包括:
遍历所述第一类文件集合中的文件;
当访问到的文件为class文件且所述class文件的信息属于所述目标类信息时,将所述class文件删除;
当访问到的文件为jar包且所述jar包中包含有class文件的信息属于所述目标类信息时,将所述jar包删除;
将经过删除操作处理后,所述第一类文件集合中剩余的文件,构成第二类文件集合。
4.如权利要求1至3任一项所述的插件应用的编译方法,其特征在于,所述将所述第二编译文件集合中的资源文件以及所述第二类文件集合中的类文件打包处理,生成所述目标工程的插件程序包,包括:
根据dex编译器对所述第二类文件集合中的类文件进行编译,得到dex文件;
将所述dex文件与所述第二编译文件集合中的资源文件进行打包处理,生成所述目标工程的插件程序包。
5.一种插件应用的编译装置,其特征在于,包括:
文件确定单元,用于从目标工程对应的归档文件中确定出目标归档文件;
文件解析单元,用于解析所述目标归档文件,得到目标类信息和目标资源文件信息;
资源编译单元,用于对所述目标工程对应的归档文件进行资源编译,得到第一编译文件集合,并根据所述目标资源文件信息对所述第一编译文件集合进行过滤处理,得到第二编译文件集合;
代码编译单元,用于对所述目标工程对应的归档文件进行代码编译,得到第一类文件集合,并根据所述目标类信息对所述第一类文件集合过滤处理,得到第二类文件集合;
文件打包单元,用于将所述第二编译文件集合中的资源文件以及所述第二类文件集合中的类文件打包处理,生成所述目标工程的插件程序包;
其中,所述资源编译单元,具体用于解压所述目标归档文件,得到文件目录;从所述文件目录中确定类文件目录;解析所述类文件目录中的类文件,得到所述类文件的包名和类名;解析所述类文件目录中的信息描述文件,得到资源索引类名称;将所述包名、类名和资源索引类名称作为所述目标类信息;从所述文件目录中确定出资源文件目录;获取所述资源文件目录中资源文件的相对路径和xml文件的节点信息,将所述相对路径和所述节点信息作为目标资源文件信息;
所述资源编译单元,具体用于遍历所述第一编译文件集合中的文件;当访问到的文件为values.xml文件且所述values.xml文件的节点信息属于所述目标资源文件信息时,删除所述values.xml文件;当访问到的文件不为values.xml文件且访问到的文件的相对路径属于所述目标资源文件信息时,删除访问到的文件;将经过删除操作后,所述第一编译文件集合中剩余的文件,构成第二编译文件集合。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有多条指令,所述指令适于处理器进行加载,以执行权利要求1至4任一项所述的插件应用的编译方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010130814.2A CN111309335B (zh) | 2020-02-28 | 2020-02-28 | 插件应用的编译方法、装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010130814.2A CN111309335B (zh) | 2020-02-28 | 2020-02-28 | 插件应用的编译方法、装置及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309335A CN111309335A (zh) | 2020-06-19 |
CN111309335B true CN111309335B (zh) | 2023-08-15 |
Family
ID=71156653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010130814.2A Active CN111309335B (zh) | 2020-02-28 | 2020-02-28 | 插件应用的编译方法、装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309335B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112000340A (zh) * | 2020-08-19 | 2020-11-27 | 北京字节跳动网络技术有限公司 | 文件处理方法、装置、电子设备及存储介质 |
CN112486569B (zh) * | 2020-11-06 | 2024-04-30 | 广州三七网络科技有限公司 | 插件sdk生成方法、装置、计算机设备和存储介质 |
CN112433747B (zh) * | 2020-12-16 | 2022-11-25 | 深圳乐播科技有限公司 | 一种适用于软件开发工具包sdk的差分升级方法及系统 |
CN112685048A (zh) * | 2021-01-05 | 2021-04-20 | 南方电网深圳数字电网研究院有限公司 | 应用程序打包方法、电子设备及存储介质 |
CN112882718B (zh) * | 2021-02-26 | 2024-03-01 | 百果园技术(新加坡)有限公司 | 编译处理方法、装置、设备及存储介质 |
CN113342347A (zh) * | 2021-05-31 | 2021-09-03 | 网易传媒科技(北京)有限公司 | 信息处理方法、装置、计算设备以及介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105511935A (zh) * | 2015-12-09 | 2016-04-20 | 网易(杭州)网络有限公司 | 资源索引值的获取方法及装置 |
CN105956082A (zh) * | 2016-04-29 | 2016-09-21 | 深圳前海大数点科技有限公司 | 实时数据处理与存储系统 |
CN106886394A (zh) * | 2015-12-15 | 2017-06-23 | 五八同城信息技术有限公司 | 应用程序打包方法及装置 |
CN107122219A (zh) * | 2017-03-31 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 安装文件的获取方法和装置 |
CN107168749A (zh) * | 2017-05-31 | 2017-09-15 | 腾讯科技(深圳)有限公司 | 一种编译方法、装置、设备和计算机可读存储介质 |
CN108446232A (zh) * | 2018-03-19 | 2018-08-24 | 五八有限公司 | 自定义检测规则的引入方法、装置、计算设备及存储介质 |
CN108614707A (zh) * | 2018-04-27 | 2018-10-02 | 深圳市腾讯网络信息技术有限公司 | 静态代码检查方法、装置、存储介质和计算机设备 |
CN109542445A (zh) * | 2017-08-01 | 2019-03-29 | 北京京东尚科信息技术有限公司 | 一种Android插件化开发的方法和装置 |
CN109725944A (zh) * | 2018-12-29 | 2019-05-07 | 北京三快在线科技有限公司 | 远程过程调用方法及装置、电子设备、存储介质 |
CN110515673A (zh) * | 2019-07-24 | 2019-11-29 | 百度在线网络技术(北京)有限公司 | 插件化系统及其方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9542168B2 (en) * | 2011-11-10 | 2017-01-10 | Microsoft Technology Licensing Llc | Hostable compiler utilizing type information from a host application |
US10372764B2 (en) * | 2013-04-30 | 2019-08-06 | International Business Machines Corporation | Extending document editors to assimilate documents returned by a search engine |
US10353679B2 (en) * | 2014-10-31 | 2019-07-16 | Microsoft Technology Licensing, Llc. | Collecting profile data for modified global variables |
CN106559438B (zh) * | 2015-09-24 | 2019-12-31 | 阿里巴巴集团控股有限公司 | 一种基于目标网络平台的程序上传方法和装置 |
US10055335B2 (en) * | 2017-01-23 | 2018-08-21 | International Business Machines Corporation | Programming assistance to identify suboptimal performing code and suggesting alternatives |
US11055264B2 (en) * | 2017-05-10 | 2021-07-06 | Dropbox, Inc. | Automatically coordinating application schema changes in a distributed data storage system |
-
2020
- 2020-02-28 CN CN202010130814.2A patent/CN111309335B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105511935A (zh) * | 2015-12-09 | 2016-04-20 | 网易(杭州)网络有限公司 | 资源索引值的获取方法及装置 |
CN106886394A (zh) * | 2015-12-15 | 2017-06-23 | 五八同城信息技术有限公司 | 应用程序打包方法及装置 |
CN105956082A (zh) * | 2016-04-29 | 2016-09-21 | 深圳前海大数点科技有限公司 | 实时数据处理与存储系统 |
CN107122219A (zh) * | 2017-03-31 | 2017-09-01 | 腾讯科技(深圳)有限公司 | 安装文件的获取方法和装置 |
CN107168749A (zh) * | 2017-05-31 | 2017-09-15 | 腾讯科技(深圳)有限公司 | 一种编译方法、装置、设备和计算机可读存储介质 |
CN109542445A (zh) * | 2017-08-01 | 2019-03-29 | 北京京东尚科信息技术有限公司 | 一种Android插件化开发的方法和装置 |
CN108446232A (zh) * | 2018-03-19 | 2018-08-24 | 五八有限公司 | 自定义检测规则的引入方法、装置、计算设备及存储介质 |
CN108614707A (zh) * | 2018-04-27 | 2018-10-02 | 深圳市腾讯网络信息技术有限公司 | 静态代码检查方法、装置、存储介质和计算机设备 |
CN109725944A (zh) * | 2018-12-29 | 2019-05-07 | 北京三快在线科技有限公司 | 远程过程调用方法及装置、电子设备、存储介质 |
CN110515673A (zh) * | 2019-07-24 | 2019-11-29 | 百度在线网络技术(北京)有限公司 | 插件化系统及其方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111309335A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111309335B (zh) | 插件应用的编译方法、装置及计算机可读存储介质 | |
CN110990019B (zh) | 一种Java类分析方法、装置、存储介质及电子设备 | |
US20240045850A1 (en) | Systems and methods for database orientation transformation | |
US10114745B2 (en) | Assisted garbage collection in a virtual machine | |
CN110673853B (zh) | 一种编译方法、装置及系统 | |
CN111176717B (zh) | 生成安装包的方法、装置及电子设备 | |
CN111897570A (zh) | 一种基于Maven插件的多依赖项文件提取方法及装置 | |
CN110737460A (zh) | 一种平台项目管理方法及装置 | |
CN112783912B (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN111176722B (zh) | 第三方库的文件版本检测方法、装置及存储介质 | |
CN108595187A (zh) | 安卓安装包集成软件开发工具包的法、装置及存储介质 | |
CN111967017A (zh) | 生成依赖关系的方法、装置、终端设备及存储介质 | |
CN111290738A (zh) | 应用程序的资源处理方法、装置、设备及存储介质 | |
CN111078279A (zh) | 字节码文件的处理方法、装置、设备及存储介质 | |
CN110543427A (zh) | 测试用例存储方法、装置、电子设备及存储介质 | |
CN112732321A (zh) | 一种固件修改方法、装置、计算机可读存储介质和设备 | |
CN115576600A (zh) | 基于代码变更的差异处理方法、装置、终端及存储介质 | |
CN111290740B (zh) | 应用程序的开发方法、装置、计算机设备和存储介质 | |
CN108694049B (zh) | 一种更新软件的方法和设备 | |
CN106484375B (zh) | 一种指令块加载方法、软交换设备及系统 | |
CN116578282A (zh) | 代码生成方法、装置、电子设备及介质 | |
CN110806891A (zh) | 嵌入式设备软件版本的生成方法及装置 | |
CN110737438A (zh) | 一种数据处理方法和装置 | |
CN112883044B (zh) | 用于数据库的数据处理方法、装置及计算机可读介质 | |
CN113901025A (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 |