Android项目中如何创建包装其他模块的模块?解决自动生成包问题
Android项目创建聚合模块及删除默认目录方案
一、创建包装其他模块的聚合模块(如core模块)
这类模块属于聚合型空壳模块,本身不编写业务代码,仅用于统一管理子模块依赖,让上层模块(如app)只需依赖它就能获取所有子模块的功能。具体步骤:
新建库模块
在Android Studio中右键项目根目录 →New→Module,选择Android Library,命名为core(或其他你需要的名称)。清理模块默认内容
删除core模块下自动生成的java、res、test等目录,仅保留build.gradle(或build.gradle.kts)和模块目录本身。聚合子模块依赖
在core模块的build.gradle中添加需要包装的子模块依赖,示例:dependencies { implementation project(':module-network') implementation project(':module-utils') implementation project(':module-ui') }上层模块(如app)只需依赖core,即可间接获取所有子模块:
dependencies { implementation project(':core') }进阶:统一版本约束
若需要统一管理依赖版本,可在core模块中使用java-platform插件做依赖约束,示例:plugins { id 'com.android.library' id 'java-platform' } javaPlatform { allowDependencies() } dependencies { // 统一Android Gradle插件版本 api platform('com.android.tools.build:gradle:7.4.2') // 聚合子模块 api project(':module-network') api project(':module-utils') }
二、删除创建模块时自动生成的main/test目录
创建模块时自动生成的目录无法在IDE中直接删除,是因为这些目录被标记为源码目录,可通过以下方式解决:
方法1:修改模块配置文件
打开模块的build.gradle(或build.gradle.kts),清空sourceSets的源码目录配置:
- Groovy版本:
android { sourceSets { main { java.srcDirs = [] res.srcDirs = [] manifest.srcFile = null } test { java.srcDirs = [] } androidTest { java.srcDirs = [] } } } - KTS版本:
执行android { sourceSets { named("main") { java.srcDirs(emptyList<String>()) res.srcDirs(emptyList<String>()) manifest.srcFile(null) } named("test") { java.srcDirs(emptyList<String>()) } named("androidTest") { java.srcDirs(emptyList<String>()) } } }Sync Project with Gradle Files后,即可在IDE中删除这些目录。
方法2:直接在文件系统中删除
打开项目的本地文件系统(如资源管理器/访达),找到对应模块的main、test目录,手动删除后回到Android Studio,执行Sync即可。
方法3:创建模块时选择空模板
部分Android Studio版本支持创建Empty Module,在New Module的选项中选择该模板,创建出的模块不会自动生成main/test目录,直接作为空壳聚合模块使用。
内容的提问来源于stack exchange,提问作者Umidjon Kosimov
相关产品推荐
相关产品推荐

