
通过将共用代码抽取为 android library 模块,可在多个项目中实现一次修改、全局生效,避免重复维护;相比普通 jar,android library 支持资源文件、aar 打包、依赖传递及 gradle 增量编译,是官方推荐的复用方案。
通过将共用代码抽取为 android library 模块,可在多个项目中实现一次修改、全局生效,避免重复维护;相比普通 jar,android library 支持资源文件、aar 打包、依赖传递及 gradle 增量编译,是官方推荐的复用方案。
在 Android 开发中,当多个项目存在大量相同或高度相似的业务逻辑、工具类、UI 组件甚至资源(如布局、字符串、主题)时,手动同步修改极易出错且不可持续。你提出的三种思路中——导出 JAR、反射加载远程类、创建 Android Library——只有第三种真正契合 Android 生态的设计规范与工程实践。
✅ 推荐方案:使用 Android Library 模块(非普通 JAR)
Android Library 与 Java JAR 有本质区别:
Android文件存取与数据库编程知识,文件操作主要是读文件、写文件、读取静态文件等,同时还介绍了创建添加文件内容并保存,打开文件并显示内容;数据库编程方面主要介绍了SQLite数据库的使用、包括创建、删除、打开数据库、非查询SQL操作指令、查询SQL指令-游标Cursors等知识。
- JAR 仅打包 .class 字节码,不支持 res/、assets/、AndroidManifest.xml 或 buildConfigFields 等 Android 特有内容;
-
Android Library(.aar) 是 Android 专用归档格式,可完整封装:
- Java/Kotlin 源码与编译字节码
- 资源文件(layout、drawable、values 等)
- 自定义 View、主题样式、Gradle 配置(如 consumerProguardFiles)
- 依赖声明(implementation 会自动传递给宿主项目)
?️ 实施步骤(以 Android Studio 为例)
新建 Library 模块
File → New → New Module → Android Library,命名如 common-core。迁移共用代码与资源
将三项目中重复的 Utils.java、BaseActivity.kt、@string/app_name、activity_base.xml 等移入该模块。-
在各主项目中引用
在对应 app/build.gradle 中添加:dependencies { implementation project(':common-core') // 本地模块引用(开发期实时生效) // 或发布为 AAR 后使用:implementation 'com.yourcompany:common-core:1.2.0' } 享受“单点编辑”能力
修改 common-core/src/main/java/com/example/NetworkHelper.kt 后,所有引用该项目的 App 模块在下一次构建时自动同步变更——无需手动导出/导入 JAR,无反射风险,无网络依赖。
⚠️ 注意事项
- 若库中含 Application 子类或 ContentProvider,需在宿主 AndroidManifest.xml 中显式声明(Library 的 Manifest 会被合并);
- 避免在 Library 中硬编码 R.* 引用——应使用 @string/xxx 等资源别名,确保资源 ID 正确解析;
- 对于 Kotlin 协程、Room 等第三方依赖,建议在 Library 的 build.gradle 中声明 api(供宿主使用)或 implementation(仅内部使用);
- 如需跨团队共享,可发布 AAR 到私有 Maven 仓库(如 Nexus、GitHub Packages),而非 GitHub 代码仓。
? 补充建议:进阶复用策略
- 模块化分层:按职责拆分为 common-ui(含自定义 View)、common-domain(纯业务逻辑)、common-network( Retrofit 封装)等子库;
- 版本化管理:配合 Git Tag + Gradle Version Catalog(libs.versions.toml)统一依赖版本;
- CI 自动化:配置 GitHub Actions,在 Library 提交后自动构建并发布 AAR,触发下游项目依赖更新通知。
综上,Android Library 不是“只是另一种 JAR”,而是专为 Android 构建系统深度集成的复用载体。它让“一次修改、多处生效”从运维负担变为开箱即用的工程能力——这才是可持续、可维护、可扩展的正确路径。










