save state
This commit is contained in:
94
CLAUDE.md
Normal file
94
CLAUDE.md
Normal file
@@ -0,0 +1,94 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Build Commands
|
||||
|
||||
```bash
|
||||
# Build entire project
|
||||
./gradlew build
|
||||
|
||||
# Build debug APK
|
||||
./gradlew assembleDebug
|
||||
|
||||
# Build release APK
|
||||
./gradlew assembleRelease
|
||||
|
||||
# Clean build outputs
|
||||
./gradlew clean
|
||||
|
||||
# Build with verbose output
|
||||
./gradlew build --info --stacktrace
|
||||
|
||||
# Run lint checks
|
||||
./gradlew lint
|
||||
|
||||
# Run unit tests
|
||||
./gradlew test
|
||||
|
||||
# Run connected device tests
|
||||
./gradlew connectedAndroidTest
|
||||
```
|
||||
|
||||
## Environment Requirements
|
||||
|
||||
Required environment variables:
|
||||
- `ANDROID_HOME` - Android SDK path
|
||||
- `ANDROID_NDK_HOME` - Android NDK path (version 29.0.14206865)
|
||||
- `VCPKG_ROOT` - vcpkg package manager root
|
||||
|
||||
## Architecture Overview
|
||||
|
||||
MosisService is an Android application combining Kotlin UI with native C++ libraries for UI rendering via Android's Binder IPC system.
|
||||
|
||||
### Two Native Libraries
|
||||
|
||||
**mosis-service** (`libmosis-service.so`):
|
||||
- Main Android Binder service implementation
|
||||
- Implements `IMosisService.aidl` interface for touch events and initialization
|
||||
- Contains the Kernel rendering engine with RmlUi integration
|
||||
- Links against RmlUi for HTML/CSS-like UI rendering
|
||||
|
||||
**mosis-test** (`libmosis-test.so`):
|
||||
- Test/rendering client implementation
|
||||
- Implements `IMosisListener.aidl` for receiving callbacks
|
||||
- OpenGL ES 2.0 rendering pipeline using GLAD
|
||||
|
||||
### IPC Flow
|
||||
|
||||
```
|
||||
Kotlin NativeService → JNI → mosis-service (IMosisService)
|
||||
↓
|
||||
IMosisListener callbacks
|
||||
↓
|
||||
mosis-test (rendering client)
|
||||
```
|
||||
|
||||
### Key Interfaces (AIDL)
|
||||
|
||||
`IMosisService`: `initOS()`, `onTouchDown()`, `onTouchMove()`, `onTouchUp()`
|
||||
|
||||
`IMosisListener` (oneway/async): `onServiceInitialized()`, `onBufferAvailable()`, `onFrameAvailable()`
|
||||
|
||||
### Native Code Structure (src/main/cpp/)
|
||||
|
||||
- `kernel.cpp` - Core rendering engine, RmlUi integration, event processing
|
||||
- `mosis-service.cpp` - Binder service implementation, JNI entry points
|
||||
- `mosis-test.cpp` - Test client implementation
|
||||
- `egl_context.cpp` - OpenGL ES context management
|
||||
- `render_target.cpp` - Framebuffer and buffer management
|
||||
- `RmlUi_Renderer_GL3.cpp` - RmlUi OpenGL renderer backend
|
||||
- `assets_manager.cpp` - Android AssetManager integration
|
||||
|
||||
## Code Style
|
||||
|
||||
- C++23 standard with modern features (std::span, std::format)
|
||||
- PascalCase for classes/functions, camelCase for variables
|
||||
- RAII principles with smart pointers
|
||||
- Kotlin code follows Android conventions
|
||||
|
||||
## Dependencies
|
||||
|
||||
- vcpkg manages native dependencies (RmlUi)
|
||||
- CMake build system with vcpkg toolchain integration
|
||||
- Target architecture: arm64-v8a only
|
||||
Reference in New Issue
Block a user