hermes-android/CONTRIBUTING.md
2026-08-24 22:50:59 +07:00

78 lines
2.3 KiB
Markdown

# Contributing to Hermes Android
Thank you for your interest in contributing to **Hermes Android** and **Hermes Pair**!
This document provides guidelines and instructions for setting up your development environment, running tests and linters, and submitting pull requests.
---
## 🛠️ Development Setup & Prerequisites
### Android Client (`/`)
- **JDK**: Eclipse Temurin OpenJDK 17
- **Android SDK**: Android API 35 (compileSdk/targetSdk), API 26 (minSdk), Build-Tools 35.0.0
- **Gradle**: Wrapper provided (`./gradlew`)
### Hermes Pair Companion (`hermes-pair/`)
- **Rust Toolchain**: Stable Rust 1.80+ (`rustup default stable`)
- **Components**: `clippy`, `rustfmt`
---
## 🧪 Building & Running Verification Tests
Before submitting a Pull Request, all unit tests, linters, and builds must pass locally.
### 1. Android Verification Suite
Run all verification checks required by CI:
```bash
# Run Android Unit Tests
./gradlew --no-daemon testDebugUnitTest
# Run Android Lint
./gradlew --no-daemon lint
# Build Debug APK
./gradlew --no-daemon assembleDebug
```
On Windows (PowerShell):
```powershell
.\gradlew.bat --no-daemon testDebugUnitTest
.\gradlew.bat --no-daemon lint
.\gradlew.bat --no-daemon assembleDebug
```
### 2. Rust Companion Verification Suite (`hermes-pair`)
```bash
cd hermes-pair
# Run all Rust tests
cargo test --all-targets
# Run Cargo Clippy (must be zero warnings)
cargo clippy -- -D warnings
# Build release binary
cargo build --release
```
---
## 📋 Pull Request (PR) Guidelines
1. **Clean Diffs**: Ensure no temporary build files, `.apk`, `.exe`, or generated binaries are included in git commits.
2. **Never Commit Binaries**: Binaries belong in GitHub Releases produced by the CI/CD pipeline, never in git history.
3. **Keep Tests Green**: All CI checks (`android`, `rust`, `instrumented`) must pass.
4. **Version Catalog**: All Android dependencies must be declared in `gradle/libs.versions.toml`. Do not hardcode dependency strings in `build.gradle.kts`.
5. **Commit Conventions**: Use structured commit messages (e.g. `feat: ...`, `fix: ...`, `docs: ...`, `test: ...`, `ci: ...`, `refactor: ...`).
---
## 🔒 Security & Sensitive Data
- Never commit secrets, API keys, passwords, or personal credentials.
- Report security issues privately via [SECURITY.md](SECURITY.md).