CN112905170A - 渠道包的生成方法、装置、设备及存储介质 - Google Patents
渠道包的生成方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112905170A CN112905170A CN202110257308.4A CN202110257308A CN112905170A CN 112905170 A CN112905170 A CN 112905170A CN 202110257308 A CN202110257308 A CN 202110257308A CN 112905170 A CN112905170 A CN 112905170A
- Authority
- CN
- China
- Prior art keywords
- package
- channel
- code
- configuration information
- program
- 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
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000004590 computer program Methods 0.000 claims description 13
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000009434 installation Methods 0.000 claims 1
- 230000008569 process Effects 0.000 abstract description 25
- 230000006870 function Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 8
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000000717 retained effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- 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/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种渠道包的生成方法、装置、设备及存储介质,属于计算机技术领域。所述方法包括:获取应用程序的编译资源,编译资源包括公共代码和至少一个差异代码;对编译资源进行编译处理,得到应用程序的全量程序包;获取应用程序的渠道配置信息,渠道配置信息用于指示应用程序在至少一个发布渠道中分别需要使用的代码部分;基于渠道配置信息和全量程序包,生成至少一个渠道包,至少一个渠道包中的第一渠道包与至少一个发布渠道中的第一发布渠道对应。由于本申请中需要编译的内容仅在全量程序包的生成过程中进行了一次编译,避免了针对不同发布渠道重复编译应用程序代码的情况,降低了编译的操作量级,有助于提升编译效率。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种渠道包的生成方法、装置、设备及存储介质。
背景技术
为了推广应用程序,在应用程序研发完成后,通常会在多个发布渠道发布应用程序。例如,可以用来发布应用程序的发布渠道包括应用程序商店、应用程序市场、应用程序管家、应用程序宝等。
通常,每个发布渠道都会有其对应的特殊要求,在某一发布渠道发布的应用程序需要满足该发布渠道的特殊要求。例如,发布渠道包括应用程序商店A和应用程序商店B,且应用程序商店A要求接入A类型的支付方式、应用程序商店B要求接入B类型的支付方式,那么,应用程序若想在应用程序商店A中发布,则应用程序需要开发A类型的支付方式功能;应用程序若想在应用程序商店B中发布,则应用程序需要开发B类型的支付方式功能。因此,在应用程序的发布过程中,需要针对不同的发布渠道编译不同的应用程序包。
然而,由于发布渠道众多,逐一针对各个发布渠道进行应用程序的源码编写、编译、打包等,会耗费大量的时间和人力,不仅造成资源的浪费,还严重地影响了应用程序的出包效率。
发明内容
本申请实施例提供了一种渠道包的生成方法、装置、设备及存储介质,可用于降低编译的操作量级,节约时间等成本,有助于提升应用程序的编译效率。所述技术方案如下:
一方面,本申请实施例提供了一种渠道包的生成方法,所述方法包括:
获取应用程序的编译资源,所述编译资源包括公共代码和至少一个差异代码,所述公共代码是指所述应用程序在至少一个发布渠道中均需使用的代码部分,所述差异代码是指所述应用程序在所述至少一个发布渠道中区别使用的代码部分;
对所述编译资源进行编译处理,得到所述应用程序的全量程序包;
获取所述应用程序的渠道配置信息,所述渠道配置信息用于指示所述应用程序在所述至少一个发布渠道中分别需要使用的代码部分;
基于所述渠道配置信息和所述全量程序包,生成至少一个渠道包,所述至少一个渠道包中的第一渠道包与所述至少一个发布渠道中的第一发布渠道对应。
另一方面,本申请实施例提供了一种渠道包的生成装置,所述装置包括:
资源获取模块,用于获取应用程序的编译资源,所述编译资源包括公共代码和至少一个差异代码,所述公共代码是指所述应用程序在至少一个发布渠道中均需使用的代码部分,所述差异代码是指所述应用程序在所述至少一个发布渠道中区别使用的代码部分;
资源编译模块,用于对所述编译资源进行编译处理,得到所述应用程序的全量程序包;
信息获取模块,用于获取所述应用程序的渠道配置信息,所述渠道配置信息用于指示所述应用程序在所述至少一个发布渠道中分别需要使用的代码部分;
渠道包生成模块,用于基于所述渠道配置信息和所述全量程序包,生成至少一个渠道包,所述至少一个渠道包中的第一渠道包与所述至少一个发布渠道中的第一发布渠道对应。
再一方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如上述渠道包的生成方法。
又一方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述渠道包的生成方法。
还一方面,本申请实施例提供了一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如上述渠道包的生成方法。
本申请实施例提供的技术方案可以带来如下有益效果:
通过预先将应用程序的源代码全面且无重复地进行编译,以产生完整全面的全量程序包,后续在渠道包的生成过程中,通过对预先编译得到的全量程序包进行裁剪、组合等处理,快速生成满足发布渠道要求的渠道包,提供了一种快速生成渠道包的方式。并且,由于需要编译的内容仅在全量程序包的生成过程中进行了一次编译,避免了针对不同发布渠道重复编译应用程序代码的情况,降低了编译的操作量级,节约了时间等成本,有助于提升编译效率。此外,本申请实施例中,由于渠道包的生成仅需对预先编译得到的全量程序包进行裁剪、组合等处理,而无需再次进行编译,有助于快速、批量地生成渠道包,提升应用程序的出包效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的应用程序发布系统的示意图;
图2是本申请一个实施例提供的渠道包的生成过程的示意图;
图3是本申请一个实施例提供的渠道包的生成方法的流程图;
图4是本申请一个实施例提供的渠道包的生成方法的示意图;
图5是本申请一个实施例提供的渠道包的生成装置的框图;
图6是本申请另一个实施例提供的渠道包的生成装置的框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
请参考图1,其示出了本申请一个实施例提供的应用程序发布系统的示意图。该应用程序发布系统可以包括:计算机设备10。
计算机设备10具备编译应用程序包的功能,例如,具有程序编译功能的服务器,或者是诸如手机、平板电脑、游戏主机、PC(Personal Computer,个人计算机)等终端,还可以是其它计算机设备。可选地,在计算机设备10实现为服务器的情况下,计算机设备可以是一台服务器,也可以是由多台服务器组成的服务器集群,或者是一个云计算服务中心。本申请实施例提供的技术方案,各步骤的执行主体可以是计算机设备10。
本申请实施例对计算机设备10所编译的应用程序的类型不作限定,在一个示例中,应用程序包括以下类型中的至少一种类型:社交类应用程序、游戏类应用程序、视频播放类应用程序、音频播放类应用程序、购物类应用程序、支付类应用程序、美食类应用程序、出行类应用程序、教育类应用程序、效率类应用程序、理财类应用程序、运动类应用程序、资讯类应用程序、生活类应用程序、拍摄类应用程序、工具类应用程序、主题类应用程序。
可选地,应用程序有多个发布渠道,如图1所示,可以发布应用程序的发布渠道包括应用程序商店、应用程序市场、应用程序管家、应用程序宝等。通常,每个发布渠道都会有其对应的特殊要求,在某一发布渠道发布的应用程序需要满足该发布渠道的特殊要求。例如,发布渠道包括应用程序商店和应用程序市场,且应用程序商店要求接入A类型的支付方式、应用程序市场要求接入B类型的支付方式,那么,应用程序若想在应用程序商店中发布,则应用程序需要开发A类型的支付方式功能;应用程序若想在应用程序市场中发布,则应用程序需要开发B类型的支付方式功能。因此,在应用程序的发布过程中,计算机设备10需要针对不同的发布渠道编译不同的应用程序包。
在一个示例中,应用程序的源代码分为公共代码和差异代码。其中,公共代码是指应用程序在上述至少一个发布渠道中均需使用的代码部分;差异代码是指应用程序在上述至少一个发布渠道中区别使用的代码部分。因此,差异代码是可以依据不同的发布渠道来区别化地编写的。在计算机设备10编译应用程序的源代码的过程中,针对不同的发布渠道,可以选用不同的差异代码,以结合公共代码来参与编译,从而满足不同的发布渠道的特殊要求。
如图2所示,应用程序的源代码分为公共代码210和至少一个差异代码220,在计算机设备编译应用程序的过程中,针对某一发布渠道,可以从至少一个差异代码220中选择需要的差异代码,并结合公共代码210来参与编译。示例性地,如图2所示,针对应用程序商店,计算机设备采用公共代码210和至少一个差异代码220中的差异代码1来参与编译,进而得到应用程序的渠道包1;针对应用程序市场,计算机设备采用公共代码210和至少一个差异代码220中的差异代码2来参与编译,进而得到应用程序的渠道包2;针对应用程序管家,计算机设备采用公共代码210和至少一个差异代码220中的差异代码3来参与编译,进而得到应用程序的渠道包3。
然而,在上述示例中,针对应用程序在不同发布渠道中的渠道包编译,计算机设备均需重新编译公共代码。由于公共代码的编译时长是整个编译流程中耗时最长的部分,因此,在计算机设备需要针对多个发布渠道分别编译应用程序的渠道包时,其编译时长通常是一个渠道包的编译时长的多倍,不仅造成资源的浪费,还严重地影响了应用程序的出包效率。
基于此,本申请实施例提供了一种渠道包的生成方法,可用于解决上述技术问题。下面,结合几个实施例对本申请的技术方案进行介绍说明。
请参考图3,其示出了本申请一个实施例提供的渠道包的生成方法的流程图。该方法可应用于上文介绍的计算机设备10中。该方法可以包括如下几个步骤中的至少部分步骤。
步骤310,获取应用程序的编译资源,编译资源包括公共代码和至少一个差异代码。
应用程序的编译资源是指计算机设备在编译应用程序的过程中需要使用的资源。本申请实施例中,应用程序的编译资源包括公共代码和至少一个差异代码,公共代码是指应用程序在至少一个发布渠道中均需使用的代码部分,差异代码是指应用程序在至少一个发布渠道中区别使用的代码部分。可选地,编译资源中的公共代码和差异代码均属于应用程序的源代码。可选地,应用程序的编译资源还可以包括其它内容,例如,应用程序的编译资源还包括渠道配置信息,以用于指示应用程序在至少一个发布渠道中分别需要使用的代码部分。
在一个示例中,计算机设备将公共代码和至少一个差异代码做成相应的模块,每个模块均有其对应的标识(如名称等),以唯一标识该模块。可选地,计算机设备采用AABdynamic-feature(AAB(Android App Bundle,安卓应用程序包)动态特征,AAB技术中提供的一种模块编译工具,类似于AGP(Android Gradle Plugin,插入式的安卓插件,用于打包安卓应用程序的编译工具)中的library(程序库))来生成模块。示例性地,公共代码可以对应公共模块(Base Module),差异代码可以对应动态模块(Dynamic Module),可选地,差异代码1可以对应动态模块1,差异代码2可以对应动态模块2,依次类推。
步骤320,对编译资源进行编译处理,得到应用程序的全量程序包。
在获取到应用程序的编译资源之后,计算机设备可以对编译资源进行编译处理,以得到应用程序的全量程序包。可选地,计算机设备采用AGP工具对编译资源进行编译打包处理,以得到应用程序的全量程序包。可选地,应用程序的全量程序包的格式为AAB。本申请实施例中,应用程序的全量程序包包括经过编译的公共代码和至少一个差异代码,在应用程序的编译资源包括上述渠道配置信息的情况下,应用程序的全量程序包还包括该渠道配置信息。
步骤330,获取应用程序的渠道配置信息,渠道配置信息用于指示应用程序在至少一个发布渠道中分别需要使用的代码部分。
在针对具体的发布渠道实际生成渠道包时,计算机设备需要获取应用程序的渠道配置信息,以确定应用程序在至少一个发布渠道中分别需要使用的代码部分。本申请实施例对计算机设备获取渠道配置信息的方式不作限定,在一个示例中,编译资源还包括渠道配置信息,从而渠道配置信息在步骤320中被打包进全量程序包中,因此,上述步骤330包括:从全量程序包中读取渠道配置信息;在另一个示例中,编译资源不包括渠道配置信息,从而计算机设备在读取全量程序包之外获取渠道配置信息。
步骤340,基于渠道配置信息和全量程序包,生成至少一个渠道包,至少一个渠道包中的第一渠道包与至少一个发布渠道中的第一发布渠道对应。
基于渠道配置信息,计算机设备可以明确各个发布渠道中所需的代码部分,进而可以对全量程序包进行裁剪、组合等处理,以生成各个发布渠道对应的渠道包。可选地,在全量程序包的格式为AAB的情况下,计算机设备可以采用Bundletool(一种用于操作AAB文件的工具,可以将AAB文件转换为APK文件,也可以修改AAB文件)工具生成至少一个渠道包。可选地,渠道包的格式包括AAB或者APK(AndroidPackage,安卓安装包)。有关渠道包生成过程的具体示例,请参见下述实施例,此处不多赘述。
综上所述,本申请实施例提供的技术方案,通过预先将应用程序的源代码全面且无重复地进行编译,以产生完整全面的全量程序包,后续在渠道包的生成过程中,通过对预先编译得到的全量程序包进行裁剪、组合等处理,快速生成满足发布渠道要求的渠道包,提供了一种快速生成渠道包的方式。并且,由于需要编译的内容仅在全量程序包的生成过程中进行了一次编译,避免了针对不同发布渠道重复编译应用程序代码的情况,降低了编译的操作量级,节约了时间等成本,有助于提升编译效率。此外,本申请实施例中,由于渠道包的生成仅需对预先编译得到的全量程序包进行裁剪、组合等处理,而无需再次进行编译,有助于快速、批量地生成渠道包,提升应用程序的出包效率。
下面,以几个示例对渠道包的生成过程进行介绍说明。
在一种可能的实施方式中,上述步骤340包括:基于渠道配置信息,确定第一配置信息,第一配置信息用于指示应用程序在第一发布渠道中需要使用的代码部分;基于第一配置信息,对全量程序包进行处理,得到第一渠道包。
以计算机设备生成至少一个发布渠道中的第一发布渠道所对应的渠道包为例,计算机设备可以从渠道配置信息中确定第一配置信息,该第一配置信息用于指示应用程序在第一发布渠道中需要使用的代码部分。之后,计算机设备基于第一配置信息对全量程序包进行处理,以得到第一渠道包。可选地,至少一个发布渠道中的其它发布渠道所对应的渠道包,可以与第一渠道包以相同的生成方式生成,且可以与第一渠道包同时生成,也即,计算机设备可以并行、批量生成应用程序在多个发布渠道中对应的渠道包。
在一个示例中,第一渠道包的格式和全量程序包的格式相同。例如,第一渠道包的格式和全量程序包的格式均为AAB。基于此,可选地,上述基于第一配置信息,对全量程序包进行处理,得到第一渠道包,包括:基于第一配置信息,对全量程序包进行裁剪处理,得到至少一个代码模块;组合至少一个代码模块,得到第一渠道包。
至少一个代码模块包括全量程序包中与第一配置信息对应的代码模块,也即,在此示例中,计算机设备在对全量程序包进行裁剪时,保留第一配置信息对应的代码模块,而删除其它的模块。由于在此示例中,第一渠道包的格式和全量程序包的格式相同,因此,计算机设备组合至少一个代码模块,即可得到第一渠道包。
在另一个示例中,第一渠道包的格式和全量程序包的格式不相同。示例性地,第一渠道包的格式为APK,全量程序包的格式为AAB。基于此,可选地,上述基于第一配置信息,对全量程序包进行处理,得到第一渠道包,包括:基于第一配置信息,对全量程序包进行裁剪处理,得到至少一个代码模块;组合至少一个代码模块,得到第一程序包;对第一程序包进行格式转换处理,得到第一渠道包。
与上述示例相同,此示例中,计算机设备在对全量程序包进行裁剪时,也是保留第一配置信息对应的代码模块,而删除其它的模块,因此,至少一个代码模块包括全量程序包中与第一配置信息对应的代码模块。由于此示例中,第一渠道包的格式和全量程序包的格式不相同,因此,计算机设备组合至少一个代码模块得到第一程序包之后,还需对第一程序包进行格式转换处理,以得到第一渠道包。
需要说明的一点是,在第一渠道包的格式和全量程序包的格式不相同的情况下,计算机设备也可以先对全量程序包进行格式转换处理,以得到和第一渠道包相同的格式,再对转换后的全量程序包进行裁剪、组合等处理,以得到第一渠道包;或者,计算机设备也可以在对全量程序包进行裁剪得到至少一个代码模块后,先对至少一个代码模块进行格式转换处理,以得到和第一渠道包相同的格式,再对转换后的至少一个代码模块进行组合等处理,以得到第一渠道包。应理解,这些均应属于本申请的保护范围之内。
在另一种可能的实施方式中,上述步骤340包括:基于渠道配置信息,对全量程序包进行裁剪处理,得到n个代码模块;基于渠道配置信息,从n个代码模块中选择第一发布渠道对应的m个代码模块;基于m个代码模块,生成第一渠道包。
上述示例中,计算机设备是依据某一具体的发布渠道对应的配置信息对全量程序包进行裁剪处理。在本示例中,计算机设备可以依据所有的发布渠道对应的配置信息对全量程序包进行全面地裁剪处理,也即,计算机设备基于渠道配置信息对全量程序包进行裁剪处理,得到n个代码模块,n为大于1的整数。之后,对于至少一个发布渠道中的第一发布渠道,计算机设备从n个代码模块中选择第一发布渠道对应的m个代码模块,并基于这m个代码模块生成第一渠道包,m为小于或等于n的正整数。可选地,至少一个发布渠道中的其它发布渠道所对应的渠道包,可以与第一渠道包以相同的生成方式生成,且可以与第一渠道包同时生成,也即,计算机设备可以并行、批量生成应用程序在多个发布渠道中对应的渠道包。
在一个示例中,第一渠道包的格式和全量程序包的格式相同。例如,第一渠道包的格式和全量程序包的格式均为AAB。基于此,可选地,上述基于m个代码模块,生成第一渠道包,包括:组合m个代码模块,得到第一渠道包。由于第一渠道包的格式和全量程序包的格式相同,而m个代码模块又是对全量程序包裁剪得到的,因而第一渠道包的格式和m个代码模块的格式也是相同的,从而,计算机设备组合m个代码模块,即可得到第一渠道包。
在另一个示例中,第一渠道包的格式和全量程序包的格式不相同。示例性地,第一渠道包的格式为APK,全量程序包的格式为AAB。基于此,可选地,上述基于m个代码模块,生成第一渠道包,包括:组合m个代码模块,得到第一程序包;对第一程序包进行格式转换处理,得到第一渠道包。由于在此示例中,第一渠道包的格式和全量程序包的格式不相同,而m个代码模块又是对全量程序包裁剪得到的,因而第一渠道包的格式和m个代码模块的格式也是不相同的,因此,计算机设备组合m个代码模块得到第一程序包之后,还需对第一程序包进行格式转换处理,以得到第一渠道包。
综上所述,本申请实施例提供的技术方案,通过基于渠道配置信息对全量程序包进行裁剪、组合等处理,生成应用程序在各个发布渠道中的渠道包,由于渠道包的生成过程中无需再次编译应用程序的源码,从而可以快速、批量地生成应用程序的渠道包。并且,本申请实施例支持多种渠道包的格式,使得应用程序的渠道包的生成更加灵活。
请参考图4,其示出了本申请一个实施例提供的渠道包的生成方法的示意图。该方法可应用于上文介绍的计算机设备10中。该方法可以包括如下几个步骤中的至少部分步骤。
如图4所示,计算机设备首先获取应用程序的编译资源,该编译资源包括公共代码、至少一个差异代码以及渠道配置信息。其中,渠道配置信息用于指示应用程序在至少一个发布渠道中分别需要使用的代码部分。本申请实施例中,计算机设备将公共代码和至少一个差异代码均做成相应的模块,例如,如图4所示,公共代码对应公共模块、差异代码对应动态模块。
之后,计算机设备采用AGP工具对应用程序的编译资源进行编译处理,得到全量程序包,如图4所示。该全量程序包包括上述公共模块和至少一个动态模块,以及渠道配置信息。计算机设备可以从全量程序包中读取渠道配置信息以指导后续渠道包的生成。
在本示例中,全量程序包的格式为AAB,应用程序在各个发布渠道中的渠道包的格式包括AAB或者APK,因此,本示例中,计算机设备分为两种情况产生渠道包:AAB渠道包的生成方式、APK渠道包的生成方式。可选地,本示例中,计算机设备通过Bundletool工具生成渠道包。
如图4所示,AAB渠道包的生成过程包括:计算机设备获取预先生成的全量程序包,从全量程序包中读取渠道配置信息,之后,采用Bundletool工具基于读取到的渠道配置信息对全量程序包进行裁剪、组合处理,得到至少一个渠道包。例如,对于发布渠道1,保留公共模块和动态模块1,删除其它模块,并组合公共模块和动态模块1;对于发布渠道2,保留公共模块和动态模块2,删除其它模块,并组合公共模块和动态模块2。
如图4所示,APK渠道包的生成过程包括:计算机设备获取预先生成的全量程序包,从全量程序包中读取渠道配置信息,之后,采用Bundletool工具基于读取到的渠道配置信息对全量程序包进行处理得到至少一个渠道包。例如,对于发布渠道1,渠道包编译时指定公共模块和动态模块1,从而,计算机设备采用Bundletool工具从全量程序包中提取相关信息,并进行处理得到渠道包1;对于发布渠道2,渠道包编译时指定公共模块和动态模块2,从而,计算机设备采用Bundletool工具从全量程序包中提取相关信息,并进行处理得到渠道包2。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图5,其示出了本申请一个实施例提供的渠道包的生成装置的框图。该装置具有实现上述渠道包的生成方法示例的功能,所述功能可以由硬件实现,也可以由硬件执行相应的软件实现。该装置可以是上述计算机设备,也可以设置在上述计算机设备中。该装置500可以包括:资源获取模块510、资源编译模块520、信息获取模块530和渠道包生成模块540。
资源获取模块510,用于获取应用程序的编译资源,所述编译资源包括公共代码和至少一个差异代码,所述公共代码是指所述应用程序在至少一个发布渠道中均需使用的代码部分,所述差异代码是指所述应用程序在所述至少一个发布渠道中区别使用的代码部分。
资源编译模块520,用于对所述编译资源进行编译处理,得到所述应用程序的全量程序包。
信息获取模块530,用于获取所述应用程序的渠道配置信息,所述渠道配置信息用于指示所述应用程序在所述至少一个发布渠道中分别需要使用的代码部分。
渠道包生成模块540,用于基于所述渠道配置信息和所述全量程序包,生成至少一个渠道包,所述至少一个渠道包中的第一渠道包与所述至少一个发布渠道中的第一发布渠道对应。
在一个示例中,如图6所示,上述渠道包生成模块540包括:信息确定单元542,用于基于所述渠道配置信息,确定第一配置信息,所述第一配置信息用于指示所述应用程序在所述第一发布渠道中需要使用的代码部分;第一生成单元544,用于基于所述第一配置信息,对所述全量程序包进行处理,得到所述第一渠道包。
在一个示例中,所述第一渠道包的格式和所述全量程序包的格式相同;如图6所示,所述第一生成单元544,用于:基于所述第一配置信息,对所述全量程序包进行裁剪处理,得到至少一个代码模块,所述至少一个代码模块包括所述全量程序包中与所述第一配置信息对应的代码模块;组合所述至少一个代码模块,得到所述第一渠道包。
在一个示例中,所述第一渠道包的格式和所述全量程序包的格式不相同;如图6所示,所述第一生成单元544,用于:基于所述第一配置信息,对所述全量程序包进行裁剪处理,得到至少一个代码模块,所述至少一个代码模块包括所述全量程序包中与所述第一配置信息对应的代码模块;组合所述至少一个代码模块,得到第一程序包;对所述第一程序包进行格式转换处理,得到所述第一渠道包。
在一个示例中,如图6所示,上述渠道包生成模块540包括:程序包裁剪单元541,用于基于所述渠道配置信息,对所述全量程序包进行裁剪处理,得到n个代码模块,所述n为大于1的整数;模块选择单元543,用于基于所述渠道配置信息,从所述n个代码模块中选择所述第一发布渠道对应的m个代码模块,所述m为小于或等于所述n的正整数;第二生成单元545,用于基于所述m个代码模块,生成所述第一渠道包。
在一个示例中,所述第一渠道包的格式和所述全量程序包的格式相同;如图6所示,所述第二生成单元545,用于:所述基于所述m个代码模块,生成所述第一渠道包,包括:组合所述m个代码模块,得到所述第一渠道包。
在一个示例中,所述第一渠道包的格式和所述全量程序包的格式不相同;如图6所示,所述第二生成单元545,用于:组合所述m个代码模块,得到第一程序包;对所述第一程序包进行格式转换处理,得到所述第一渠道包。
在一个示例中,所述编译资源还包括所述渠道配置信息;所述信息获取模块530,用于从所述全量程序包中读取所述渠道配置信息。
在一个示例中,所述全量程序包的格式包括AAB;所述第一渠道包的格式包括AAB或者APK。
综上所述,本申请实施例提供的技术方案,通过预先将应用程序的源代码全面且无重复地进行编译,以产生完整全面的全量程序包,后续在渠道包的生成过程中,通过对预先编译得到的全量程序包进行裁剪、组合等处理,快速生成满足发布渠道要求的渠道包,提供了一种快速生成渠道包的方式。并且,由于需要编译的内容仅在全量程序包的生成过程中进行了一次编译,避免了针对不同发布渠道重复编译应用程序代码的情况,降低了编译的操作量级,节约了时间等成本,有助于提升编译效率。此外,本申请实施例中,由于渠道包的生成仅需对预先编译得到的全量程序包进行裁剪、组合等处理,而无需再次进行编译,有助于快速、批量地生成渠道包,提升应用程序的出包效率。
需要说明的是,上述实施例提供的装置在实现其功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的装置与方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
在示例性实施例中,还提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如上述渠道包的生成方法。
在示例性实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上述渠道包的生成方法。
在示例性实施例中,还提供一种计算机程序产品,当所述计算机程序产品在计算机设备上运行时,使得计算机设备执行如上述渠道包的生成方法。
以上所述仅为本申请的示例性实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (12)
1.一种渠道包的生成方法,其特征在于,所述方法包括:
获取应用程序的编译资源,所述编译资源包括公共代码和至少一个差异代码,所述公共代码是指所述应用程序在至少一个发布渠道中均需使用的代码部分,所述差异代码是指所述应用程序在所述至少一个发布渠道中区别使用的代码部分;
对所述编译资源进行编译处理,得到所述应用程序的全量程序包;
获取所述应用程序的渠道配置信息,所述渠道配置信息用于指示所述应用程序在所述至少一个发布渠道中分别需要使用的代码部分;
基于所述渠道配置信息和所述全量程序包,生成至少一个渠道包,所述至少一个渠道包中的第一渠道包与所述至少一个发布渠道中的第一发布渠道对应。
2.根据权利要求1所述的方法,其特征在于,所述基于所述渠道配置信息和所述全量程序包,生成至少一个渠道包,包括:
基于所述渠道配置信息,确定第一配置信息,所述第一配置信息用于指示所述应用程序在所述第一发布渠道中需要使用的代码部分;
基于所述第一配置信息,对所述全量程序包进行处理,得到所述第一渠道包。
3.根据权利要求2所述的方法,其特征在于,所述第一渠道包的格式和所述全量程序包的格式相同;
所述基于所述第一配置信息,对所述全量程序包进行处理,得到所述第一渠道包,包括:
基于所述第一配置信息,对所述全量程序包进行裁剪处理,得到至少一个代码模块,所述至少一个代码模块包括所述全量程序包中与所述第一配置信息对应的代码模块;
组合所述至少一个代码模块,得到所述第一渠道包。
4.根据权利要求2所述的方法,其特征在于,所述第一渠道包的格式和所述全量程序包的格式不相同;
所述基于所述第一配置信息,对所述全量程序包进行处理,得到所述第一渠道包,包括:
基于所述第一配置信息,对所述全量程序包进行裁剪处理,得到至少一个代码模块,所述至少一个代码模块包括所述全量程序包中与所述第一配置信息对应的代码模块;
组合所述至少一个代码模块,得到第一程序包;
对所述第一程序包进行格式转换处理,得到所述第一渠道包。
5.根据权利要求1所述的方法,其特征在于,所述基于所述渠道配置信息和所述全量程序包,生成至少一个渠道包,包括:
基于所述渠道配置信息,对所述全量程序包进行裁剪处理,得到n个代码模块,所述n为大于1的整数;
基于所述渠道配置信息,从所述n个代码模块中选择所述第一发布渠道对应的m个代码模块,所述m为小于或等于所述n的正整数;
基于所述m个代码模块,生成所述第一渠道包。
6.根据权利要求5所述的方法,其特征在于,所述第一渠道包的格式和所述全量程序包的格式相同;
所述基于所述m个代码模块,生成所述第一渠道包,包括:
组合所述m个代码模块,得到所述第一渠道包。
7.根据权利要求5所述的方法,其特征在于,所述第一渠道包的格式和所述全量程序包的格式不相同;
所述基于所述m个代码模块,生成所述第一渠道包,包括:
组合所述m个代码模块,得到第一程序包;
对所述第一程序包进行格式转换处理,得到所述第一渠道包。
8.根据权利要求1所述的方法,其特征在于,所述编译资源还包括所述渠道配置信息;所述获取所述应用程序的渠道配置信息,包括:
从所述全量程序包中读取所述渠道配置信息。
9.根据权利要求1至8任一项所述的方法,其特征在于,所述全量程序包的格式包括安卓应用程序包AAB;所述第一渠道包的格式包括AAB或者安卓安装包APK。
10.一种渠道包的生成装置,其特征在于,所述装置包括:
资源获取模块,用于获取应用程序的编译资源,所述编译资源包括公共代码和至少一个差异代码,所述公共代码是指所述应用程序在至少一个发布渠道中均需使用的代码部分,所述差异代码是指所述应用程序在所述至少一个发布渠道中区别使用的代码部分;
资源编译模块,用于对所述编译资源进行编译处理,得到所述应用程序的全量程序包;
信息获取模块,用于获取所述应用程序的渠道配置信息,所述渠道配置信息用于指示所述应用程序在所述至少一个发布渠道中分别需要使用的代码部分;
渠道包生成模块,用于基于所述渠道配置信息和所述全量程序包,生成至少一个渠道包,所述至少一个渠道包中的第一渠道包与所述至少一个发布渠道中的第一发布渠道对应。
11.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机程序,所述计算机程序由所述处理器加载并执行以实现如权利要求1至9任一项所述的渠道包的生成方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至9任一项所述的渠道包的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110257308.4A CN112905170B (zh) | 2021-03-09 | 2021-03-09 | 渠道包的生成方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110257308.4A CN112905170B (zh) | 2021-03-09 | 2021-03-09 | 渠道包的生成方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112905170A true CN112905170A (zh) | 2021-06-04 |
CN112905170B CN112905170B (zh) | 2024-04-19 |
Family
ID=76108381
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110257308.4A Active CN112905170B (zh) | 2021-03-09 | 2021-03-09 | 渠道包的生成方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112905170B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377415A (zh) * | 2021-06-28 | 2021-09-10 | 郑州阿帕斯数云信息科技有限公司 | 应用发布方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120089668A1 (en) * | 2010-10-08 | 2012-04-12 | Lumi Mobile | Multi-phased and partitioned content preparation and delivery |
CN106502715A (zh) * | 2016-09-19 | 2017-03-15 | 乐视控股(北京)有限公司 | 一种应用程序多渠道配置方法及装置 |
CN106681784A (zh) * | 2016-12-23 | 2017-05-17 | 维沃移动通信有限公司 | 一种系统软件管理方法及移动终端 |
CN107193544A (zh) * | 2017-04-01 | 2017-09-22 | 北京五八信息技术有限公司 | 一种应用程序组件化开发方法及装置 |
CN107203395A (zh) * | 2017-05-19 | 2017-09-26 | 北京京东尚科信息技术有限公司 | 资源升级方法、装置及计算机可读存储介质和电子设备 |
US9876729B1 (en) * | 2015-06-24 | 2018-01-23 | Cadence Design Systems, Inc. | Method and system for efficient data streaming in an emulation system |
CN107844301A (zh) * | 2017-12-12 | 2018-03-27 | 苏州蜗牛数字科技股份有限公司 | 一种安卓应用渠道合包方法及装置 |
CN111078223A (zh) * | 2018-10-22 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 一种应用程序的打包方法及装置 |
CN112052013A (zh) * | 2020-08-03 | 2020-12-08 | 完美世界(北京)软件科技发展有限公司 | 软件包的生成方法及装置、存储介质、电子装置 |
CN112256321A (zh) * | 2020-11-18 | 2021-01-22 | 腾讯科技(深圳)有限公司 | 静态库打包方法、装置、计算机设备和存储介质 |
CN112416353A (zh) * | 2020-08-10 | 2021-02-26 | 上海幻电信息科技有限公司 | 渠道包打包方法、装置及计算机设备 |
-
2021
- 2021-03-09 CN CN202110257308.4A patent/CN112905170B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120089668A1 (en) * | 2010-10-08 | 2012-04-12 | Lumi Mobile | Multi-phased and partitioned content preparation and delivery |
US9876729B1 (en) * | 2015-06-24 | 2018-01-23 | Cadence Design Systems, Inc. | Method and system for efficient data streaming in an emulation system |
CN106502715A (zh) * | 2016-09-19 | 2017-03-15 | 乐视控股(北京)有限公司 | 一种应用程序多渠道配置方法及装置 |
CN106681784A (zh) * | 2016-12-23 | 2017-05-17 | 维沃移动通信有限公司 | 一种系统软件管理方法及移动终端 |
CN107193544A (zh) * | 2017-04-01 | 2017-09-22 | 北京五八信息技术有限公司 | 一种应用程序组件化开发方法及装置 |
CN107203395A (zh) * | 2017-05-19 | 2017-09-26 | 北京京东尚科信息技术有限公司 | 资源升级方法、装置及计算机可读存储介质和电子设备 |
CN107844301A (zh) * | 2017-12-12 | 2018-03-27 | 苏州蜗牛数字科技股份有限公司 | 一种安卓应用渠道合包方法及装置 |
CN111078223A (zh) * | 2018-10-22 | 2020-04-28 | 腾讯科技(深圳)有限公司 | 一种应用程序的打包方法及装置 |
CN112052013A (zh) * | 2020-08-03 | 2020-12-08 | 完美世界(北京)软件科技发展有限公司 | 软件包的生成方法及装置、存储介质、电子装置 |
CN112416353A (zh) * | 2020-08-10 | 2021-02-26 | 上海幻电信息科技有限公司 | 渠道包打包方法、装置及计算机设备 |
CN112256321A (zh) * | 2020-11-18 | 2021-01-22 | 腾讯科技(深圳)有限公司 | 静态库打包方法、装置、计算机设备和存储介质 |
Non-Patent Citations (3)
Title |
---|
LUCA ARDITO 等: "Automated Test Selection for Android Apps Based on APK and Activity Classification", 《IEEE ACCESS 》, no. 8, 8 October 2020 (2020-10-08), pages 187648 - 187670, XP011815453, DOI: 10.1109/ACCESS.2020.3029735 * |
WEIXIN_33912638: "Android多渠道包生成最佳实践(二)", Retrieved from the Internet <URL:《https://blog.csdn.net/weixin_33912638/article/details/88021345》> * |
曹铭斌: "游戏客户端基于XSDK在云端自动化打包方法的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》, no. 2, 15 February 2017 (2017-02-15), pages 138 - 2555 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113377415A (zh) * | 2021-06-28 | 2021-09-10 | 郑州阿帕斯数云信息科技有限公司 | 应用发布方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN112905170B (zh) | 2024-04-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200285508A1 (en) | Method and Apparatus for Assigning Computing Task | |
CN109739524B (zh) | 一种软件安装包的生成方法、装置、电子设备及存储介质 | |
CN109062617A (zh) | 一种支持多类型设备的平台的应用方法、移动终端 | |
CN110908707B (zh) | 一种资源打包方法、装置、服务器及存储介质 | |
CN110688096B (zh) | 包含插件的应用程序的构建方法、装置、介质及电子设备 | |
CN111796865B (zh) | 一种字节码文件修改方法、装置、终端设备及介质 | |
CN100511140C (zh) | 构件化软件系统实现脚本语言调用多输出参数接口的方法 | |
CN113434147B (zh) | 基于ProtoBuf协议的消息解析方法及装置 | |
CN110888972A (zh) | 一种基于Spark Streaming的敏感内容识别方法及装置 | |
CN115495212A (zh) | 任务队列处理方法、装置、设备、存储介质及程序产品 | |
CN112905170A (zh) | 渠道包的生成方法、装置、设备及存储介质 | |
CN114218175A (zh) | 一种资源跨平台共享方法、装置、终端设备及存储介质 | |
CN111488286A (zh) | 一种Android模块独立开发的方法及装置 | |
CN114385173A (zh) | 编译方法、装置、设备及存储介质 | |
CN115934537A (zh) | 接口测试工具生成方法、装置、设备、介质及产品 | |
CN114840195A (zh) | 一种针对iOS SDK静态库的私有化方法 | |
CN115310127A (zh) | 一种数据脱敏方法及装置 | |
CN116204201B (zh) | 业务处理方法和装置 | |
CN112612754B (zh) | 一种文件搜索方法、系统、装置及计算机存储介质 | |
CN112379915B (zh) | 一种源代码处理方法及装置 | |
CN110908898B (zh) | 生成测试方案的方法及系统 | |
CN110825438B (zh) | 用于模拟人工智能芯片的数据处理的方法和装置 | |
CN118656290A (zh) | 接口模拟方法、装置及电子设备 | |
CN117891400A (zh) | 一种模型仿真数据存储方法、装置、设备和存储介质 | |
CN115311124A (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 |