应用程序打包方法及装置制造方法及图纸

技术编号:15704707 阅读:62 留言:0更新日期:2017-06-26 09:11
本发明专利技术公开了一种应用程序打包方法及装置。该方法包括:在使用gradle对应用程序或插件模块进行打包时,对gradle的特定任务进行监听;在gradle执行到上述特定任务之前,解析应用程序或插件模块的依赖配置文件,根据依赖配置文件将不需要打包的依赖库和依赖库中的特定java类从应用程序打包工程项目或插件模块打包工程项目的相应文件中删除;通过gradle对应用程序或插件模块继续进行打包。借助于本发明专利技术的技术方案,能够自由指定不需要打包到插件中的依赖库和文件,相对于ide自带的打包更加灵活方便。

【技术实现步骤摘要】
应用程序打包方法及装置
本专利技术涉及移动通讯领域,特别是涉及一种应用程序打包方法及装置。
技术介绍
随着安卓(android)程序功能的增多,程序也越来越大,在android程序的打包过程中,就会出现65KMethods问题,导致应用程序无法在android手机上面进行安装。其中,65KMethods是指android的Dalvik虚拟机在单个dex文件中只能包含65536个方法。如果android程序过大,此时就需要将程序进行拆分,比如使用插件框架进行拆分。在进行拆分的过程中就会遇到宿主和各个插件模块之间依赖相同的库和文件的情况,此时在打包时就需要只保留一份依赖库和文件到宿主程序中,而在插件模块则不能有这些库和文件,否则程序在运行时会出现类冲突,从而导致程序崩溃。现有技术中,可以使用gradle打包插件模块,同时需要让插件模块使用provided方式依赖共有库。Gradle是一个打包脚本,以Groovy语言为基础,面向Java应用为主,基于领域特定语言(DSL)语法的自动化构建工具。但是,使用gradle的provided模式依赖共有库时,共有库只能是jar文件,不能是aar文件,其中,jar是指Java归档文件(JavaArchive),是与平台无关的文件格式;aar是android库项目的二进制文件格式。此外,现有打包方式不支持打包时打入依赖库,而不打入该依赖库中的特定java类。例如:插件模块A依赖一个库B,其中B包括C.java,D.java,E.java等类。打包插件模块A时,需要将库B中除了C.java之外的部分全部打包进入插件模块A中。专
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的应用程序打包方法及装置。本专利技术提供一种应用程序打包方法,包括:在使用gradle对应用程序或插件模块进行打包时,对gradle的特定任务进行监听;在gradle执行到上述特定任务之前,解析应用程序或插件模块的依赖配置文件,根据依赖配置文件将不需要打包的依赖库和依赖库中的特定java类从应用程序打包工程项目或插件模块打包工程项目的相应文件中删除;通过gradle对应用程序或插件模块继续进行打包。本专利技术还提供了一种应用程序打包装置,包括:监听模块,用于在使用gradle对应用程序或插件模块进行打包时,对gradle的特定任务进行监听;处理模块,用于在gradle执行到上述特定任务之前,解析应用程序或插件模块的依赖配置文件,根据依赖配置文件将不需要打包的依赖库和依赖库中的特定java类从应用程序打包工程项目或插件模块打包工程项目的相应文件中删除,并通过gradle对应用程序或插件模块继续进行打包。本专利技术有益效果如下:根据依赖配置文件将不需要打包的依赖库和依赖库中的特定java类删除,使得在打包插件模块时,可以动态配置不打入插件模块的依赖库;还可以将依赖库打包到插件模块中,而不打入该依赖库中的特定java类,从而能够自由指定不需要打包到插件中的依赖库和文件,相对于ide自带的打包更加灵活方便。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1是本专利技术实施例的应用程序打包方法的流程图;图2是本专利技术实施例的应用程序打包装置的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。为了解决现有技术中的问题,本专利技术提供了一种应用程序打包方法及装置,以下结合附图以及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不限定本专利技术。方法实施例根据本专利技术的实施例,提供了一种应用程序打包方法,图1是本专利技术实施例的应用程序打包方法的流程图,如图1所示,根据本专利技术实施例的应用程序打包方法包括如下处理:步骤101,在使用gradle对应用程序或插件模块进行打包时,对gradle的特定任务进行监听;在本专利技术实施例中,特定任务包括:proguardRelease任务、dexRelease任务、dexDebug任务、以及proguardDebug任务。步骤102,在gradle执行到上述特定任务之前,解析应用程序或插件模块的依赖配置文件,根据依赖配置文件将不需要打包的依赖库和依赖库中的特定java类从应用程序打包工程项目或插件模块打包工程项目的相应文件中删除;其中,依赖配置文件包括:不打包到插件的依赖库列表和排除特定java类的依赖库列表。优选地,依赖配置文件的格式包括:json格式。步骤102具体包括如下处理:步骤1,根据依赖配置文件中的不打包到插件的依赖库列表,将应用程序打包工程项目或插件模块打包工程项目的相应文件中的不打包的依赖库文件删除;步骤2,根据排除特定java类的依赖库列表,将应用程序打包工程项目或插件模块打包工程项目的相应文件中找到对应的依赖库文件,在该依赖库文件中找到classes.jar文件,将classes.jar文件中的特定java类删除。步骤103,通过gradle对应用程序或插件模块继续进行打包。下面以打包插件模块为例,对本专利技术实施例的上述技术方案进行详细说明。在使用gradle打包插件模块时,监听gradle的proguardRelease,dexRelease,dexDebug,proguardDebug等task(其中task的名称会因为productFlavors和buildTypes有所不同,具体可参考gradle),在执行这些任务(task)之前,读取插件模块的依赖配置文件并解析,最后根据配置文件,删除需要排除的依赖库和依赖库中的相应文件即可。具体包括如下处理:步骤1,给gradle添加一个TaskExecutionListener,用于监听proguardRelease,dexRelease,dexDebug,proguardDebug等task。步骤2,当gradle执行到上述task之前,解析插件模块的依赖配置文件(该文件可以为json格式,也可以是其他任意格式),其中该文件包括两个部分a)不打包到插件的依赖库列表;b)排除特定java类的依赖库列表。步骤3,对于“不打包到插件的依赖库”,直接删除插件模块工程项目中的“build/intermediates/exploded-aar/”(该文件路径与gradle版本相关,不同版本的文件路径可能不同)文件中对应的依赖库文件即可。步骤4,对于“排除特定java类的依赖库”,首先需要在插件模块工程项目中的build/intermediates/exploded-aar/(该本文档来自技高网
...
应用程序打包方法及装置

【技术保护点】
一种应用程序打包方法,其特征在于,包括:在使用gradle对应用程序或插件模块进行打包时,对所述gradle的特定任务进行监听;在gradle执行到上述特定任务之前,解析所述应用程序或插件模块的依赖配置文件,根据所述依赖配置文件将不需要打包的依赖库和依赖库中的特定java类从应用程序打包工程项目或插件模块打包工程项目的相应文件中删除;通过gradle对应用程序或插件模块继续进行打包。

【技术特征摘要】
1.一种应用程序打包方法,其特征在于,包括:在使用gradle对应用程序或插件模块进行打包时,对所述gradle的特定任务进行监听;在gradle执行到上述特定任务之前,解析所述应用程序或插件模块的依赖配置文件,根据所述依赖配置文件将不需要打包的依赖库和依赖库中的特定java类从应用程序打包工程项目或插件模块打包工程项目的相应文件中删除;通过gradle对应用程序或插件模块继续进行打包。2.如权利要求1所述的方法,其特征在于,所述特定任务包括:proguardRelease任务、dexRelease任务、dexDebug任务、以及proguardDebug任务。3.如权利要求1所述的方法,其特征在于,依赖配置文件包括:不打包到插件的依赖库列表和排除特定java类的依赖库列表。4.如权利要求3所述的方法,其特征在于,根据所述依赖配置文件将不需要打包的依赖库和依赖库中的特定java类从应用程序打包工程项目或插件模块打包工程项目的相应文件中删除具体包括:根据所述依赖配置文件中的所述不打包到插件的依赖库列表,将应用程序打包工程项目或插件模块打包工程项目的相应文件中的不打包的依赖库文件删除;根据所述排除特定java类的依赖库列表,将所述应用程序打包工程项目或插件模块打包工程项目的相应文件中找到对应的依赖库文件,在该依赖库文件中找到classes.jar文件,将所述classes.jar文件中的特定java类删除。5.如权利要求1所述的方法,其特征在于,所述...

【专利技术属性】
技术研发人员:赵聪颖
申请(专利权)人:五八同城信息技术有限公司
类型:发明
国别省市:天津,12

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1