Skip to main content
Glama
ARCHITECTURE.md5.24 kB
# Android 代码生成器架构说明 ## 设计目标 将 core 模块从 ShowDoc 获取的 API 数据自动转换为 Android 项目可用的代码,为后续 MCP(Model Context Protocol)集成做准备。 ## 模块结构 ``` android_codegen/ ├── __init__.py # 模块导出 ├── generator.py # 主生成器(整合各个生成器) ├── retrofit_generator.py # Retrofit Service 生成器 ├── entity_generator.py # 实体类生成器 ├── okhttp_config.py # OkHttp 配置生成器 ├── test.py # 测试脚本 ├── requirements.txt # 依赖说明 ├── README.md # 使用文档 ├── README_测试.md # 测试说明文档 └── ARCHITECTURE.md # 本文档 ``` ## 设计原则 ### 1. 模块化设计 每个生成器独立实现,职责单一: - `RetrofitServiceGenerator`: 专注于生成 Retrofit 接口 - `AndroidEntityGenerator`: 专注于生成实体类 - `OkHttpConfigGenerator`: 专注于生成配置代码 - `AndroidCodeGenerator`: 整合所有生成器,提供统一接口 ### 2. 清晰的输入输出 **输入**: `ApiTree` 对象(来自 core 模块) **输出**: 生成的文件路径字典 ```python { "services": ["path/to/ApiService.kt"], "entities": ["path/to/Entity1.kt", ...], "config": ["path/to/OkHttpConfig.kt", ...] } ``` ### 3. 可扩展性 - 易于添加新的代码生成器 - 易于支持不同的代码生成目标(如 iOS、前端等) - 易于自定义代码模板 ## 为 MCP 化做准备 ### MCP 工具接口设计 未来可以作为 MCP 工具暴露,提供以下能力: #### 1. 生成 Android 代码工具 ```python def mcp_generate_android_code( base_url: str, cookie: str, node_name: Optional[str] = None, base_package: str = "com.example.api", output_dir: str = "android_output" ) -> Dict[str, Any]: """ MCP 工具:生成 Android 代码 参数: base_url: ShowDoc 文档 URL cookie: 认证 Cookie node_name: 可选的节点名称过滤 base_package: Android 包名 output_dir: 输出目录 返回: { "success": bool, "files": { "services": [...], "entities": [...], "config": [...] }, "message": str } """ # 实现逻辑 ``` #### 2. 工具描述 ```json { "name": "generate_android_code", "description": "从 ShowDoc 文档生成 Android Retrofit Service 接口、实体类和配置", "inputSchema": { "type": "object", "properties": { "base_url": {"type": "string", "description": "ShowDoc 文档 URL"}, "cookie": {"type": "string", "description": "认证 Cookie"}, "node_name": {"type": "string", "description": "可选的节点名称过滤"}, "base_package": {"type": "string", "description": "Android 包名"}, "output_dir": {"type": "string", "description": "输出目录"} }, "required": ["base_url", "cookie"] } } ``` ### 当前实现的优势 1. **输入标准化**: 使用 core 模块的标准输出(`ApiTree`),便于与其他工具集成 2. **输出结构化**: 返回生成文件路径的字典,便于 MCP 工具向用户报告结果 3. **错误处理**: 可以在 MCP 层面统一处理异常,返回友好的错误信息 4. **可配置性**: 支持多种配置选项(包名、输出目录等),便于适配不同项目 ### 下一步改进 1. **增强类型推断**: - 从 ShowDoc 响应示例中更准确地推断类型 - 支持嵌套对象和数组类型 2. **支持更多 Android 特性**: - Room 数据库实体类生成 - ViewModel 和 Repository 模板生成 - 依赖注入模块生成(Koin、Hilt 等) 3. **模板系统**: - 支持自定义代码模板 - 支持不同的代码风格(如 Google 风格、自定义风格) 4. **MCP 集成**: - 添加 MCP 工具接口 - 实现工具注册和调用机制 - 添加错误处理和日志记录 5. **多平台支持**: - iOS(Swift + URLSession) - 前端(TypeScript + Axios) - 其他平台... ## 使用流程 ``` ShowDoc URL + Cookie ↓ core 模块(ShowDocClient) ↓ ApiTree 对象 ↓ android_codegen 模块(AndroidCodeGenerator) ↓ Android 代码文件(.kt) ↓ 集成到 Android 项目 ``` ## 依赖关系 ``` android_codegen └── core (ShowDocClient, ApiTree, models) └── requests, json, html ``` ## 测试建议 1. **单元测试**: 为每个生成器编写单元测试 2. **集成测试**: 测试从 ShowDoc 获取数据到生成代码的完整流程 3. **代码质量**: 验证生成的代码是否符合 Kotlin 规范 ## 注意事项 1. **类型推断限制**: 当前类型推断较为简单,可能需要手动调整生成的代码 2. **API 路径参数**: 确保路径参数格式正确(如 `/api/users/{id}`) 3. **响应包装**: 如果 API 有统一的响应包装格式,需要特殊处理 4. **代码风格**: 生成的代码可能需要根据项目规范进行调整

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yfcyfc123234/showdoc_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server