CN111124480B - 应用程序包的生成方法、装置、电子设备及存储介质 - Google Patents
应用程序包的生成方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111124480B CN111124480B CN201911319352.2A CN201911319352A CN111124480B CN 111124480 B CN111124480 B CN 111124480B CN 201911319352 A CN201911319352 A CN 201911319352A CN 111124480 B CN111124480 B CN 111124480B
- Authority
- CN
- China
- Prior art keywords
- resource
- shared
- application program
- exclusive
- resources
- 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/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明实施例提供了一种应用程序包的生成方法、装置、电子设备及存储介质,所述方法包括:获取资源标识文件以及资源信息,其中,资源标识文件记录应用程序中共享资源对应的共享资源标识;根据资源标识文件,将资源信息划分为共享资源以及独占资源,其中,共享资源分别存储于资源信息以及应用程序对应的资源库中;删除资源信息中的共享资源,利用预设的编译工具对资源信息中的独占资源进行处理,生成目标资源信息;基于目标资源信息、预设的代码以及资源信息对应的资源索引,生成应用程序包APK。如此可以实现删除应用程序包中的冗余资源,通过对应用程序包进行瘦身可以提高动态加载应用程序包的效率。
Description
技术领域
本发明涉及智能终端技术领域,尤其涉及一种应用程序包的生成方法、装置、电子设备及存储介质。
背景技术
随着智能终端的不断发展,基于安卓(Android)的APP(Application,应用程序)的功能越来越复杂,随之而来的需求需要快速迭代更新部署上线。为此,基于Android的APP采用插件(应用程序包)化的方式动态加载,以完成需求的更新部署上线。
相关技术中,在基于Android的应用程序包化的开发过程中,应用程序包编译依赖于应用程序内的一些资源,例如,android_support,fresco,lottie等三方库以及基础资源。由于应用程序包编译依赖于这些资源,且Android Studio没有提供Compile Only资源的方式,在构建应用程序包的过程中,这些资源也会被自动加入应用程序包中。
然而实际中,这些资源在应用程序中也是存在的,应用程序包完全可以复用应用程序中的这些资源,导致应用程序包存在冗余资源,动态加载应用程序包的效率较低。
发明内容
本发明实施例的目的在于提供一种应用程序包的生成方法、装置、电子设备及存储介质,以实现删除应用程序包中的冗余资源,提高动态加载应用程序包的效率的有益效果。具体技术方案如下:
在本发明实施例的第一方面,首先提供了一种应用程序包的生成方法,所述方法执行于服务端,包括:
获取资源标识文件以及资源信息,其中,所述资源标识文件记录应用程序中共享资源对应的共享资源标识;
根据所述资源标识文件,将所述资源信息划分为共享资源以及独占资源,其中,所述共享资源分别存储于所述资源信息以及所述应用程序对应的资源库中;
删除所述资源信息中的所述共享资源,利用预设的编译工具对所述资源信息中的所述独占资源进行处理,生成目标资源信息;
基于所述目标资源信息、预设的代码以及所述资源信息对应的资源索引,生成应用程序包APK。
可选的,所述利用预设的编译工具对所述资源信息中的所述独占资源进行处理,生成目标资源信息,包括:
对所述资源信息中的所述独占资源对应的独占资源标识进行更新,生成目标资源标识,其中,所述目标资源标识与所述共享资源标识不一致;
利用预设的编译工具对所述资源信息中经过更新的所述独占资源进行处理,生成目标资源信息;
所述基于所述目标资源信息、预设的代码以及所述资源信息对应的资源索引,生成应用程序包APK,包括:
根据所述目标资源标识对所述资源信息对应的资源索引进行更新,其中,所述资源信息对应的资源索引中分别记录所述共享资源对应的共享资源标识以及独占资源对应的独占资源标识;
基于所述目标资源信息、预设的代码以及经过更新的所述资源信息对应的资源索引,生成应用程序包APK。
可选的,所述资源标识文件具体通过以下方式生成:
确定所述APK对应的资源以及所述应用程序对应的资源;
根据所述APK对应的资源以及所述应用程序对应的资源,确定所述APK与所述应用程序共享的资源;
根据所述APK与所述应用程序共享的资源对应的共享资源标识,生成所述资源标识文件。
在本发明实施例的第二方面,还提供了一种应用程序更新方法,所述方法执行于客户端,包括:
获取应用程序包APK,并解析所述APK中的资源索引、代码以及目标资源信息,其中,所述资源索引中分别记录共享资源标识以及独占资源标识;
根据所述资源索引,在应用程序对应的资源库中查找所述APK对应的共享资源,以及在所述目标资源信息中查找所述APK对应的独占资源;
将所述共享资源与所述独占资源进行整合;
在所述代码运行过程中,基于所述共享资源与所述独占资源,对所述应用程序进行更新。
在本发明实施例的第三方面,还提供了一种应用程序包的生成装置,所述装置应用于服务端,包括:
获取模块,用于获取资源标识文件以及资源信息,其中,所述资源标识文件记录应用程序中共享资源对应的共享资源标识;
资源划分模块,用于根据所述资源标识文件,将所述资源信息划分为共享资源以及独占资源,其中,所述共享资源分别存储于所述资源信息以及所述应用程序对应的资源库中;
资源删除模块,用于删除所述资源信息中的所述共享资源,利用预设的编译工具对所述资源信息中的所述独占资源进行处理,生成目标资源信息;
APK生成模块,用于基于所述目标资源信息、预设的代码以及所述资源信息对应的资源索引,生成应用程序包APK。
可选的,所述资源删除模块还用于:
对所述资源信息中的所述独占资源对应的独占资源标识进行更新,生成目标资源标识,其中,所述目标资源标识与所述共享资源标识不一致;
利用预设的编译工具对所述资源信息中经过更新的所述独占资源进行处理,生成目标资源信息;
所述APK生成模块具体用于:
根据所述目标资源标识对所述资源信息对应的资源索引进行更新,其中,所述资源信息对应的资源索引中分别记录所述共享资源对应的共享资源标识以及独占资源对应的独占资源标识;
基于所述目标资源信息、预设的代码以及经过更新的所述资源信息对应的资源索引,生成应用程序包APK。
可选的,所述装置还包括:
第一确定模块,用于确定所述APK对应的资源以及所述应用程序对应的资源;
第二确定模块,用于根据所述APK对应的资源以及所述应用程序对应的资源,确定所述APK与所述应用程序共享的资源;
文件生成模块,用于根据所述APK与所述应用程序共享的资源对应的共享资源标识,生成所述资源标识文件。
在本发明实施例的第四方面,还提供了一种应用程序更新装置,所述装置应用于客户端,包括:
AKP获取模块,用于获取应用程序包APK;
APK解析模块,用于解析所述APK中的资源索引、代码以及目标资源信息,其中,所述资源索引中分别记录共享资源标识以及独占资源标识;
资源查找模块,用于根据所述资源索引,在应用程序对应的资源库中查找所述APK对应的共享资源,以及在所述目标资源信息中查找所述APK对应的独占资源;
资源整合模块,用于将所述共享资源与所述独占资源进行整合;
程序更新模块,用于在所述代码运行过程中,基于所述共享资源与所述独占资源,对所述应用程序进行更新。
在本发明实施例的第五方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一所述的应用程序包的生成方法或者应用程序更新方法。
在本发明实施例的六方面,还提供了一种存储介质,所述存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述任一所述的应用程序包的生成方法或者应用程序更新方法。
在本发明实施例的第七方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的应用程序包的生成方法或者应用程序更新方法。
本发明实施例提供的技术方案,通过资源标识文件将资源信息划分为共享资源以及独占资源,删除资源信息中的共享资源,利用预设的编译工具对资源信息中的独占资源进行处理,生成目标资源信息,基于目标资源信息、预设的代码以及资源信息对应的资源索引,生成应用程序包APK,如此可以实现删除应用程序包中的冗余资源,通过对应用程序包进行瘦身可以提高动态加载应用程序包的效率。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中示出的一种应用程序包的生成方法的实施流程示意图;
图2为本发明实施例中示出的另一种应用程序包的生成方法的实施流程示意图;
图3为本发明实施例中示出的一种应用程序更新方法的实施流程示意图;
图4为本发明实施例中示出的一种应用程序包的生成装置的结构示意图;
图5为本发明实施例中示出的一种应用程序更新装置的结构示意图;
图6为本发明实施例中示出的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,为本发明实施例提供的一种应用程序包的生成方法的实施流程示意图,该方法具体可以包括以下步骤:
S101,获取资源标识文件以及资源信息,其中,所述资源标识文件记录应用程序中共享资源对应的共享资源标识;
在本发明实施例中,提供资源标识文件,该资源标识文件中记录应用程序中共享资源对应的共享资源标识。其中,对于资源标识,在本发明实施例中可以是资源ID、资源名称等,本发明实施例对此不作限定。
例如,上述资源标识文件可以是public.xml文件,其中,该public.xml文件中记录应用程序中共享资源(例如,android_support,fresco,lottie等三方库以及基础资源)对应的共享资源ID(例如,共享资源ID数值为以0x7f开头的数值)。
在应用程序包生成的过程中,本发明实施例可以获取上述资源标识文件,方便后续删除应用程序包中的冗余资源,通过对应用程序包进行瘦身,提高动态加载应用程序包的效率。
另外,在生成应用程序包的过程中,当资源编译完毕时,本发明实施例可以获取资源信息,该资源信息即对资源编译的结果(或者称为产物)。
例如,当processAndroidResources task执行完毕时,本发明实施例可以获取资源编译的结果,即资源信息,该资源信息中可以包括但不限于android_support,fresco,lottie等三方库、基础资源,本发明实施例在此不再一一赘述。
S102,根据所述资源标识文件,将所述资源信息划分为共享资源以及独占资源,其中,所述共享资源分别存储于所述资源信息以及所述应用程序对应的资源库中;
针对上述步骤获取的资源标识文件,以及获取的资源信息,根据该资源标识文件,将资源信息划分为共享资源以及独占资源两部分。
其中,对于共享资源,分别存储于资源信息以及应用程序对应的资源库中,该共享资源为资源信息与应用程序双方共同拥有的资源,意味着资源信息中包含该共享资源,与此同时应用程序对应的资源库中也包含该共享资源。而对于独占资源,该独占资源为资源信息独有的资源。
例如,上述资源标识文件可以是public.xml文件,其中,该public.xml文件中记录应用程序中共享资源(例如,android_support,fresco,lottie等三方库以及基础资源)对应的共享资源ID(例如,共享资源ID数值为以0x7f开头的数值),根据该public.xml文件将资源信息划分为共享资源(Part B)以及独占资源(Part A)两部分。其中,共享资源可以是android_support,fresco,lottie等三方库以及基础资源,本发明实施例在此不再一一赘述。
S103,删除所述资源信息中的所述共享资源,利用预设的编译工具对所述资源信息中的所述独占资源进行处理,生成目标资源信息;
经过上述处理将资源信息划分为共享资源以及独占资源,为了对应用程序包进行瘦身,可以从资源信息中删除该共享资源,即从资源编译结果中删除应用程序包中的冗余资源,保留独占资源。
例如,将资源信息划分为共享资源(Part B)以及独占资源(Part A)两部分,其中,共享资源可以是android_support,fresco,lottie等三方库以及基础资源,可以从资源信息中删除android_support,fresco,lottie等三方库以及基础资源,以达到对应用程序包进行瘦身的目的。
在资源信息中删除该共享资源之后,该资源信息中剩余独占资源,可以利用预设的编译工具对该资源信息中的该独占资源进行处理,生成目标资源信息。
例如,利用APPT工具对资源信息中的独占资源进行处理,生成目标resources.arsc文件,该目标resources.arsc文件即目标资源信息。
S104,基于所述目标资源信息、预设的代码以及所述资源信息对应的资源索引,生成应用程序包APK。
经过上述对该资源信息中的该独占资源进行处理,生成目标资源信息,自此可以基于目标资源信息、预设的代码以及资源信息对应的资源索引,生成应用程序包APK,意味着APK中包括目标资源信息、预设的代码以及资源信息对应的资源索引。其中,对于资源信息对应的资源索引,可以在资源编译的过程中产生。
通过上述对本发明实施例提供的技术方案的描述,通过资源标识文件将资源信息划分为共享资源以及独占资源,删除资源信息中的共享资源,利用预设的编译工具对资源信息中的独占资源进行处理,生成目标资源信息,基于目标资源信息、预设的代码以及资源信息对应的资源索引,生成应用程序包APK,如此可以实现删除应用程序包中的冗余资源,通过对应用程序包进行瘦身可以提高动态加载应用程序包的效率。
如图2所示,为本发明实施例提供的另一种应用程序包的生成方法的实施流程示意图,该方法具体可以包括以下步骤:
S201,获取资源标识文件以及资源信息,其中,所述资源标识文件记录应用程序中共享资源对应的共享资源标识;
在本发明实施例中,对于资源标识文件,记录应用程序中共享资源对应的共享资源标识,对于该共享资源标识不进行更新,本发明实施例可以获取该资源标识文件。
另外,当mergeResources task执行完时,本发明实施例可以从该资源标识文件中提取共享资源标识,便于后续针对独占资源对应的独占资源标识进行更新。
例如,本发明实施例可以获取public.xml文件,提取该public.xml文件中记录的应用程序中共享资源(例如,android_support,fresco,lottie等三方库以及基础资源)对应的共享资源ID(例如,共享资源ID数值为以0x7f开头的数值),对该共享资源ID不进行更新。
再者,对于上述资源标识文件,具体可以通过以下方式生成:
确定APK对应的资源以及应用程序对应的资源;根据APK对应的资源以及应用程序对应的资源,确定APK与应用程序共享的资源;根据APK与应用程序共享的资源对应的共享资源标识,生成资源标识文件。
例如,对于应用程序包所依赖的资源包括:资源A、资源B以及资源C,对于应用程序所依赖的资源包括:资源B、资源C以及资源D,由此可以确定应用程序包与应用程序共享的资源包括:资源B、资源C,根据应用程序包与应用程序共享的资源(资源B、资源C)对应的共享资源ID(例如,资源ID数值为以0x7f开头的数值),生成上述资源标识文件,所生成的资源标识文件如下表1所示。
共享资源 | 共享资源ID |
资源B | 0x7f…… |
资源C | 0x7f…… |
表1
S202,根据所述资源标识文件,将所述资源信息划分为共享资源以及独占资源,其中,所述共享资源分别存储于所述资源信息以及所述应用程序对应的资源库中;
在本发明实施例中,本步骤与上述步骤S102类似,本发明实施例在此不再一一赘述。
S203,删除所述资源信息中的所述共享资源,对所述资源信息中的所述独占资源对应的独占资源标识进行更新,生成目标资源标识,其中,所述目标资源标识与所述共享资源标识不一致;
S204,利用预设的编译工具对所述资源信息中经过更新的所述独占资源进行处理,生成目标资源信息;
在本发明实施例中,一方面删除资源信息中的共享资源,另一方面对资源信息中的独占资源对应的独占资源标识进行更新,以生成目标资源标识。其中,该目标资源标识与上述提取的共享资源标识不一致。
例如,共享资源对应的共享资源ID,其数值为以0x7f开头的数值,对独占资源对应的独占资源ID进行更新,将独占资源对应的独占资源ID中PP字段对应的数值修改为非0x7f,如此共享资源对应的共享资源ID与该独占资源对应的目标资源ID不同,可以防止ID冲突。
另外,本发明实施例可以获取用户输入的资源标识,即由用户指定目标资源标识,根据用户输入的资源标识对独占资源对应的独占资源标识进行更新,生成目标资源标识,与此同时可以展示上述提取的共享资源标识,防止用户输入的资源标识与共享资源标识一致。
例如,本发明实施例获取用户输入的资源ID中PP字段对应的数值:0x6f,根据用户输入的资源ID中PP字段对应的数值(0x6f)对独占资源对应的独占资源ID进行更新,生成目标资源ID,如此共享资源对应的共享资源ID(以0x7f开头的数值)与该独占资源对应的目标资源ID不同,可以防止ID冲突。
对上述资源信息中的独占资源对应的独占资源标识进行更新之后,可以利用预设的编译工具对资源信息中经过更新的独占资源进行处理,生成目标资源信息。
例如,利用APPT工具对资源信息中经过更新的独占资源进行处理,生成目标resources.arsc文件,该目标resources.arsc文件即目标资源信息。
S205,根据所述目标资源标识对所述资源信息对应的资源索引进行更新,其中,所述资源信息对应的资源索引中分别记录所述共享资源对应的共享资源标识以及独占资源对应的独占资源标识;
经过上述处理,对资源信息中的独占资源对应的独占资源标识进行更新,生成目标资源标识,可以基于目标资源标识对资源信息对应的资源索引进行更新。其中,资源信息对应的资源索引中分别记录共享资源对应的共享资源标识以及独占资源对应的独占资源标识。
例如,基于独占资源的目标资源ID对资源信息对应的资源索引进行更新,即利用独占资源的目标资源ID替换资源索引中记录的独占资源对应的独占资源标识,而对于资源索引中记录的共享资源对应的共享资源标识不进行任何处理。
S206,基于所述目标资源信息、预设的代码以及经过更新的所述资源信息对应的资源索引,生成应用程序包APK。
上述针对资源信息对应的资源索引进行更新,可以基于目标资源信息、预设的代码以及经过更新的资源索引,生成应用程序包APK,如此APK中包括目标资源信息、预设的代码以及经过更新的资源索引。
另外,为了确保应用程序正常运行,可以利用预设的反编译工具对应用程序包执行反编译操作,验证应用程序包中的资源是否生效。
在本发明实施例中,上述预设的反编译工具可以是Android Studio等,可以利用Android Studio对所述应用程序包执行反编译操作,验证所述应用程序包中的资源是否生效。
基于上述任一应用程序包的生成方法的实施例,如图3所示,为本发明实施例提供的一种应用程序更新方法的实施流程示意图,该方法具体可以包括以下步骤:
S301,获取应用程序包APK,并解析所述APK中的资源索引、代码以及目标资源信息,其中,所述资源索引中分别记录共享资源标识以及独占资源标识;
当需要对应用程序进行更新时,本发明实施例可以主动从服务端获取与应用程序对应的应用程序包APK,或者本发明实施例可以被动接收服务端下发的与应用程序对应的应用程序包APK,本发明实施例对此不作限定。
对于与应用程序对应的应用程序包APK,可以解析APK中的资源索引、代码以及目标资源信息。对于资源索引,其中分别记录共享资源标识以及独占资源标识,对于目标资源信息,其中包括独占资源。
S302,根据所述资源索引,在应用程序对应的资源库中查找所述APK对应的共享资源,以及在所述目标资源信息中查找所述APK对应的独占资源;
由于资源索引中分别记录共享资源标识以及独占资源标识,本发明实施例可以根据该资源索引,一方面在应用程序对应的资源库中查找APK对应的共享资源,意味着应用程序对应的资源库中存在可以令APK使用的共享资源,另一方面在目标资源信息中查找APK对应的独占资源。
例如,根据资源索引,可以在应用程序对应的资源库中查找APK对应的android_support,fresco,lottie等三方库以及基础资源,在目标资源信息中查找APK对应的独占资源。
S303,将所述共享资源与所述独占资源进行整合;
对于上述查找到的共享资源以及独占资源,可以整合至一处,例如目标资源信息中。例如对于共享资源:android_support,fresco,lottie等三方库以及基础资源,独占资源:APK独有的资源,进行整合。
S304,在所述代码运行过程中,基于所述共享资源与所述独占资源,对所述应用程序进行更新。
将共享资源与独占资源进行整合之后,后续在APK代码运行过程中,可以基于上述共享资源与独占资源对应用程序进行更新,如此实现需求的快速迭代更新部署上线。
与上述方法实施例相对应,本发明实施例还提供了一种应用程序包的生成装置,应用于服务端,如图4所示,该装置可以包括:获取模块410、资源划分模块420、资源删除模块430、APK生成模块440。
获取模块410,用于获取资源标识文件以及资源信息,其中,所述资源标识文件记录应用程序中共享资源对应的共享资源标识;
资源划分模块420,用于根据所述资源标识文件,将所述资源信息划分为共享资源以及独占资源,其中,所述共享资源分别存储于所述资源信息以及所述应用程序对应的资源库中;
资源删除模块430,用于删除所述资源信息中的所述共享资源,利用预设的编译工具对所述资源信息中的所述独占资源进行处理,生成目标资源信息;
APK生成模块440,用于基于所述目标资源信息、预设的代码以及所述资源信息对应的资源索引,生成应用程序包APK。
在本发明实施例的具体实施方式中,所述资源删除模块430还用于:
对所述资源信息中的所述独占资源对应的独占资源标识进行更新,生成目标资源标识,其中,所述目标资源标识与所述共享资源标识不一致;
利用预设的编译工具对所述资源信息中经过更新的所述独占资源进行处理,生成目标资源信息;
所述APK生成模块440具体用于:
根据所述目标资源标识对所述资源信息对应的资源索引进行更新,其中,所述资源信息对应的资源索引中分别记录所述共享资源对应的共享资源标识以及独占资源对应的独占资源标识;
基于所述目标资源信息、预设的代码以及经过更新的所述资源信息对应的资源索引,生成应用程序包APK。
在本发明实施例的具体实施方式中,所述装置还包括:
第一确定模块450,用于确定所述APK对应的资源以及所述应用程序对应的资源;
第二确定模块460,用于根据所述APK对应的资源以及所述应用程序对应的资源,确定所述APK与所述应用程序共享的资源;
文件生成模块470,用于根据所述APK与所述应用程序共享的资源对应的共享资源标识,生成所述资源标识文件。
本发明实施例还提供了一种应用程序更新装置,应用于客户端,如图5所示,该装置可以包括:AKP获取模块510、APK解析模块520、资源查找模块530、资源整合模块540、程序更新模块550。
AKP获取模块510,用于获取应用程序包APK;
APK解析模块520,用于解析所述APK中的资源索引、代码以及目标资源信息,其中,所述资源索引中分别记录共享资源标识以及独占资源标识;
资源查找模块530,用于根据所述资源索引,在应用程序对应的资源库中查找所述APK对应的共享资源,以及在所述目标资源信息中查找所述APK对应的独占资源;
资源整合模块540,用于将所述共享资源与所述独占资源进行整合;
程序更新模块550,用于在所述代码运行过程中,基于所述共享资源与所述独占资源,对所述应用程序进行更新。
本发明实施例还提供了一种电子设备,如图6所示,包括处理器61、通信接口62、存储器63和通信总线64,其中,处理器61,通信接口62,存储器63通过通信总线64完成相互间的通信,
存储器63,用于存放计算机程序;
处理器61,用于执行存储器63上所存放的程序时,实现如下步骤:
获取资源标识文件以及资源信息,其中,所述资源标识文件记录应用程序中共享资源对应的共享资源标识;
根据所述资源标识文件,将所述资源信息划分为共享资源以及独占资源,其中,所述共享资源分别存储于所述资源信息以及所述应用程序对应的资源库中;
删除所述资源信息中的所述共享资源,利用预设的编译工具对所述资源信息中的所述独占资源进行处理,生成目标资源信息;
基于所述目标资源信息、预设的代码以及所述资源信息对应的资源索引,生成应用程序包APK。
或者,
获取应用程序包APK,并解析所述APK中的资源索引、代码以及目标资源信息,其中,所述资源索引中分别记录共享资源标识以及独占资源标识;
根据所述资源索引,在应用程序对应的资源库中查找所述APK对应的共享资源,以及在所述目标资源信息中查找所述APK对应的独占资源;
将所述共享资源与所述独占资源进行整合;
在所述代码运行过程中,基于所述共享资源与所述独占资源,对所述应用程序进行更新。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processing,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种存储介质,该存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的应用程序包的生成方法或者应用程序更新方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的应用程序包的生成方法或者应用程序更新方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在存储介质中,或者从一个存储介质向另一个存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (8)
1.一种应用程序包的生成方法,其特征在于,所述方法执行于服务端,包括:
获取资源标识文件以及资源信息,其中,所述资源标识文件记录应用程序中共享资源对应的共享资源标识;
根据所述资源标识文件,将所述资源信息划分为共享资源以及独占资源,其中,所述共享资源分别存储于所述资源信息以及所述应用程序对应的资源库中;
删除所述资源信息中的所述共享资源,利用预设的编译工具对所述资源信息中的所述独占资源进行处理,生成目标资源信息,包括:对所述资源信息中的所述独占资源对应的独占资源标识进行更新,生成目标资源标识,其中,所述目标资源标识与所述共享资源标识不一致;利用预设的编译工具对所述资源信息中经过更新的所述独占资源进行处理,生成目标资源信息;
基于所述目标资源信息、预设的代码以及所述资源信息对应的资源索引,生成应用程序包APK包括:根据所述目标资源标识对所述资源信息对应的资源索引进行更新,其中,所述资源信息对应的资源索引中分别记录所述共享资源对应的共享资源标识以及独占资源对应的独占资源标识;基于所述目标资源信息、预设的代码以及经过更新的所述资源信息对应的资源索引,生成应用程序包APK。
2.根据权利要求1所述的方法,其特征在于,所述资源标识文件具体通过以下方式生成:
确定所述APK对应的资源以及所述应用程序对应的资源;
根据所述APK对应的资源以及所述应用程序对应的资源,确定所述APK与所述应用程序共享的资源;
根据所述APK与所述应用程序共享的资源对应的共享资源标识,生成所述资源标识文件。
3.一种基于权利要求1-2任一项所述方法的应用程序更新方法,其特征在于,所述方法执行于客户端,包括:
获取应用程序包APK,并解析所述APK中的资源索引、代码以及目标资源信息,其中,所述资源索引中分别记录共享资源标识以及独占资源标识;
根据所述资源索引,在应用程序对应的资源库中查找所述APK对应的共享资源,以及在所述目标资源信息中查找所述APK对应的独占资源;
将所述共享资源与所述独占资源进行整合;
在代码运行过程中,基于所述共享资源与所述独占资源,对所述应用程序进行更新。
4.一种应用程序包的生成装置,其特征在于,所述装置应用于服务端,包括:
获取模块,用于获取资源标识文件以及资源信息,其中,所述资源标识文件记录应用程序中共享资源对应的共享资源标识;
资源划分模块,用于根据所述资源标识文件,将所述资源信息划分为共享资源以及独占资源,其中,所述共享资源分别存储于所述资源信息以及所述应用程序对应的资源库中;
资源删除模块,用于删除所述资源信息中的所述共享资源,利用预设的编译工具对所述资源信息中的所述独占资源进行处理,生成目标资源信息;所述资源删除模块还用于:对所述资源信息中的所述独占资源对应的独占资源标识进行更新,生成目标资源标识,其中,所述目标资源标识与所述共享资源标识不一致;利用预设的编译工具对所述资源信息中经过更新的所述独占资源进行处理,生成目标资源信息;
APK生成模块,用于基于所述目标资源信息、预设的代码以及所述资源信息对应的资源索引,生成应用程序包APK;所述APK生成模块具体用于:根据所述目标资源标识对所述资源信息对应的资源索引进行更新,其中,所述资源信息对应的资源索引中分别记录所述共享资源对应的共享资源标识以及独占资源对应的独占资源标识;基于所述目标资源信息、预设的代码以及经过更新的所述资源信息对应的资源索引,生成应用程序包APK。
5.根据权利要求4所述的装置,其特征在于,所述装置还包括:
第一确定模块,用于确定所述APK对应的资源以及所述应用程序对应的资源;
第二确定模块,用于根据所述APK对应的资源以及所述应用程序对应的资源,确定所述APK与所述应用程序共享的资源;
文件生成模块,用于根据所述APK与所述应用程序共享的资源对应的共享资源标识,生成所述资源标识文件。
6.一种基于权利要求4-5任一项所述装置的应用程序更新装置,其特征在于,所述装置应用于客户端,包括:
AKP获取模块,用于获取应用程序包APK;
APK解析模块,用于解析所述APK中的资源索引、代码以及目标资源信息,其中,所述资源索引中分别记录共享资源标识以及独占资源标识;
资源查找模块,用于根据所述资源索引,在应用程序对应的资源库中查找所述APK对应的共享资源,以及在所述目标资源信息中查找所述APK对应的独占资源;
资源整合模块,用于将所述共享资源与所述独占资源进行整合;
程序更新模块,用于在代码运行过程中,基于所述共享资源与所述独占资源,对所述应用程序进行更新。
7.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-3任一所述的方法步骤。
8.一种存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-3中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911319352.2A CN111124480B (zh) | 2019-12-19 | 2019-12-19 | 应用程序包的生成方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911319352.2A CN111124480B (zh) | 2019-12-19 | 2019-12-19 | 应用程序包的生成方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111124480A CN111124480A (zh) | 2020-05-08 |
CN111124480B true CN111124480B (zh) | 2023-07-25 |
Family
ID=70500234
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911319352.2A Active CN111124480B (zh) | 2019-12-19 | 2019-12-19 | 应用程序包的生成方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111124480B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112052028B (zh) * | 2020-08-20 | 2024-05-14 | 北京智游网安科技有限公司 | 一种安卓应用程序包的生成方法、终端及存储介质 |
CN112306542B (zh) * | 2020-10-30 | 2023-09-05 | 北京奇艺世纪科技有限公司 | 一种应用程序包处理方法、装置、电子设备及存储介质 |
CN113126982B (zh) * | 2021-04-23 | 2024-01-19 | 上海绚显科技有限公司 | 一种应用程序生成、运行方法及装置 |
CN114579135B (zh) * | 2022-03-01 | 2023-09-05 | 抖音视界有限公司 | 一种安装包生成方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010113476A (ja) * | 2008-11-05 | 2010-05-20 | Ricoh Co Ltd | 情報処理装置、インストール方法、プログラム、記憶媒体 |
CN105867947A (zh) * | 2016-04-25 | 2016-08-17 | 青岛海信电器股份有限公司 | 预置应用程序升级后的数据处理方法及装置 |
CN106855816A (zh) * | 2016-12-13 | 2017-06-16 | 青岛海信电器股份有限公司 | 终端中应用程序的资源文件加载方法和装置 |
CN108089865A (zh) * | 2017-12-04 | 2018-05-29 | 北京小米移动软件有限公司 | 应用裁剪方法、装置及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10713028B2 (en) * | 2018-06-05 | 2020-07-14 | Microsoft Technology Licensing, Llc | On-demand installer for resource packages |
-
2019
- 2019-12-19 CN CN201911319352.2A patent/CN111124480B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010113476A (ja) * | 2008-11-05 | 2010-05-20 | Ricoh Co Ltd | 情報処理装置、インストール方法、プログラム、記憶媒体 |
CN105867947A (zh) * | 2016-04-25 | 2016-08-17 | 青岛海信电器股份有限公司 | 预置应用程序升级后的数据处理方法及装置 |
CN106855816A (zh) * | 2016-12-13 | 2017-06-16 | 青岛海信电器股份有限公司 | 终端中应用程序的资源文件加载方法和装置 |
CN108089865A (zh) * | 2017-12-04 | 2018-05-29 | 北京小米移动软件有限公司 | 应用裁剪方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111124480A (zh) | 2020-05-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111124480B (zh) | 应用程序包的生成方法、装置、电子设备及存储介质 | |
CN109829096B (zh) | 一种数据采集方法、装置、电子设备及存储介质 | |
CN110737594B (zh) | 自动生成测试用例的数据库标准符合性测试方法及装置 | |
US20140304683A1 (en) | Method, server and computer-readable recording media for managing metastore | |
CN106776266B (zh) | 测试工具的配置方法及终端设备 | |
CN106557307B (zh) | 业务数据的处理方法及处理系统 | |
CN111984264A (zh) | 一种静态库的生成方法和装置 | |
CN110209983B (zh) | 一种网页web项目的部署方法及装置 | |
CN110990001A (zh) | Ivr流程执行方法及装置 | |
US20180165086A1 (en) | System and method for automatic deployment of applications in an integrated development environment | |
CN111124382A (zh) | Java中的属性赋值方法、装置及服务器 | |
CN111443920B (zh) | 一种框架迁移方法及装置 | |
CN111240987B (zh) | 移植程序检测方法、装置、电子设备及计算机可读存储介质 | |
CN111399849B (zh) | 一种应用程序安装包的确定方法及系统 | |
CN106951236B (zh) | 插件的开发方法及装置 | |
CN108038233B (zh) | 一种采集文章的方法、装置、电子设备及存储介质 | |
CN111475148A (zh) | 第三方依赖库隔离方法及装置、电子设备、存储介质 | |
CN109408368B (zh) | 一种测试辅助信息的输出方法、存储介质和服务器 | |
CN112543104A (zh) | 应用程序打包方法、装置、电子设备及存储介质 | |
CN111736848A (zh) | 包冲突定位方法、装置、电子设备及可读存储介质 | |
CN108304188B (zh) | 一种数据类型转换方法及终端 | |
CN112749189A (zh) | 数据查询方法及装置 | |
CN114995799B (zh) | 一种汇编代码生成方法、装置及电子设备 | |
CN113687973B (zh) | 一种日志动态化输出的控制方法、设备及介质 | |
KR20190109619A (ko) | 권한 관리 방법 및 장치 |
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 |