Skip to content

Repository files navigation

πŸš€ RvSystem Monitor

Latest Release Downloads IzzyOnDroid IzzyOnDroid Yearly Downloads Ko-Fi

RvSystem Monitor is a high-performance system monitoring solution for Android, merging the expressive power of Jetpack Compose with the raw efficiency of Rust. It provides low-level hardware insights while maintaining a modern, buttery-smooth user experience.


πŸš€ Overview

RvSystem Monitor bridges the gap between high-level UI frameworks and low-level system APIs. By utilizing a Rust-based backend, it minimizes the performance overhead typically associated with frequent polling of kernel files like /proc and /sys. This hybrid approach allows for real-time monitoring of CPU frequencies, GPU drivers, battery health, and memory usage without compromising the device's responsiveness.

Built with Material 3 Expressive, the application offers a visually rich experience with adaptive layouts and sophisticated transitions, making system diagnostics both powerful and beautiful.


πŸ“Έ Screenshots


πŸ› οΈ Tech Stack

  • Languages: Kotlin, Rust, C (via libc).
  • Frameworks: Jetpack Compose, Material 3 Expressive, Hilt DI.
  • Native Bridge: JNI via jni-rs, cargo-ndk.
  • Infrastructure: Gradle Kotlin DSL, Android NDK, Fastlane.
  • Distribution: Multiple flavors (GitHub, F-Droid) with toggleable update mechanisms.
  • Libraries: Retrofit, OkHttp, Coil, Jetpack DataStore.

πŸ“‚ Project Structure

RvSystem-Monitor/
β”œβ”€β”€ app/                  # Android application module (Kotlin)
β”‚   β”œβ”€β”€ src/main/java/    # UI, ViewModels, and JNI bridge declarations
β”‚   β”œβ”€β”€ src/main/jniLibs/ # Compiled native shared libraries (.so)
β”‚   β”œβ”€β”€ src/main/res/     # App resources and icons
β”‚   └── build.gradle.kts  # Gradle configuration for Android
β”œβ”€β”€ rust/                 # Native monitoring backend (Rust)
β”‚   β”œβ”€β”€ src/              # Kernel parsing, JNI implementation, and drivers
β”‚   β”œβ”€β”€ Cargo.toml        # Rust package and dependency metadata
β”‚   └── README.md         # Documentation for the Rust sub-system
β”œβ”€β”€ gradle/               # Build system scripts and version catalogs
β”œβ”€β”€ fastlane/             # Automation for screenshots and deployments
β”œβ”€β”€ LICENSE               # GNU GPL v3.0
└── README.md             # This file

πŸ—οΈ Architecture

The project adheres to Clean Architecture principles, ensuring a strict separation of concerns and high maintainability.

The Hybrid Core

  • UI Orchestration: The Kotlin layer manages the application lifecycle and UI state. It uses ViewModels to expose reactive data streams from Hilt-injected repositories.
  • Native Data Source: The Rust layer handles the "heavy lifting". It parses system files and interacts with hardware drivers. By mirroring the Linux kernel's structure (kernel/ for CPU, mm/ for Memory, and drivers/ for GPU), it provides an idiomatic and high-performance data source.
  • Optimized JNI Bridge: Instead of frequent fine-grained calls, the bridge is designed for batch data retrieval. Single calls fetch complete data sets (e.g., all CPU metrics at once), significantly reducing context-switching overhead between the JVM and Native code.

βš™οΈ Getting Started

Prerequisites

  • Android Studio (Ladybug 2024.2.1 or newer)
  • Rust Toolchain (rustup.rs): Edition 2024 (Stable 1.85+ recommended).
    • Add Android targets: rustup target add aarch64-linux-android armv7-linux-androideabi
  • Android NDK (Version 30.0.14904198 configured)
  • cargo-ndk: cargo install cargo-ndk

Installation & Build

  1. Clone the repository:
    git clone https://github.com/Rve27/RvSystem-Monitor.git
    cd RvSystem-Monitor
  2. Build Native Libraries:
    ./gradlew :app:buildRustLibraries
  3. Build the application: Choose the variant you want to build:
    • GitHub Variant (Includes auto-updater):
      ./gradlew assembleGithubRelease
    • F-Droid Variant (No updater):
      ./gradlew assembleFdroidRelease
  4. Install and run (Debug): Connect an Android device (API 34+) and run:
    ./gradlew installGithubDebug

🀝 Contributing

We welcome contributions from the community! Whether you are fixing a bug, adding a feature, or improving documentation, please read our CONTRIBUTING.md to get started.

πŸ’¬ Support

πŸ“œ License

This project is licensed under the GNU General Public License v3.0. See the LICENSE file for details.


Built with ❀️ for the Android Community.

About

Modern Android system monitoring app using Jetpack Compose and Rust

Topics

Resources

Contributing

Stars

160 stars

Watchers

3 watching

Forks

Releases

Sponsor this project

Contributors

Languages