An advanced, powerful, fast, and smooth Android file manager built with Kotlin and Material Design 3.
🌐 Visit the Official Website
Important
Beta Status 🧪 Arcile is currently in Beta and under heavy development. Expect rapid changes, potential bugs, and evolving features.
Note
Personal Project 🎯 Built to create a fast, clean, and modern file manager for Android — prioritizing smooth UX, Material You theming, and a native Kotlin-first approach.
| Feature | Description |
|---|---|
| 📂 Multi-Volume Support | Seamlessly manage Internal Storage, SD Cards, and USB OTG devices |
| 🗂️ Breadcrumb Navigation | Visual path breadcrumbs with auto-scroll and tap-to-navigate |
| ✅ Batch Operations | Multi-select files for copy, cut, move, or permanent delete |
| 🛡️ Conflict Resolution | Intelligent handling of file conflicts (skip, overwrite, rename) during copy/move operations |
| 🏠 Home Dashboard | Volume-scoped storage summary, category shortcuts, and recent files |
| 🎨 Material You Theming | Dynamic wallpaper colors, custom accent colors, light/dark/OLED modes |
| 🌈 Dynamic Colors | Powered by MaterialKolor for harmonious, accessible custom palettes |
| 🌍 Localization Base | 130+ string resources are already extracted, with a smaller set of remaining hardcoded strings tracked in TASKS.md |
| 🗑️ Trash Subsystem | Safely remove files with metadata-aware restoration |
| ⚙️ Settings & About | Theme customization and comprehensive app information |
| Tool | Version | Install |
|---|---|---|
| Android Studio | Latest (Ladybug+) | developer.android.com |
| JDK | 11+ | Bundled with Android Studio |
| Android SDK | API 36 | Via SDK Manager |
# Clone the repository
git clone https://github.com/qtremors/arcile.git
# Open in Android Studio
# File → Open → select the arcile-app directoryOr build from the command line (run from inside arcile-app/):
./gradlew assembleDebugInstall on a connected device:
adb install app/build/outputs/apk/debug/Arcile-dev.qtremors.arcile.debug-0.4.7-debug.apkRelease builds are signed using credentials stored in local.properties (not committed). To configure signing:
- Generate a keystore (or use an existing one):
keytool -genkeypair -v -keystore my-release-key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias my-key-alias
- Add the following to
arcile-app/local.properties:signing.storeFile=/absolute/path/to/my-release-key.jks signing.storePassword=your_store_password signing.keyAlias=your_key_alias signing.keyPassword=your_key_password
- Build the release APK:
./gradlew assembleRelease
Note: The app requires All Files Access (
MANAGE_EXTERNAL_STORAGE) permission on Android 11+ for full file-system access.
| Layer | Technology |
|---|---|
| Language | Kotlin 2.2.10 |
| UI Framework | Jetpack Compose with Material 3 |
| Architecture | MVVM (Feature-Scoped ViewModels + StateFlow) with Hilt DI |
| Navigation | Navigation Compose |
| Async | Kotlin Coroutines |
| Build System | Gradle (Kotlin DSL) with Version Catalogs |
| Min SDK | 30 (Android 11.0) |
| Target SDK | 36 |
arcile/
├── arcile-app/ # Android project root
│ ├── app/src/main/
│ │ ├── java/dev/qtremors/arcile/
│ │ │ ├── ArcileApp.kt # Application class (Coil image loader, Hilt app)
│ │ │ ├── MainActivity.kt # Entry point, permissions, nav shell
│ │ │ ├── data/ # Repository Implementations
│ │ │ ├── di/ # Dependency Injection (Hilt)
│ │ │ ├── domain/ # Core Models & Repository Interfaces
│ │ │ ├── image/ # Coil custom fetchers
│ │ │ ├── navigation/ # Route string constants
│ │ │ ├── presentation/ # Feature-Scoped ViewModels & UI
│ │ │ │ ├── browser/
│ │ │ │ ├── home/
│ │ │ │ ├── recentfiles/
│ │ │ │ ├── settings/
│ │ │ │ ├── trash/
│ │ │ │ └── ui/ # Compose UI Screens & Components
│ │ │ ├── ui/theme/ # Theme, colors, typography, shapes
│ │ │ └── utils/ # Formatting & color utilities
│ │ └── res/ # Android resources
│ ├── build.gradle.kts
│ └── gradle/libs.versions.toml # Version catalog
├── DEVELOPMENT.md # Developer documentation
├── CHANGELOG.md # Version history
├── TASKS.md # Audit findings and planned work
├── LICENSE.md
└── README.md
Run these commands from inside the arcile-app/ directory:
# Unit tests
./gradlew :app:testDebugUnitTest
# Instrumented tests (requires device/emulator)
./gradlew :app:connectedDebugAndroidTestNote: The project already includes a layered JVM test suite for domain logic, repository behavior, ViewModels, and a first batch of Robolectric-backed Compose component tests. Instrumented UI coverage is still minimal and currently limited to the generated example test.
| Document | Description |
|---|---|
| DEVELOPMENT.md | Developer guide, architecture, and conventions |
| CHANGELOG.md | Version history and release notes |
| TASKS.md | Audit findings, planned features, and known issues |
| LICENSE.md | License terms and attribution |
Tremors Source License (TSL) - Source-available license allowing viewing, forking, and derivative works with mandatory attribution. Commercial use requires written permission.
Web Version: github.com/qtremors/license
See LICENSE.md for full terms.
Made with ❤️ by Tremors
