CN111400256A - 一种应用程序调用资源文件的方法及装置 - Google Patents
一种应用程序调用资源文件的方法及装置 Download PDFInfo
- Publication number
- CN111400256A CN111400256A CN202010183104.6A CN202010183104A CN111400256A CN 111400256 A CN111400256 A CN 111400256A CN 202010183104 A CN202010183104 A CN 202010183104A CN 111400256 A CN111400256 A CN 111400256A
- Authority
- CN
- China
- Prior art keywords
- file
- target
- code
- resource file
- dependent library
- 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.)
- Granted
Links
Images
Classifications
-
- 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/164—File meta data generation
- G06F16/166—File name conversion
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Stored Programmes (AREA)
Abstract
本申请提供了一种应用程序调用资源文件的方法,应用于目标应用程序所在的操作系统,从操作系统的配置文件中获取目标依赖库对应的资源文件后,复制资源文件得到内部代码相同的两份原始资源文件,并将其中一份的旧文件名更改为新文件名,此时,修改旧文件名对应的原始资源文件的内部代码,以使目标应用程序通过旧文件名调用修改后的资源文件。在目标应用程序成功调用后,删除修改后的资源文件,然后更改带有新文件名的原始资源文件为旧文件名,此时,其他应用程序可以通过旧文件名调用原始资源文件。可见,本申请提供的应用程序调用资源文件的方法中,当需要修改依赖库时,操作系统仅需维护资源文件的内部代码,操作系统需要维护的代码量大大降低。
Description
技术领域
本申请涉及应用程序开发技术领域,尤其涉及一种应用程序调用资源文件的方法及装置。
背景技术
通常在构建操作系统的过程中会将各个依赖库(Android Archive,AAR)打包成APK(Android application package,Android应用程序包),每个依赖库对应不同的功能,实现依赖库功能的代码被存储于依赖库的资源文件中,开发应用程序时,通过调用不同的资源文件,以实现应用程序的不同功能。
为了完善应用程序对应的功能,相应的,需要修改应用程序所调用的资源文件的内部代码,通常,每个应用程序在操作系统中对应的配置代码是不同的,应用程序调用目标依赖库的调用代码就写在对应的配置代码中,通常,这种调用代码包含目标依赖库中资源文件的文件名称,这样,通过调用该文件名称就可以调用目标依赖库中的资源文件。如果需要对该目标依赖库对应的功能进行修改,通常,并不是直接修改资源文件的内部代码,而是在调用修改后的目标依赖库的应用程序所对应的配置代码中插入与修改的功能对应的代码,同时配合目标依赖库的资源文件,以实现对目标依赖库的功能的修改。对于同样调用该目标依赖库,但是不需要修改目标依赖库的功能的应用程序,则无需修改其对应的配置代码。
但是,针对多个应用程序同时调用同一修改后的目标依赖库的情况,如果采用上述方式对目标依赖库的功能进行修改,则每一次修改的结果仅能影响被修改的配置代码所对应的应用程序,而无法影响其他调用该目标依赖库的应用程序,如果其他调用该修改后的目标依赖库,则也需要参照上述过程在修改对应的配置代码。可见,上述通过在应用程序对应的配置代码中修改代码,而应用程序继续调用未修改内部代码的资源文件,以修改目标依赖库的功能的方式会大大增加操作系统所需要维护的代码量。
发明内容
本申请提供了一种应用程序调用资源文件的方法及装置,以降低修改依赖库时操作系统所需维护的代码量。
第一方面,本申请提供了一种应用程序调用资源文件的方法,应用于目标应用程序所在的操作系统,包括:
从所述操作系统的配置文件中获取目标依赖库对应的资源文件,所述配置文件为保存用于构建所述操作系统的代码的文件,所述目标依赖库为所述目标应用程序与其他应用程序同时调用的依赖库;
对所述资源文件执行复制,以得到内部代码相同的两份原始资源文件;
将两份所述原始资源文件中任一所述原始资源文件的旧文件名更改为新文件名,得到一份带有新文件名的原始资源文件,所述旧文件名为所述操作系统中所述目标应用程序与其他应用程序同时调用所述目标依赖库的所述原始资源文件时所使用的文件名;
修改所述旧文件名对应的所述原始资源文件的内部代码,得到修改后的资源文件,以使所述目标应用程序通过所述旧文件名调用所述修改后的资源文件;
在接收到所述目标应用程序调用成功的反馈信息后,删除所述修改后的资源文件,并将所述带有新文件名的原始资源文件的文件名更改为所述旧文件名,以使所述其他应用程序通过所述旧文件名调用所述原始资源文件。
在本发明实施例第一方面一种可能的实现方式中,所述从目标应用程序所在操作系统的配置文件中获取目标依赖库对应的资源文件包括:
获取所述配置文件中的缓存文件,所述缓存文件用于存储依赖库;
按照所述目标依赖库的文件名称从所述缓存文件中获取所述目标依赖库;
解压所述目标依赖库,得到所述目标依赖库包含的文件;
从所述文件中获取资源文件,所述资源文件为文件名中带有预设后缀的文件。
在本发明实施例第一方面一种可能的实现方式中,所述修改所述旧文件名对应的所述原始资源文件的内部代码,得到修改后的资源文件包括:
对照白名单确定所述原始资源文件中内部代码中的待修改代码,所述白名单为包含目标依赖库修改要求的列表;
根据所述白名单中的目标依赖库修改要求,修改所述待修改代码,得到修改后的资源文件。
在本发明实施例第一方面一种可能的实现方式中,所述根据所述白名单中的目标依赖库修改要求,修改所述待修改代码,得到修改后的资源文件包括:
所述目标依赖库修改要求为增加新的依赖库功能,根据所述白名单中的目标依赖库修改要求,在所述待修改代码中增加相应的代码;
或者,所述目标依赖库修改要求为删除所述目标依赖库中的原有功能,根据所述白名单中的目标依赖库修改要求,在所述待修改代码中删除相应的代码;
或者,所述目标依赖库修改要求为修复所述目标依赖库的原有功能的错误,根据所述白名单中的目标依赖库修改要求,将所述待修改代码替换为相应的代码。
第二方面,本申请提供了一种应用程序调用资源文件的装置,应用于目标应用程序所在的操作系统,包括:
获取单元,用于从所述操作系统的配置文件中获取目标依赖库对应的资源文件,所述配置文件为保存用于构建所述操作系统的代码的文件,所述目标依赖库为所述目标应用程序与其他应用程序同时调用的依赖库;
复制单元,用于对所述资源文件执行复制,以得到内部代码相同的两份原始资源文件;
重命名单元,用于将两份所述原始资源文件中任一所述原始资源文件的旧文件名更改为新文件名,得到一份带有新文件名的原始资源文件,所述旧文件名为所述操作系统中所述目标应用程序与其他应用程序同时调用所述目标依赖库的所述原始资源文件时所使用的文件名;
修改单元,用于修改所述旧文件名对应的所述原始资源文件的内部代码,得到修改后的资源文件,以使所述目标应用程序通过所述旧文件名调用所述修改后的资源文件;
删除单元,用于在接收到所述目标应用程序调用成功的反馈信息后,删除所述修改后的资源文件,并将所述带有新文件名的原始资源文件的文件名更改为所述旧文件名,以使所述其他应用程序通过所述旧文件名调用所述原始资源文件。。
在本发明实施例第二方面一种可能的实现方式中,所述获取单元包括:
缓存文件获取单元,用于获取所述配置文件中的缓存文件,所述缓存文件用于存储依赖库;
目标依赖库获取单元,用于按照所述目标依赖库的文件名称从所述缓存文件中获取所述目标依赖库;
解压单元,用于解压所述目标依赖库,得到所述目标依赖库包含的文件;
资源文件获取单元,用于从所述文件中获取资源文件,所述资源文件为文件名中带有预设后缀的文件。
在本发明实施例第二方面一种可能的实现方式中,所述修改单元包括:
对照单元,用于对照白名单确定所述原始资源文件的内部代码中的待修改代码,所述白名单为包含目标依赖库修改要求的列表;
代码修改单元,用于根据所述白名单中的目标依赖库修改要求,修改所述待修改代码,得到修改后的资源文件。
在本发明实施例第二方面一种可能的实现方式中,所述代码修改单元包括:
代码增加单元,用于所述目标依赖库修改要求为增加新的依赖库功能,根据所述白名单中的目标依赖库修改要求,在所述待修改代码中增加相应的代码;
代码删除单元,用于所述目标依赖库修改要求为删除所述目标依赖库中的原有功能,根据所述白名单中的目标依赖库修改要求,在所述待修改代码中删除相应的代码;
代码替换单元,用于所述目标依赖库修改要求为修复所述目标依赖库的原有功能的错误,根据所述白名单中的目标依赖库修改要求,将所述待修改代码替换为相应的代码。
第三方面,本申请提供了一种电子设备,应用于目标应用程序所在的操作系统,所述电子设备包括:
处理器,以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-4任一所述的应用程序调用资源文件的方法。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,应用于目标应用程序所在的操作系统,所述计算机程序被处理器执行时实现任一所述的应用程序调用资源文件的方法。
本申请提供了一种应用程序调用资源文件的方法,应用于目标应用程序所在的操作系统,首先,从所述操作系统的配置文件中获取目标依赖库对应的资源文件,然后,对资源文件执行复制,得到内部代码相同的两份原始资源文件,并将两份原始资源文件中的任意一个的旧文件名更改为新文件名,此时,对旧文件名对应的原始资源文件的内部代码进行修改,以使目标应用程序可以通过旧文件名调用修改后的资源文件。在全部目标应用程序成功调用修改后的资源文件之后,将修改后的资源文件删除,然后将带有新文件名的原始资源文件更改为旧文件名,此时,其他需要调用原始资源文件的应用程序就可以通过旧文件名调用原始资源文件。可见,本申请所提供的应用程序调用资源文件的方法中,当需要修改依赖库时,操作系统中真正需要维护的代码仅为资源文件的内部代码,操作系统需要维护的代码量大大降低,且通过一次修改,就可以供多个目标应用程序使用,同时,又不会影响其他应用程序调用原始资源文件。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种应用程序调用资源文件的方法的流程图;
图2提供了一种获取资源文件的方法的流程图;
图3提供了一种资源文件的修改方法的流程图;
图4为本申请实施例提供的应用程序调用资源文件的装置实施例一的结构示意图;
图5为本申请实施例提供的应用程序调用资源文件的装置实施例二的结构示意图;
图6为本申请实施例提供的应用程序调用资源文件的装置实施例三的结构示意图;
图7为本申请实施例提供的应用程序调用资源文件的装置实施例四的结构示意图;
图8为本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
通常在构建操作系统的过程中会将各个依赖库(Android Archive,AAR)打包成APK(Android application package,Android应用程序包),每个依赖库对应不同的功能,实现依赖库功能的代码被存储于依赖库的资源文件中,开发应用程序时,通过调用不同的资源文件,以实现应用程序的不同功能。
为了完善应用程序对应的功能,相应的,需要修改应用程序所调用的资源文件的内部代码,通常,每个应用程序在操作系统中对应的配置代码是不同的,应用程序调用目标依赖库的调用代码就写在对应的配置代码中,通常,这种调用代码包含目标依赖库中资源文件的文件名称,这样,通过调用该文件名称就可以调用目标依赖库中的资源文件。如果需要对该目标依赖库对应的功能进行修改,通常,并不是直接修改资源文件的内部代码,而是在调用修改后的目标依赖库的应用程序所对应的配置代码中插入与修改的功能对应的代码,同时配合目标依赖库的资源文件,以实现对目标依赖库的功能的修改。对于同样调用该目标依赖库,但是不需要修改目标依赖库的功能的应用程序,则无需修改其对应的配置代码。
但是,针对多个应用程序同时调用同一修改后的目标依赖库的情况,如果采用上述方式对目标依赖库的功能进行修改,则每一次修改的结果仅能影响被修改的配置代码所对应的应用程序,而无法影响其他调用该目标依赖库的应用程序,如果其他调用该修改后的目标依赖库,则也需要参照上述过程在修改对应的配置代码。可见,上述通过在应用程序对应的配置代码中修改代码,而应用程序继续调用未修改内部代码的资源文件,以修改目标依赖库的功能的方式会大大增加操作系统所需要维护的代码量。
为了解决上述问题,本申请提供了一种应用程序调用资源文件的方法,图1为本申请实施例提供的一种应用程序调用资源文件的方法的流程图,如图1所示,所述方法包括:
S1、用于从所述操作系统的配置文件中获取目标依赖库对应的资源文件,所述配置文件为保存用于构建所述操作系统的代码的文件,所述目标依赖库为所述目标应用程序与其他应用程序同时调用的依赖库。
通常使用Gradle来构建操作系统,基于Gradle的构建方式,Gradle在构建的过程中会提供其特有的缓存机制,即可以将构建过程中所使用的文件按照一定的缓存路径存储在操作系统的配置文件中特定的位置,这样每一文件都会对应一个特有的缓存路径,即在查找某一文件时,可以根据该文件对应的缓存路径从配置文件中获取该文件。相应的,依赖库也是构建操作系统时所使用的文件,因此,也可以按照依赖库的缓存路径在配置文件中获取依赖库,进而获取依赖库中包含的资源文件。
具体地,图2提供了一种获取资源文件的方法的流程图,如图2所示,所述方法包括:
S101、获取所述配置文件中的缓存文件,所述缓存文件用于存储依赖库;
S102、按照所述目标依赖库的文件名称从所述缓存文件中获取所述目标依赖库;
S103、解压所述目标依赖库,得到所述目标依赖库包含的文件;
S104、从所述文件中获取资源文件,所述资源文件为文件名中带有预设后缀的文件。
依赖库是以缓存的方式存储于配置文件中,因此,相应的,就需要从配置文件中的缓存文件里查找依赖库。例如,可以通过调用_init_方法得到用户配置的环境变量,并通过Gradle_User_Home命令得到缓存文件在配置文件中的配置路径,这样就可以按照配置路径找到缓存文件caches。通常缓存文件中存储有大量文件,这些文件中包括全部依赖库,因此,需要从这些依赖库中找到与目标应用程序对应的目标依赖库,根据操作系统的构建方式可知,不同的依赖库对应不同的名称,一般该名称都会与应用程序相对应,因此,可以按照目标依赖库的文件名称,例如Wuba-1.1.3,可以从缓存文件中对应找到目标依赖库,在构建操作系统时,为了减小文件的容量,通常会将文件的最终版本进行压缩,因此,目标依赖库为压缩包形式,为了获得目标依赖库对应的资源文件,需要首先将目标依赖库解压,得到目标依赖库包含的文件。通常,目标依赖库可能会包含多个相关的文件,例如日志文件、缓存文件、资源文件等,但是,不同的文件所带有的后缀是不同的,例如.zip即为压缩文件,.aar即为资源文件,当然在实际构建中,也可以用其它预设后缀来标识资源文件,这样,就可以通过预设后缀来确定资源文件。
在找到资源文件之后,就可以按照需求对资源文件的内部代码进行修改。
S2、对所述资源文件执行复制,以得到内部代码相同的两份原始资源文件。
为了实现既可以修改原始资源文件的内部代码供目标应用程序调用,又可以随时恢复原始资源文件供其它应用程序调用的效果,就需要复制资源文件得到两份内部代码相同的原始资源文件,以分别供不同应用程序调用。
S3、将两份所述原始资源文件中任一所述原始资源文件的旧文件名更改为新文件名,得到一份带有新文件名的原始资源文件,所述旧文件名为所述操作系统中所述目标应用程序与其他应用程序同时调用所述目标依赖库的所述原始资源文件时所使用的文件名。
S4、修改所述旧文件名对应的所述原始资源文件的内部代码,得到修改后的资源文件,以使所述目标应用程序通过所述旧文件名调用所述修改后的资源文件。
应用程序调用依赖库的资源文件的执行过程均以调用代码的形式写操作系统在对应的配置代码中,具体地,会在配置代码中出现调用的依赖库的文件名以及依赖库的资源文件的文件名,为了避免修改目标应用程序对应的配置代码,即继续延用原有的配置代码,则需要保证修改后的资源文件所对应的文件名需要与配置代码中的文件名一致,即旧文件名,而防止错引,则需要修改另一份资源文件的文件名至任一新文件名。
例如,复制得到的两份原始资源文件的文件名均为旧文件名,Wuba.1.1.3.aar,此时,选择其中一个原始资源文件,并将其改名为Wuba.1.1.3-origin.aar,然后,对文件名为Wuba.1.1.3.aar的内部代码进行修改,得到修改后的资源文件,这样,修改后的资源文件对应旧文件名Wuba.1.1.3.aar,目标应用程序就可以继续通过原配置代码通过调用旧文件名,来调用修改后的资源文件,而不会错引未经修改的原始资源文件。
需要注意的是目标应用程序可以为多个,这些目标应用程序对所调用的目标依赖库具有相同的修改需求,因此,在目标依赖库的资源文件修改之后,这些目标应用程序均可以通过对应的配置代码直接调用修改后的资源文件,实现一次修改可供多个应用程序使用的效果,从而降低修改资源文件对操作系统产生的代码维护量。
具体地,图3提供了一种资源文件的修改方法的流程图,如图3所示,所述方法包括:
S401、对照白名单确定所述原始资源文件的内部代码中的待修改代码,所述白名单为包含目标依赖库修改要求的列表;
S402、根据所述白名单中的目标依赖库修改要求,修改所述待修改代码,得到修改后的资源文件。
通常,开发人员为了方便总结修改要求,易于维护修改要求,会将目标依赖库修改要求生成一个列表或者文件,即白名单whitel ist,这样就可以通过逐一对照白名单中的目标依赖库修改要求,确定资源文件中的待修改代码,例如白名单中具有需求A,在资源文件中对应于需求A的代码为第10-25行,则第10-25行的代码即为待修改代码。此时,就可以根据白名单中的依赖库修改要求具体修改待修改代码,而不会影响其它代码。
具体地,需要根据目标依赖库修改要求,对待修改代码进行不同形式的修改,例如依赖库修改要求为在目标依赖库中增加新的功能,则需要以增加相应的代码的形式来修改待修改代码;又如,依赖库修改要求为将目标依赖库中的某些功能删除,则需要以删除相应的代码的形式来修改待修改代码;又如,依赖库修改要求为修复目标依赖库中的某些bug,则需要以替换相应的代码的形式来修改待修改代码。需要注意的是,根据依赖库修改要求,可以同时采用上述修改方式中的一种或几种的组合以满足修改需求。
S5、在接收到所述目标应用程序调用成功的反馈信息后,删除所述修改后的资源文件,并将所述带有新文件名的原始资源文件的文件名更改为所述旧文件名,以使所述其他应用程序通过所述旧文件名调用所述原始资源文件。
在目标应用程序调用成功之后,目标应用程序就会向操作系统反馈一个调用成功的反馈信息,此时,对于一些需要调用目标依赖库的原始资源文件的应用程序,如果直接使用原配置代码调用,就会使用旧文件名进行调用,这样,就会错引修改后的资源文件。为了避免上述问题,需要将修改后的资源文件删除,然后,将带有新文件名的原始资源文件的文件名再修改回旧文件名,这样其他应用程序就可以使用原配置代码根据旧文件名来调用未经过修改的原始资源文件。
。可见,本申请所提供的应用程序调用资源文件的方法中,当需要修改依赖库时,操作系统中真正需要维护的代码仅为资源文件的内部代码,操作系统需要维护的代码量大大降低,且通过一次修改,就可以供多个目标应用程序使用,同时,又不会影响其他应用程序调用原始资源文件。
图4为本申请实施例提供的应用程序调用资源文件的装置实施例一的结构示意图,所述装置包括:获取单元1,用于从所述操作系统的配置文件中获取目标依赖库对应的资源文件,所述配置文件为保存用于构建所述操作系统的代码的文件,所述目标依赖库为所述目标应用程序与其他应用程序同时调用的依赖库;复制单元2,用于对所述资源文件执行复制,以得到内部代码相同的两份原始资源文件;重命名单元3,用于将两份所述原始资源文件中任一所述原始资源文件的旧文件名更改为新文件名,得到一份带有新文件名的原始资源文件,所述旧文件名为所述操作系统中所述目标应用程序与其他应用程序同时调用所述目标依赖库的所述原始资源文件时所使用的文件名;修改单元4,用于修改所述旧文件名对应的所述原始资源文件的内部代码,得到修改后的资源文件,以使所述目标应用程序通过所述旧文件名调用所述修改后的资源文件;删除单元5,用于在接收到所述目标应用程序调用成功的反馈信息后,删除所述修改后的资源文件,并将所述带有新文件名的原始资源文件的文件名更改为所述旧文件名,以使所述其他应用程序通过所述旧文件名调用所述原始资源文件。
图5为本申请实施例提供的应用程序调用资源文件的装置实施例二的结构示意图,所述获取单元1包括:缓存文件获取单元11,用于获取所述配置文件中的缓存文件,所述缓存文件用于存储依赖库;目标依赖库获取单元12,用于按照所述目标依赖库的文件名称从所述缓存文件中获取所述目标依赖库;解压单元13,用于解压所述目标依赖库,得到所述目标依赖库包含的文件;资源文件获取单元14,用于从所述文件中获取资源文件,所述资源文件为文件名中带有预设后缀的文件。
图6为本申请实施例提供的应用程序调用资源文件的装置实施例三的结构示意图,所述修改单元4包括:对照单元41,用于对照白名单确定所述原始资源文件的内部代码中的待修改代码,所述白名单为包含目标依赖库修改要求的列表;代码修改单元42,用于根据所述白名单中的目标依赖库修改要求,修改所述待修改代码,得到修改后的资源文件。
图7为本申请实施例提供的应用程序调用资源文件的装置实施例四的结构示意图,所述代码修改单元42包括:代码增加单元421,用于所述目标依赖库修改要求为增加新的依赖库功能,根据所述白名单中的目标依赖库修改要求,在所述待修改代码中增加相应的代码;代码删除单元422,用于所述目标依赖库修改要求为删除所述目标依赖库中的原有功能,根据所述白名单中的目标依赖库修改要求,在所述待修改代码中删除相应的代码;代码替换单元423,用于所述目标依赖库修改要求为修复所述目标依赖库的原有功能的错误,根据所述白名单中的目标依赖库修改要求,将所述待修改代码替换为相应的代码。
图8为本发明实施例提供的电子设备的硬件结构示意图。该电子设备包括:存储器101和处理器102;
存储器101,用于存储计算机程序;
处理器102,用于执行存储器存储的计算机程序,以实现上述实施例中的应用程序调用资源文件的方法。具体可以参见前述方法实施例中的相关描述。
可选地,存储器101既可以是独立的,也可以跟处理器102集成在一起。
当所述存储器101是独立于处理器102之外的器件时,所述电子设备还可以包括:
总线103,用于连接所述存储器101和处理器102。
本发明实施例提供的电子设备可用于执行上述实施例中任一所示的应用程序调用资源文件的方法,其实现方式和技术效果类似,本发明实施例此处不再赘述。
本发明实施例还提供一种可读存储介质,可读存储介质中存储有计算机程序,当消息发送的装置的至少一个处理器执行该计算机程序时,消息发送的装置执行上述实施例任一所述的应用程序调用资源文件的方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于以计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换,而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种应用程序调用资源文件的方法,应用于目标应用程序所在的操作系统,其特征在于,包括:从所述操作系统的配置文件中获取目标依赖库对应的资源文件,所述配置文件为保存用于构建所述操作系统的代码的文件,所述目标依赖库为所述目标应用程序与其他应用程序同时调用的依赖库;
对所述资源文件执行复制,以得到内部代码相同的两份原始资源文件;
将两份所述原始资源文件中任一所述原始资源文件的旧文件名更改为新文件名,得到一份带有新文件名的原始资源文件,所述旧文件名为所述操作系统中所述目标应用程序与其他应用程序同时调用所述目标依赖库的所述原始资源文件时所使用的文件名;
修改所述旧文件名对应的所述原始资源文件的内部代码,得到修改后的资源文件,以使所述目标应用程序通过所述旧文件名调用所述修改后的资源文件;
在接收到所述目标应用程序调用成功的反馈信息后,删除所述修改后的资源文件,并将所述带有新文件名的原始资源文件的文件名更改为所述旧文件名,以使所述其他应用程序通过所述旧文件名调用所述原始资源文件。
2.根据权利要求1所述的方法,其特征在于,所述从所述操作系统的配置文件中获取目标依赖库对应的资源文件包括:
获取所述配置文件中的缓存文件,所述缓存文件用于存储依赖库;
按照所述目标依赖库的文件名称从所述缓存文件中获取所述目标依赖库;
解压所述目标依赖库,得到所述目标依赖库包含的文件;
从所述文件中获取资源文件,所述资源文件为文件名中带有预设后缀的文件。
3.根据权利要求1所述的方法,其特征在于,所述修改所述旧文件名对应的所述原始资源文件的内部代码,得到修改后的资源文件包括:
对照白名单确定所述原始资源文件的内部代码中的待修改代码,所述白名单为包含目标依赖库修改要求的列表;
根据所述白名单中的目标依赖库修改要求,修改所述待修改代码,得到修改后的资源文件。
4.根据权利要求3所述的方法,其特征在于,所述根据所述白名单中的目标依赖库修改要求,修改所述待修改代码,得到修改后的资源文件包括:
所述目标依赖库修改要求为增加新的依赖库功能,根据所述白名单中的目标依赖库修改要求,在所述待修改代码中增加相应的代码;
或者,所述目标依赖库修改要求为删除所述目标依赖库中的原有功能,根据所述白名单中的目标依赖库修改要求,在所述待修改代码中删除相应的代码;
或者,所述目标依赖库修改要求为修复所述目标依赖库的原有功能的错误,根据所述白名单中的目标依赖库修改要求,将所述待修改代码替换为相应的代码。
5.一种应用程序调用资源文件的装置,应用于目标应用程序所在的操作系统,其特征在于,包括:
获取单元,用于从所述操作系统的配置文件中获取目标依赖库对应的资源文件,所述配置文件为保存用于构建所述操作系统的代码的文件,所述目标依赖库为所述目标应用程序与其他应用程序同时调用的依赖库;
复制单元,用于对所述资源文件执行复制,以得到内部代码相同的两份原始资源文件;
重命名单元,用于将两份所述原始资源文件中任一所述原始资源文件的旧文件名更改为新文件名,得到一份带有新文件名的原始资源文件,所述旧文件名为所述操作系统中所述目标应用程序与其他应用程序同时调用所述目标依赖库的所述原始资源文件时所使用的文件名;
修改单元,用于修改所述旧文件名对应的所述原始资源文件的内部代码,得到修改后的资源文件,以使所述目标应用程序通过所述旧文件名调用所述修改后的资源文件;
删除单元,用于在接收到所述目标应用程序调用成功的反馈信息后,删除所述修改后的资源文件,并将所述带有新文件名的原始资源文件的文件名更改为所述旧文件名,以使所述其他应用程序通过所述旧文件名调用所述原始资源文件。
6.根据权利要求5所述的装置,其特征在于,所述获取单元包括:
缓存文件获取单元,用于获取所述配置文件中的缓存文件,所述缓存文件用于存储依赖库;
目标依赖库获取单元,用于按照所述目标依赖库的文件名称从所述缓存文件中获取所述目标依赖库;
解压单元,用于解压所述目标依赖库,得到所述目标依赖库包含的文件;
资源文件获取单元,用于从所述文件中获取资源文件,所述资源文件为文件名中带有预设后缀的文件。
7.根据权利要求5所述的装置,其特征在于,所述修改单元包括:
对照单元,用于对照白名单确定所述原始资源文件的内部代码中的待修改代码,所述白名单为包含目标依赖库修改要求的列表;
代码修改单元,用于根据所述白名单中的目标依赖库修改要求,修改所述待修改代码,得到修改后的资源文件。
8.根据权利要求7所述的装置,其特征在于,所述代码修改单元包括:
代码增加单元,用于所述目标依赖库修改要求为增加新的依赖库功能,根据所述白名单中的目标依赖库修改要求,在所述待修改代码中增加相应的代码;
代码删除单元,用于所述目标依赖库修改要求为删除所述目标依赖库中的原有功能,根据所述白名单中的目标依赖库修改要求,在所述待修改代码中删除相应的代码;
代码替换单元,用于所述目标依赖库修改要求为修复所述目标依赖库的原有功能的错误,根据所述白名单中的目标依赖库修改要求,将所述待修改代码替换为相应的代码。
9.一种电子设备,应用于目标应用程序所在的操作系统,其特征在于,所述电子设备包括:
处理器,以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1-4任一所述的应用程序调用资源文件的方法。
10.一种计算机可读存储介质,其上存储有计算机程序,应用于目标应用程序所在的操作系统,其特征在于,所述计算机程序被处理器执行时实现权利要求1-4任一所述的应用程序调用资源文件的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010183104.6A CN111400256B (zh) | 2020-03-16 | 2020-03-16 | 一种应用程序调用资源文件的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010183104.6A CN111400256B (zh) | 2020-03-16 | 2020-03-16 | 一种应用程序调用资源文件的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111400256A true CN111400256A (zh) | 2020-07-10 |
CN111400256B CN111400256B (zh) | 2023-03-21 |
Family
ID=71432463
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010183104.6A Active CN111400256B (zh) | 2020-03-16 | 2020-03-16 | 一种应用程序调用资源文件的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111400256B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416372A (zh) * | 2020-11-16 | 2021-02-26 | 五八同城信息技术有限公司 | Aar修改构建方法、装置、电子设备和存储介质 |
CN113050950A (zh) * | 2021-03-26 | 2021-06-29 | 上海绚显科技有限公司 | 应用程序开发方法、装置、电子设备及机器可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060195831A1 (en) * | 2005-02-28 | 2006-08-31 | John Bossom | System and method for the localization of released computer program |
US20080127175A1 (en) * | 2006-11-01 | 2008-05-29 | Microsoft Corporation | Packaging software products as single-file executables containing scripting logic |
CN103136027A (zh) * | 2013-03-01 | 2013-06-05 | 畅捷通信息技术股份有限公司 | 即时更新装置和即时更新方法 |
CN107066257A (zh) * | 2017-03-06 | 2017-08-18 | 北京潘达互娱科技有限公司 | 一种由Unity到安卓的封装方法及装置 |
CN107066266A (zh) * | 2017-03-22 | 2017-08-18 | 北京潘达互娱科技有限公司 | 安卓应用中支持Unity的数据处理方法及装置 |
CN110704298A (zh) * | 2019-08-23 | 2020-01-17 | 北京奇艺世纪科技有限公司 | 一种代码验证的方法、装置、终端设备及存储介质 |
-
2020
- 2020-03-16 CN CN202010183104.6A patent/CN111400256B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060195831A1 (en) * | 2005-02-28 | 2006-08-31 | John Bossom | System and method for the localization of released computer program |
US20080127175A1 (en) * | 2006-11-01 | 2008-05-29 | Microsoft Corporation | Packaging software products as single-file executables containing scripting logic |
CN103136027A (zh) * | 2013-03-01 | 2013-06-05 | 畅捷通信息技术股份有限公司 | 即时更新装置和即时更新方法 |
CN107066257A (zh) * | 2017-03-06 | 2017-08-18 | 北京潘达互娱科技有限公司 | 一种由Unity到安卓的封装方法及装置 |
CN107066266A (zh) * | 2017-03-22 | 2017-08-18 | 北京潘达互娱科技有限公司 | 安卓应用中支持Unity的数据处理方法及装置 |
CN110704298A (zh) * | 2019-08-23 | 2020-01-17 | 北京奇艺世纪科技有限公司 | 一种代码验证的方法、装置、终端设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
顾红其;: "在DLL中调用资源文件研究与实践" * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416372A (zh) * | 2020-11-16 | 2021-02-26 | 五八同城信息技术有限公司 | Aar修改构建方法、装置、电子设备和存储介质 |
CN113050950A (zh) * | 2021-03-26 | 2021-06-29 | 上海绚显科技有限公司 | 应用程序开发方法、装置、电子设备及机器可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111400256B (zh) | 2023-03-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6948164B2 (en) | Method and system for modifying executable code to add additional functionality | |
US10019256B2 (en) | Systems and methods for incremental software development | |
US6542167B1 (en) | System and method for flexible software linking | |
US6112025A (en) | System and method for dynamic program linking | |
US20160139913A1 (en) | Systems and methods for incremental software deployment | |
US7321988B2 (en) | Identifying a code library from the subset of base pointers that caused a failure generating instruction to be executed | |
US10331425B2 (en) | Automated source code adaption to inject features between platform versions | |
US11599654B2 (en) | Method and apparatus for authority control, computer device and storage medium | |
CN108614702B (zh) | 字节码优化方法及装置 | |
CN111400256B (zh) | 一种应用程序调用资源文件的方法及装置 | |
JP7115342B2 (ja) | デバッグ支援システムおよびデバッグ支援方法 | |
US8190587B1 (en) | In-place image promotion | |
CN111949301B (zh) | 应用程序热更新方法、装置和计算机可读存储介质 | |
US6782523B2 (en) | Parallel configurable IP design methodology | |
CN115543486B (zh) | 面向无服务器计算的冷启动延迟优化方法、装置和设备 | |
KR100321999B1 (ko) | 스크립트를이용한프로그램패치방법 | |
CN117234953B (zh) | 一种基于影子代码缓存的内核调试方法 | |
CN116243971B (zh) | 一种基于静态依赖自举的内核无关的模块构建方法 | |
CN113495727B (zh) | 业务组件开发方法、装置、电子设备及介质 | |
JPH11126161A (ja) | 制御記憶の障害回避方法 | |
US20080320447A1 (en) | Method of accessing web parameters | |
CN117555800A (zh) | 一种联机程序测试方法、装置及设备 | |
CN112416372A (zh) | Aar修改构建方法、装置、电子设备和存储介质 | |
CN113448825A (zh) | 新增软件缺陷的确定方法、装置、设备及存储介质 | |
CN117389579A (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 |