105 lines
3.9 KiB
Markdown
105 lines
3.9 KiB
Markdown
# Technology Stack
|
|
|
|
**Analysis Date:** 2026-04-16
|
|
|
|
## Languages
|
|
|
|
**Primary:**
|
|
- **Dart** >=3.4.3 - Flutter plugin Dart-side code (`lib/`, `test/`)
|
|
- **Java** 8 - Android native plugin implementation (`android/src/main/java/`)
|
|
|
|
**Secondary:**
|
|
- **Kotlin** 1.7.10 - Declared in example app Gradle plugins (`example/android/settings.gradle`) but not actively used in plugin code
|
|
|
|
## Runtime
|
|
|
|
**Environment:**
|
|
- **Flutter** >=3.3.0
|
|
- **Android SDK** - compileSdk 34, minSdk 21
|
|
|
|
**Package Manager:**
|
|
- **pub** (Dart) - Lockfile: `pubspec.lock` present
|
|
- **Gradle** 7.3.0 - Android build system
|
|
|
|
## Frameworks
|
|
|
|
**Core:**
|
|
- **Flutter** >=3.3.0 - Cross-platform plugin framework
|
|
- **Flutter Plugin API** - `FlutterPlugin`, `MethodCallHandler`, `MethodChannel`, `EventChannel`
|
|
|
|
**Testing:**
|
|
- **flutter_test** (Flutter SDK) - Unit testing framework
|
|
- **JUnit** 4.13.2 - Android native unit testing
|
|
- **Mockito** 5.0.0 - Java mocking for Android tests
|
|
- **integration_test** (Flutter SDK) - Integration testing
|
|
|
|
**Build/Dev:**
|
|
- **flutter_lints** ^3.0.0 - Lint rules
|
|
- **Gradle** 7.3.0 - Android build automation
|
|
|
|
## Key Dependencies
|
|
|
|
**Critical:**
|
|
- **plugin_platform_interface** ^2.0.2 - Federated plugin platform interface pattern (`Ch34Platform` extends `PlatformInterface`)
|
|
- **CH34XUARTDriver** (local JAR, 140KB) - WCH official UART library, located at `android/libs/CH34XUARTDriver.jar`. Provides `WCHUARTManager`, `ChipType2`, `IDataCallback`, `IModemStatus`, `GPIO_Status` etc.
|
|
|
|
**Infrastructure:**
|
|
- **cupertino_icons** ^1.0.6 - Example app only, Material/Cupertino icon support
|
|
|
|
**Android Native Dependencies (WCH SDK):**
|
|
- `cn.wch.uartlib.WCHUARTManager` - Core manager singleton
|
|
- `cn.wch.uartlib.chipImpl.type.ChipType2` - Chip type identification
|
|
- `cn.wch.uartlib.callback.IDataCallback` - Serial data callback interface
|
|
- `cn.wch.uartlib.callback.IModemStatus` - Modem status callback interface
|
|
- `cn.wch.uartlib.callback.IUsbStateChange` - USB state change callback
|
|
- `cn.wch.uartlib.exception.*` - Exception classes (ChipException, NoPermissionException, UartLibException)
|
|
|
|
## Configuration
|
|
|
|
**Environment:**
|
|
- `analysis_options.yaml` - Includes `package:flutter_lints/flutter.yaml`
|
|
- No `.env` or environment variable configuration required
|
|
- Secrets stored in example `local.properties` (flutter.sdk path)
|
|
|
|
**Build:**
|
|
- `pubspec.yaml` - Main plugin manifest, package: `ch34`, version `1.0.0`
|
|
- `pubspec.lock` - Dependency lockfile
|
|
- `android/build.gradle` - Android library build config (namespace: `com.example.ch34`)
|
|
- `android/settings.gradle` - Project name: `ch34`
|
|
- `example/android/build.gradle` - Example app root build
|
|
- `example/android/app/build.gradle` - Example app module (namespace: `com.example.ch34_example`)
|
|
- `example/android/settings.gradle` - Gradle plugins including dev.flutter.flutter-plugin-loader
|
|
|
|
## Platform Requirements
|
|
|
|
**Development:**
|
|
- Flutter SDK >=3.3.0
|
|
- Dart SDK >=3.4.3
|
|
- Android SDK compileSdk 34
|
|
- Java 8+ (sourceCompatibility/targetCompatibility = JavaVersion.VERSION_1_8)
|
|
|
|
**Production:**
|
|
- Android device with USB Host support (`android.hardware.usb.host` feature declared in `android/src/main/AndroidManifest.xml`)
|
|
- Android minSdk 21 (Android 5.0 Lollipop)
|
|
- Physical CH34X series USB-to-serial hardware connected via USB OTG
|
|
|
|
## Supported Chip Models
|
|
|
|
CH340, CH341, CH342, CH343, CH344, CH347, CH9101, CH9102, CH9103, CH9104, CH9143
|
|
|
|
## Build System
|
|
|
|
**Flutter Plugin:** Standard Flutter plugin structure with Android platform implementation.
|
|
|
|
**Communication Pattern:**
|
|
- `MethodChannel('ch34')` - 33 method calls for device control
|
|
- `EventChannel('ch34/data')` - Serial data streaming
|
|
- `EventChannel('ch34/modem')` - Modem status streaming
|
|
- `EventChannel('ch34/usb_state')` - USB plug/unplug events
|
|
|
|
**Architecture Pattern:** Federated plugin with platform interface (`Ch34Platform`), method channel implementation (`MethodChannelCh34`), and manager facade (`Ch34Manager`).
|
|
|
|
---
|
|
|
|
*Stack analysis: 2026-04-16*
|