news 2026/7/7 8:19:00

多个project合成一个aar发布

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多个project合成一个aar发布

背景是有个sdk项目,最近我需要接入它使用。在接入的时候遇到了一些问题,所以有本文。

背景问题

sdk项目依赖了三个子模块,大约是这样的:

dependencies{implementation(project(":module-A"))implementation(project(":module-B"))implementation(project(":module-C"))}

我加了点代码publish到我新创建的maven服务。

  • 编译报错依赖 module-A、B、C找不到, 手动忽略了报错。
  • 运行时报错,这时候我发现module-A、B、C

这时候我发现这三个项目都不会发布到maven上。这几个项目我都不熟悉,特别是他们都定义了多个productFlavors。
这种情况怎么简单合成一个repo给我自己使用呢?

以前的经验

android多aar合并

android{ buildTypes{ release { minifyEnabled true } } }

大约就是自己写脚本合并,使用python,和项目无关,不用收到agp版本的制约。
但是这个写了脚本我后面也不一定会用到,我就在想有没有其他的方式。

fat-aar-:

https://github.com/aasitnikov/fat-aar-android

kezong/fat-aar-android 这个没维护了,只是支持到AGP3.0.找到一些它的issue,发现有一个下游的分支还在更新。

aasitnikov/fat-aar-android 下游这个支持到 agp 8.13

我试了一下,发现 存在问题:

  1. embed 的关键词没有找到
  2. 项目中使用kotlin-dsl,不知道是不是我哪里设置不对,用的时候有一些报错

fusedlibrary

fused-library

这个也存在一些问题:

  1. viewBinding = true 不支持
  2. minifyEnabled true会有报错,比较奇怪

不过总体是可以用的,可以这样使用:

  1. 创建一个新的module,这个module下只有一个build.gradle.kts的文件
  2. 在 build.gradle.kts 这里依赖其他的module,差不多是这样
dependencies{include(project(":module-A"))include(project(":module-B"))include(project(":module-C"))}
  1. step by step的说明见这里 add-fused-library-module

  2. 发布,直接publish就好

./gradlew clean :myFusedLibrary:publish

step by step细节

  1. Enable fused library support by addingandroid.experimental.fusedLibrarySupport=trueto thegradle.propertiesfile.
  2. Appendinclude(":myFusedLibrary")to thesettings.gradle.ktsfile.
  3. Addandroid-fusedlibrary = { id = "com.android.fused-library", version.ref = "agp" }under the[plugins]section in thegradle/libs.versions.tomlfile.
  4. Addalias(libs.plugins.android.fusedlibrary) apply falsein the plugins block in the top levelbuild.gradle.ktsfile.
  5. To create themyFusedLibrarymodule, create a new directory called myFusedLibrary (right-click ‘My Application’ > New > Directory).
  6. Create abuild.gradle.ktsfile in the myFusedLibrary module (right-click the myFusedLibrary module > New > File).
  7. Paste the following into themyFusedLibrary/build.gradle.ktsfile:
plugins{alias(libs.plugins.android.fusedlibrary)`maven-publish`}valbuildTime=java.time.LocalDateTime.now().format(java.time.format.DateTimeFormatter.ofPattern("yyyyMMddHHmmss"))androidFusedLibrary{namespace="org.yeshen.fusedlibrary"minSdk=21}dependencies{include(project(":module-A"))include(project(":module-B"))include(project(":module-C"))}publishing{publications{register<MavenPublication>("release"){groupId="org.yeshen.fusedlibrary"artifactId="awesome"version="1.0.$buildTime"from(components["fusedLibraryComponent"])}}repositories{maven{url=uri("file://${rootDir}/../yeshen/file_release")name="Local"}}}

参考

  1. fused-library
  2. aasitnikov/fat-aar-android
  3. android多aar合并

本系列其他文章

  1. 多个project合成一个aar发布
  2. android多aar合并
  3. 多AAR合并之二Merge multiple jar/aar maven url into one
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 8:41:19

案例分享|APQP与NPI的深度配合

一、前言&#xff1a;风暴中心的“阿尔法”行动 做过汽车电子或高端制造的项目经理&#xff0c;大概都有过这样的梦魇&#xff1a; 凌晨两点的会议室&#xff0c;空气中弥漫着焦虑的味道。客户的SOP&#xff08;量产&#xff09;节点像一把达摩克利斯之剑悬在头顶&#xff0c;而…

作者头像 李华
网站建设 2026/7/7 10:08:39

Playwright 2.0 如何在稳定性和速度上全面超越 Selenium?

随着 Web 技术的发展&#xff0c;前端框架日益复杂&#xff0c;传统的自动化测试工具逐渐暴露出局限性。作为新一代浏览器自动化解决方案&#xff0c;‌Playwright 自 2.0 版本发布以来‌&#xff0c;凭借其卓越的稳定性、执行效率以及对现代 Web 应用的支持能力&#xff0c;正…

作者头像 李华
网站建设 2026/7/7 0:01:01

Wireshark终极解密指南:轻松解密SSL/TLS加密流量

作为网络安全分析师&#xff0c;你是否经常面对这样的困境&#xff1a;明明抓到了可疑的网络流量&#xff0c;却因为SSL/TLS加密而束手无策&#xff1f;看到满屏的"Application Data"却无法分析其真实内容&#xff1f;别担心&#xff0c;今天我将带你从零开始&#x…

作者头像 李华
网站建设 2026/7/7 5:49:52

户外储能电源双向逆变器板:快速产品化方案揭秘

户外储能电源方案双向逆变器板资料&#xff0c;原理文件&#xff0c;PCB文件&#xff0c;源代码&#xff0c;电感与变压器规格参数&#xff0c;户外储能电源2KW(最大3KW)双向逆变电源生产资料&#xff0c;本生产资料含有前级DCDC源程序&#xff0c;后级的SPWM本户外储能电源设置…

作者头像 李华
网站建设 2026/7/7 19:39:41

Wan2.2-T2V-A14B模型训练数据与架构设计深度剖析

Wan2.2-T2V-A14B&#xff1a;当AI开始“拍电影”&#xff0c;我们离全民导演还有多远&#xff1f;&#x1f3ac; 你有没有想过&#xff0c;有一天只需要一句话&#xff1a;“一个穿汉服的女孩在敦煌月牙泉边起舞&#xff0c;风沙轻扬&#xff0c;夕阳如血&#xff0c;镜头缓缓拉…

作者头像 李华
网站建设 2026/7/7 19:42:06

传统vsAI:Spring面试准备效率提升300%

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个Spring知识图谱学习系统&#xff0c;功能包括&#xff1a;1. Spring核心概念可视化图谱 2. 智能问答机器人 3. 学习进度追踪 4. 薄弱环节分析。使用Neo4j构建知识图谱&…

作者头像 李华