3.1 KiB
3.1 KiB
MosisService Agent Guidelines
Build, Lint, and Test Commands
Build Commands
./gradlew build- Build the entire project./gradlew assembleDebug- Build debug version./gradlew assembleRelease- Build release version./gradlew clean- Clean build outputs./gradlew :app:build- Build specific module (if needed)
Lint Commands
./gradlew lint- Run lint checks./gradlew lintDebug- Run lint for debug build./gradlew lintRelease- Run lint for release build
Test Commands
./gradlew test- Run unit tests./gradlew connectedAndroidTest- Run connected device tests./gradlew testDebugUnitTest- Run debug unit tests./gradlew testReleaseUnitTest- Run release unit tests./gradlew :app:test- Run tests for specific module./gradlew :app:testDebugUnitTest- Test specific module debug unit tests
Important Note: The project contains C++ native code that uses CMake with both mosis-service and mosis-test libraries defined in CMakeLists.txt. Tests are built as shared libraries with the suffix .so.
Code Style Guidelines
Naming Conventions
PascalCasefor class and function names (e.g.,MosisService,RenderTexture)camelCasefor variables and parameters (e.g.,renderTarget,inputData)UPPER_CASEfor constants (e.g.,MAX_BUFFER_SIZE,DEFAULT_TIMEOUT)- Class names should be descriptive and follow Android naming conventions (e.g.,
MosisService) - Files should use meaningful names that match their content
Imports & Formatting
- Import statements are grouped logically: Android imports, third-party imports, first-party imports
- Imports are sorted alphabetically within each group
- Use of fully qualified names is allowed for clarity when needed
Types & Variables
- Use primitive types when possible
- Use
finalkeyword for constants - Prefer
valovervarin Kotlin - Use
finalfor native C++ variables that don't change - Use appropriate data types (int, long, float, double) based on precision requirements
Error Handling
- C++ code uses standard C++ exception handling
- Android code leverages standard Android error handling patterns
- Use try-catch blocks appropriately in Kotlin code
- Log errors via Android's logging framework in Kotlin
- C++ logging via
logger.cppcomponent
Coding Standards
- Follow Android development best practices
- C++ code should follow modern C++23 conventions (including use of std::span, std::format, etc.)
- Use RAII (Resource Acquisition Is Initialization) principles in C++
- Ensure memory management is handled properly in native code
- Avoid magic numbers in C++ code - use constants instead
- Use smart pointers like
std::unique_ptrandstd::shared_ptrwhere appropriate - Proper resource cleanup in destructors
- Avoid memory leaks in C++ components
Structure
- Kotlin code following Android project structures
- C++ code organized in separate files within
src/main/cpp/ - Clear separation between platform-specific code and shared logic
- Use Android build system capabilities for multi-architecture support
- Follow Gradle conventions for dependency management