docs: map existing codebase
This commit is contained in:
175
.planning/codebase/STRUCTURE.md
Normal file
175
.planning/codebase/STRUCTURE.md
Normal file
@@ -0,0 +1,175 @@
|
||||
# Codebase Structure
|
||||
|
||||
**Analysis Date:** 2026-03-30
|
||||
|
||||
## Directory Layout
|
||||
|
||||
```
|
||||
D:\code\new_git_code\arc/
|
||||
├── lib/ # Flutter Dart source code
|
||||
├── android/ # Android native implementation
|
||||
├── test/ # Unit tests for Dart code
|
||||
├── example/ # Example Flutter application
|
||||
├── docs/ # Documentation files
|
||||
├── .dart_tool/ # Dart tool cache (generated)
|
||||
├── .planning/ # Planning documents (generated)
|
||||
└── pubspec.yaml # Flutter package manifest
|
||||
```
|
||||
|
||||
## Directory Purposes
|
||||
|
||||
**lib:**
|
||||
- Purpose: Flutter plugin Dart source code
|
||||
- Contains: Public API, platform interface, method channel implementation
|
||||
- Key files: `arc.dart`, `arc_platform_interface.dart`, `arc_method_channel.dart`
|
||||
|
||||
**android:**
|
||||
- Purpose: Android native implementation for ArcSoft SDK integration
|
||||
- Contains: Java source, ArcSoft SDK libraries, Gradle build config
|
||||
- Key files: `src/main/java/com/xiarui/arc/ArcPlugin.java`, `libs/arcsoft_face.jar`
|
||||
|
||||
**test:**
|
||||
- Purpose: Unit tests for Dart plugin code
|
||||
- Contains: Mock platform implementations, method channel tests
|
||||
- Key files: `arc_test.dart`, `arc_method_channel_test.dart`
|
||||
|
||||
**example:**
|
||||
- Purpose: Demonstrates plugin usage with camera-based face detection
|
||||
- Contains: Complete Flutter app with camera preview and detection UI
|
||||
- Key files: `lib/main.dart`, `integration_test/plugin_integration_test.dart`
|
||||
|
||||
**docs:**
|
||||
- Purpose: External SDK documentation
|
||||
- Contains: ArcSoft face recognition API documentation
|
||||
- Key files: `虹软人脸识别接口文档.md`
|
||||
|
||||
**android/libs:**
|
||||
- Purpose: ArcSoft native SDK JAR files
|
||||
- Contains: `arcsoft_face.jar` (face recognition), `arcsoft_image_util.jar` (image utilities)
|
||||
- Generated: No (third-party SDK)
|
||||
- Committed: Yes
|
||||
|
||||
**android/src/main/jniLibs:**
|
||||
- Purpose: Native library files for different CPU architectures
|
||||
- Contains: `.so` files for arm64-v8a, armeabi-v7a
|
||||
- Generated: No (from ArcSoft SDK)
|
||||
- Committed: Yes
|
||||
|
||||
## Key File Locations
|
||||
|
||||
**Entry Points:**
|
||||
- `lib/arc.dart`: Public API entry point for plugin consumers
|
||||
- `android/src/main/java/com/xiarui/arc/ArcPlugin.java`: Android plugin registration and method handling
|
||||
- `example/lib/main.dart`: Example app entry point
|
||||
|
||||
**Configuration:**
|
||||
- `pubspec.yaml`: Flutter package configuration, SDK version constraints
|
||||
- `android/build.gradle`: Android library build configuration, SDK dependencies
|
||||
- `android/src/main/AndroidManifest.xml`: Android permissions (CAMERA, INTERNET, STORAGE)
|
||||
|
||||
**Core Logic:**
|
||||
- `lib/arc_platform_interface.dart`: Platform interface abstract class
|
||||
- `lib/arc_method_channel.dart`: Method channel implementation
|
||||
- `android/src/main/java/com/xiarui/arc/FaceEngineManager.java`: Singleton managing FaceEngine lifecycle
|
||||
|
||||
**Data Models:**
|
||||
- `android/src/main/java/com/xiarui/arc/FaceInfo.java`: Face detection result model
|
||||
- `android/src/main/java/com/xiarui/arc/FaceErrorCode.java`: Error code enumeration (586 lines)
|
||||
|
||||
**Testing:**
|
||||
- `test/arc_test.dart`: Mock platform tests
|
||||
- `test/arc_method_channel_test.dart`: Method channel unit tests
|
||||
- `android/src/test/java/com/xiarui/arc/ArcPluginTest.java`: Android unit tests
|
||||
|
||||
## Naming Conventions
|
||||
|
||||
**Files:**
|
||||
- Dart: lowercase with underscores, e.g., `arc_platform_interface.dart`
|
||||
- Java: PascalCase for classes, e.g., `ArcPlugin.java`, `FaceEngineManager.java`
|
||||
|
||||
**Classes:**
|
||||
- Dart: PascalCase, e.g., `Arc`, `ArcPlatform`, `MethodChannelArc`
|
||||
- Java: PascalCase, e.g., `FaceEngineManager`, `FaceErrorCode`
|
||||
|
||||
**Methods:**
|
||||
- Dart: camelCase with descriptive names, e.g., `activeOnline`, `detectFaces`, `extractFaceFeature`
|
||||
- Java: camelCase with handler prefix for dispatch, e.g., `handleActiveOnline`, `handleDetectFaces`
|
||||
|
||||
**Variables:**
|
||||
- Dart: camelCase for local/instance variables
|
||||
- Java: camelCase, enum constants use UPPER_SNAKE_CASE, e.g., `MERR_ASF_ACTIVATION_FAIL`
|
||||
|
||||
## Where to Add New Code
|
||||
|
||||
**New Feature (Dart API):**
|
||||
- Primary code: `lib/arc.dart` - add public method
|
||||
- Interface: `lib/arc_platform_interface.dart` - add abstract method
|
||||
- Implementation: `lib/arc_method_channel.dart` - add method channel invocation
|
||||
|
||||
**New Feature (Android Native):**
|
||||
- Handler: `android/src/main/java/com/xiarui/arc/ArcPlugin.java` - add case in `onMethodCall()` switch
|
||||
- Logic: `android/src/main/java/com/xiarui/arc/FaceEngineManager.java` - add SDK operation method
|
||||
|
||||
**New Platform Support (iOS/Web):**
|
||||
- Create platform-specific implementation in appropriate directory
|
||||
- Register in `pubspec.yaml` under `plugin.platforms`
|
||||
|
||||
**New Data Model:**
|
||||
- Location: `android/src/main/java/com/xiarui/arc/` alongside existing models
|
||||
- Pattern: JavaBean style with getters/setters and `toMap()` method
|
||||
|
||||
**Tests:**
|
||||
- Dart tests: `test/` directory, named `*_test.dart`
|
||||
- Android tests: `android/src/test/java/com/xiarui/arc/` directory
|
||||
|
||||
**Utilities:**
|
||||
- Shared helpers: `android/src/main/java/com/xiarui/arc/` as utility classes
|
||||
|
||||
## Special Directories
|
||||
|
||||
**android/libs:**
|
||||
- Purpose: ArcSoft SDK JAR files (third-party)
|
||||
- Generated: No
|
||||
- Committed: Yes (required for build)
|
||||
- Note: Contains `arcsoft_face.jar`, `arcsoft_image_util.jar`
|
||||
|
||||
**android/src/main/jniLibs:**
|
||||
- Purpose: Native `.so` libraries for CPU architectures
|
||||
- Generated: No (from ArcSoft SDK distribution)
|
||||
- Committed: Yes
|
||||
- Architectures: arm64-v8a, armeabi-v7a
|
||||
|
||||
**example/build:**
|
||||
- Purpose: Flutter/Gradle build artifacts
|
||||
- Generated: Yes
|
||||
- Committed: No (should be in .gitignore)
|
||||
|
||||
**.dart_tool:**
|
||||
- Purpose: Dart package config and tool cache
|
||||
- Generated: Yes
|
||||
- Committed: No
|
||||
|
||||
**.planning:**
|
||||
- Purpose: GSD planning documents
|
||||
- Generated: Yes (by GSD tools)
|
||||
- Committed: Yes (for team visibility)
|
||||
|
||||
## Package Structure
|
||||
|
||||
**Flutter Package:**
|
||||
- Package name: `arc`
|
||||
- Version: 0.0.1
|
||||
- SDK constraint: `^3.9.0`
|
||||
- Flutter constraint: `>=3.3.0`
|
||||
- Platforms: Android only (current)
|
||||
|
||||
**Android Package:**
|
||||
- Package name: `com.xiarui.arc`
|
||||
- Plugin class: `ArcPlugin`
|
||||
- Min SDK: 24 (Android 7.0)
|
||||
- Compile SDK: 36
|
||||
- Java version: 11
|
||||
|
||||
---
|
||||
|
||||
*Structure analysis: 2026-03-30*
|
||||
Reference in New Issue
Block a user