Skip to content

detectAndroidModules

检测 Android 项目中的所有模块,识别应用模块和库模块的结构。

前置依赖

依赖参数

参数名类型说明
deps.readdirSyncFileSystem['readdirSync']读取目录内容
deps.statSyncFileSystem['statSync']获取文件状态
deps.existsSyncFileSystem['existsSync']检查文件是否存在
deps.joinPath['join']路径拼接

环境要求

  • fs: Node.js 文件系统模块
  • path: 路径处理模块
typescript
import fs from 'fs'
import path from 'path'

函数签名

typescript
function detectAllAndroidModules(
  projectPath: string,
  deps: DetectAndroidModulesDeps
): string[]

interface DetectAndroidModulesDeps {
  readdirSync: FileSystem['readdirSync']
  statSync: FileSystem['statSync']
  existsSync: FileSystem['existsSync']
  join: Path['join']
}

参数

参数名类型必填说明
projectPathstringAndroid 项目根目录路径
depsDetectAndroidModulesDeps依赖注入对象

返回值

类型说明
string[]模块目录名数组,包含所有检测到的 Android 模块

工作原理

  1. 读取项目根目录下的所有子目录
  2. 遍历每个子目录:
    • 使用 statSync 检查是否为目录
    • 构建 AndroidManifest.xml 路径:子目录/src/main/AndroidManifest.xml
    • 使用 existsSync 检查 AndroidManifest.xml 是否存在
  3. 收集所有包含标准 Android 模块结构的目录名
  4. 返回模块名称数组

标准 Android 模块必须包含 src/main/AndroidManifest.xml 文件。通常主应用模块为 app,其他可能包含多个库模块。