如何从多模块Android应用拆分功能屏幕为独立库
问题:将清洁架构拆分的功能模块打包为可复用独立库
需要把现有应用中的某一功能屏幕拆分为独立库,供其他应用复用且保留完整功能。该功能基于清洁架构的Ui、Domain、Data三层实现,运行正常;Ui和Data层还包含工具模块,所有模块均使用com.android.library插件。要求不改动现有项目架构,同时需考虑库与客户端的Koin依赖注入整合(当前暂不重点关注)。
项目结构
root |-- app |-- build.gradle |-- src |-- CombineFeatures |-- ui |-- feature1 |-- build.gradle |-- src |-- Feature1UICode |-- domain |-- feature1 |-- build.gradle |-- src |-- Feature1DomainCode |-- data |-- feature1 |-- build.gradle |-- src |-- Feature1DataCode |-- settings.gradle
已尝试的方案及问题
- 单独执行gradle
assemble任务构建Ui模块的AAR,但该库缺少Domain、Data层代码以及material3等项目依赖,导致其他应用使用时出现java.lang.NoClassDefFoundError,仅能调用导入模块的基础函数。 - 考虑过用fat-aar-lib合并多个AAR为一个,但认为这并非现代Android开发的合适方案。
- 不考虑将功能迁移至独立项目仓库,后续维护成本过高。
- 试过composite builds,但构建速度缓慢且要求本地保存所有源码,已放弃该方案。
内容的提问来源于stack exchange,提问作者qveex
相关产品推荐
相关产品推荐

