CN109086048A - 一种Android客户端项目下多个模块单独发布AAR的实现方法 - Google Patents
一种Android客户端项目下多个模块单独发布AAR的实现方法 Download PDFInfo
- Publication number
- CN109086048A CN109086048A CN201810732778.XA CN201810732778A CN109086048A CN 109086048 A CN109086048 A CN 109086048A CN 201810732778 A CN201810732778 A CN 201810732778A CN 109086048 A CN109086048 A CN 109086048A
- Authority
- CN
- China
- Prior art keywords
- module
- task
- compiling
- aar
- issue
- 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.)
- Withdrawn
Links
- 238000000034 method Methods 0.000 title claims abstract description 17
- 239000004744 fabric Substances 0.000 claims 1
- 238000012856 packing Methods 0.000 abstract description 2
- 238000005192 partition Methods 0.000 abstract description 2
- 238000002474 experimental method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
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
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种Android客户端项目下多个模块单独发布AAR的实现方法,包括以下步骤:1)提供一Android客户端项目,所述Android客户端项目至少包括第一模块和第二模块,所述第一模块和所述第二模块均包含第一任务;2)当编译Gradle生成AAR包时,指定仅编译第二模块的第一任务;3)将仅包含第二模块的第一任务的AAR包发布到Maven服务器。本发明是为了对于上传私有maven服务器,针对一个项目下多个可打包发布的模块的情况,可以做到对任意模块发布互不影响,同时生成的pom文件不包含dependencies的依赖库,可解决开发者由于依赖混乱造成编译问题。
Description
技术领域
本发明涉及手机技术领域,尤其涉及Android客户端项目下多个模块单独发 布AAR的实现方法。
背景技术
Gradle是一个基于JVM的富有突破性构建工具。Gradle正迅速成为许多 开源项目和前沿企业构建系统的选择,同时也在挑战遗留的自动化构建项目。 本教程主要讲解了如何使用Gradle构建系统和构建系统过程中涉及的插件。
现有技术中,基于Gradle脚本用于Android Studio下打包及发布aar到Maven 私服库上。有一种使用Gradle脚本的DSL(领域特定语言)中的uploadArchives 闭包可以实现每个模块单独发布,它将读取源代码和资源目录生成aar文件,并 将DSL中的dependencies所依赖的库构建成pom文件。另一种方案是使用DSL 的publishing闭包,由它生成的publish task(任务)依赖生成aar的task将生成 的aar文件发布到私服库中,这种生成不包含dependecies的依赖库。
第一种使用uploadArchives闭包的方案,由于会包含所有的dependencies依 赖库会有以下几种问题:
1.如果模块下包含aar文件,生成的pom文件也会包含aar的依赖,开发者 使用这种依赖会导致编译不过。
2.即使不包含aar文件,dependencies中也可以用provided代替compile来避 免上传不必要的依赖,但是对于某些特定的库,执行uploadArchives也会出现编 译出错,找不到某些资源或类。
第二种publishing闭包在项目中只有单个module(模块)发布情况下可以 满足需求,但是对于要发布多个模块,根据官方文档所述,会把每个模块的 publish task都执行一遍,对于只发布一个module的aar文件却把所有包含 publishing的module都执行一遍,非常浪费时间。
发明内容
本发明是为了对于上传私有maven服务器,针对一个项目下多个可打包发 布的模块的情况,可以做到对任意模块发布互不影响,同时生成的pom文件不 包含dependencies的依赖库,可解决开发者由于依赖混乱造成编译问题。
本发明所述的一种Android客户端项目下多个模块单独发布AAR的实现方 法,包括以下步骤:
1)提供一Android客户端项目,所述Android客户端项目至少包括第一模 块和第二模块,所述第一模块和所述第二模块均包含第一任务;
2)当编译Gradle生成AAR包时,指定仅编译第二模块的第一任务;
3)将仅包含第二模块的第一任务的AAR包发布到Maven服务器。
优选地,所述Maven服务器接收本地发送来的待编译第二模块的第一任务, 并对第二模块的第一任务编译,若编译成功则将第二模块的第一任务汇总至所 述Maven服务器存储的待发布应用中,若编译失败则发出提示;所述Maven服 务器每隔一第一时间段对所述待发布应用进行编译,并在编译失败时发出提示; 所述Maven服务器判断是否需要发布所述待发布应用,并在需要发布时对所述 待发布应用进行编译,若编译成功则发布所述待发布应用,若编译失败则发出 提示。
优选地,所述Maven服务器所述第二模块的第一任务编译成功后,将所述 第二模块的第一任务所述第二模块的第一任务的块名与所述待发布应用中的代 码单元的单元名进行匹配,若匹配成功则利用第二模块的第一任务替换相匹配 的代码单元,若匹配失败则第二模块的第一任务添加至所述待发布应用中。
优选地,所述Maven服务器在接收所述第二模块的第一任务的同时记录接 收所述第二模块的第一任务的时间。
优选地,所述Maven服务器在需要发布时,判断当前时间至最近一次编译 所述待发布应用的时间内是否接收到所述第二模块的第一任务,若是则对所述 待发布应用进行编译,若否则发布所述待发布应用。
优选地,所述Maven服务器在编译失败时分析编译失败的原因、位置以及 所述位置处代码所在的代码单元对应的单元名。
优选地,所述Maven服务器统计第二时间段内编译失败的次数、位置以及 所述位置处代码所在的代码单元的责任人,并生成报表。
具体实施方式
下面结合具体实施方式对本发明做进一步描述。
本发明所述的技术方案是在现有的第二种方案的基础上更新优化所得。第 二种方案虽然官方文档指出如果一个项目包含多个publishing闭包Gradle会把 所有的执行一遍,但是根据Gradle特性,定义的task可以指明其当前属于哪个 模块。例如在projectSample中包含两个module A和B。每个模块都定义一个task clear。直接执行gradle clear方法会把module A、B的clear都执行一遍。但指定 其所属模块就可以只执行一个clear方法,例如:gradle:A:clear。这样只执行 module A中的clear方法。本方案依据这个原理,定义一个task,它依赖于 publishing生成的publish task,然后指定publish所属的模块。这样执行自定义 的task就会只发布当前模块的aar文件到私有maven服务器。
在本发明的一个较佳实施例中,在一个Android project—TuyaSmart_Push项目,包含三个module,push管理模块pushManager,fcm模块fcm_push,umeng模 块umeng_push。在fcm的build.gradle中:
在umeng_push模块中:
umeng_push模块中生成aar和发布maven的task一致,但是在定义空task 时命名不同,依赖的模块不同,这样可以分别发布不受干扰。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术 无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技 术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或 者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (7)
1.一种Android客户端项目下多个模块单独发布AAR的实现方法,其特征在于,包括以下步骤:
1)提供一Android客户端项目,所述Android客户端项目至少包括第一模块和第二模块,所述第一模块和所述第二模块均包含第一任务;
2)当编译Gradle生成AAR包时,指定仅编译第二模块的第一任务;
3)将仅包含第二模块的第一任务的AAR包发布到Maven服务器。
2.如权利要求1所述的Android客户端项目下多个模块单独发布AAR的实现方法,其特征在于,所述Maven服务器接收本地发送来的待编译第二模块的第一任务,并对第二模块的第一任务编译,若编译成功则将第二模块的第一任务汇总至所述Maven服务器存储的待发布应用中,若编译失败则发出提示;所述Maven服务器每隔一第一时间段对所述待发布应用进行编译,并在编译失败时发出提示;所述Maven服务器判断是否需要发布所述待发布应用,并在需要发布时对所述待发布应用进行编译,若编译成功则发布所述待发布应用,若编译失败则发出提示。
3.如权利要求2所述的Android客户端项目下多个模块单独发布AAR的实现方法,其特征在于,所述Maven服务器所述第二模块的第一任务编译成功后,将所述第二模块的第一任务所述第二模块的第一任务的块名与所述待发布应用中的代码单元的单元名进行匹配,若匹配成功则利用第二模块的第一任务替换相匹配的代码单元,若匹配失败则第二模块的第一任务添加至所述待发布应用中。
4.如权利要求1所述的Android客户端项目下多个模块单独发布AAR的实现方法,其特征在于,所述Maven服务器在接收所述第二模块的第一任务的同时记录接收所述第二模块的第一任务的时间。
5.如权利要求1所述的Android客户端项目下多个模块单独发布AAR的实现方法,其特征在于,所述Maven服务器在需要发布时,判断当前时间至最近一次编译所述待发布应用的时间内是否接收到所述第二模块的第一任务,若是则对所述待发布应用进行编译,若否则发布所述待发布应用。
6.如权利要求1‐5中任意一项所述的Android客户端项目下多个模块单独发布AAR的实现方法,其特征在于,所述Maven服务器在编译失败时分析编译失败的原因、位置以及所述位置处代码所在的代码单元对应的单元名。
7.如权利要求1‐5中任意一项所述的Android客户端项目下多个模块单独发布AAR的实现方法,其特征在于,所述Maven服务器统计第二时间段内编译失败的次数、位置以及所述位置处代码所在的代码单元的责任人,并生成报表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810732778.XA CN109086048A (zh) | 2018-07-05 | 2018-07-05 | 一种Android客户端项目下多个模块单独发布AAR的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810732778.XA CN109086048A (zh) | 2018-07-05 | 2018-07-05 | 一种Android客户端项目下多个模块单独发布AAR的实现方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109086048A true CN109086048A (zh) | 2018-12-25 |
Family
ID=64836996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810732778.XA Withdrawn CN109086048A (zh) | 2018-07-05 | 2018-07-05 | 一种Android客户端项目下多个模块单独发布AAR的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109086048A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290780A (zh) * | 2020-03-10 | 2020-06-16 | 广州易方信息科技股份有限公司 | 一种自动化上传SDK到maven仓库的方法 |
CN112148303A (zh) * | 2020-09-28 | 2020-12-29 | Oppo(重庆)智能科技有限公司 | 文件生成方法、装置、终端及存储介质 |
-
2018
- 2018-07-05 CN CN201810732778.XA patent/CN109086048A/zh not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111290780A (zh) * | 2020-03-10 | 2020-06-16 | 广州易方信息科技股份有限公司 | 一种自动化上传SDK到maven仓库的方法 |
CN111290780B (zh) * | 2020-03-10 | 2024-04-05 | 易方信息科技股份有限公司 | 一种自动化上传SDK到maven仓库的方法 |
CN112148303A (zh) * | 2020-09-28 | 2020-12-29 | Oppo(重庆)智能科技有限公司 | 文件生成方法、装置、终端及存储介质 |
CN112148303B (zh) * | 2020-09-28 | 2024-05-28 | Oppo(重庆)智能科技有限公司 | 文件生成方法、装置、终端及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106104467B (zh) | 一种自动化部署方法和终端 | |
Fouquet et al. | A dynamic component model for cyber physical systems | |
Himmelspach et al. | Plug'n simulate | |
US9489189B2 (en) | Dynamically generate and execute a context-specific patch installation procedure on a computing system | |
CN102609281B (zh) | 分布式软件补丁更新方法及系统 | |
US20090144703A1 (en) | Method and system for versioning a software system | |
US20160274870A1 (en) | Design framework for an iot system | |
CN105678118B (zh) | 一种含数字证书的软件版本生成方法及装置 | |
Huang et al. | A framework for reliability-aware embedded system design on multiprocessor platforms | |
CN109086048A (zh) | 一种Android客户端项目下多个模块单独发布AAR的实现方法 | |
CN113254054B (zh) | 一种智能合约一站式开发系统及方法 | |
CN112015371A (zh) | 一种非嵌入式软件平台下的软件开发装置 | |
CN110795105A (zh) | 一种配电自动化主站系统自动编译部署方法与系统 | |
US10185647B2 (en) | Debugging remote vertex code on test machine | |
Brumbulli et al. | SDL code generation for network simulators | |
Fortier et al. | Dyninka: a FaaS framework for distributed dataflow applications | |
Hill et al. | Tools for continuously evaluating distributed system qualities | |
CN109683943A (zh) | 一种基于jenkins实现Java开发流程自动化的方法与系统 | |
CN111552494A (zh) | 一种容器组的管理方法、设备、系统及介质 | |
CN101571801A (zh) | 业务扩展系统及方法 | |
Ivanov et al. | Robust software development for university-built satellites | |
Chang et al. | From Java to real-time Java: A model-driven methodology with automated toolchain | |
Parizek et al. | Assume-guarantee verification of software components in sofa 2 framework | |
Fougere et al. | NumGrid middleware: MPI support for computational grids | |
Gruhn et al. | Engineering cyber-physical systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
WW01 | Invention patent application withdrawn after publication | ||
WW01 | Invention patent application withdrawn after publication |
Application publication date: 20181225 |