Android file manager built around archives: browse storage, open archives without extracting, edit ZIP/TAR/7Z in place, and search inside files and archives. The UI is Jetpack Compose (Material 3 Expressive); all archive work is done by a Rust core over JNI. Android 8.0+ (API 26), arm64-v8a / x86_64, no internet permission.
- Storage browser: volumes (internal / SD / USB), list and grid, sorting, hidden files, multi-select (hold an item and swipe across it to select a range), copy / cut / paste, favorites, storage usage carousel.
- Real thumbnails for images (JPG, PNG, WebP, GIF, SVG and more) and a frame from videos, with a placeholder icon for anything broken or unsupported.
- Customizable navigation drawer: drag a tab from its right edge to reorder it, hold a tab to remove it, hold any empty spot in the drawer to add a tab back. Pinned favorites can be reordered the same way.
- Recents: the newest files and folders from every storage volume in one list.
- Archive explorer: browse ZIP, 7Z, TAR family and RAR without extracting; in-place add, rename and delete for ZIP, TAR family and 7Z.
- Copy and extract with conflict handling: replace, skip, or keep both (
name (1).ext). - Extract dialog with a destination chooser: into the current folder, into a new folder named after the archive, or into any folder you pick, plus an option to delete the archive afterwards.
- Opening an archive from another app jumps to its folder and shows an action sheet (Preview, Extract, Verify, Open with, Share, Properties, Copy path).
- Long operations run in a foreground service with progress, speed, ETA, cancel and a stall watchdog.
- Search by name, extension, date, size and type, plus
content:for file or entry contents andarchive:for entry names inside archives. - File properties: permissions, rename, and modified date with a Material 3 date picker.
- Optional Trash: deleted files are moved aside instead of erased, with restore, delete forever and empty Trash from the drawer.
- Optional Shizuku or root engine for restricted paths, SAF fallback when All files access is denied.
- Optional system browsing (off by default): a
..parent entry at the top of the list lets you climb above internal storage into/,/data,/data/data,/vendor,/systemand other users' storage. Root is required for/dataand app data. - Optional auto-refresh (off by default): watches the open folder and loads new, changed or deleted files automatically, without pull-to-refresh. Works in folders the app can read directly.
- Optional quoted copy path (off by default): copied paths are wrapped in single quotes for shell scripts and Termux.
- Optional equal grid cells (off by default): every grid cell gets the same size and long names scroll instead of being cut off.
- Optional history of visited folders and files in a local Room database.
- Diagnostics: Settings → About → Save logs writes the app's warnings and errors plus the Rust log into one file under
Downloads/KArchiver.
| Action | Formats |
|---|---|
| Browse and extract | ZIP, 7Z, RAR, TAR, TAR.GZ, TAR.BZ2, TAR.XZ, TAR.ZST, TAR.LZ4, GZ, BZ2, XZ, ZST, LZ4 |
| Create | ZIP, 7Z, TAR, TAR.GZ, TAR.BZ2, TAR.XZ, TAR.ZST, RAR (packing requires unlocked RAR write) |
| Edit in place | ZIP, TAR family, 7Z |
| Read only | RAR, single-stream archives (GZ, BZ2, XZ, ZST, LZ4) |
| Passwords | create and open ZIP, 7Z, RAR |
Needs JDK 17, Android SDK with compileSdk 37 and build-tools 37.0.0, NDK 28.2.13676358, Rust 1.98.1 (rust/rust-toolchain.toml) and cargo-ndk.
cargo install cargo-ndk
rustup target add aarch64-linux-android x86_64-linux-android
cd rust
cargo ndk -t arm64-v8a -t x86_64 --platform 26 -o ../app/src/main/jniLibs build --lib
cd ..
./gradlew :app:assembleDebugAPK: app/build/outputs/apk/debug/app-debug.apk. Tests:
./gradlew :app:testDebugUnitTest
cd rust && cargo fmt --check && cargo clippy --all-targets -- -D warnings && cargo test.github/workflows/build.yml builds on pushes to main, on pull requests, and on demand. Debug APKs are signed with a throwaway keystore generated for every run; release APKs are built only on pushes and signed with the keystore kept in repository secrets. Signing material is read from KARCHIVER_* environment variables, so nothing secret is committed, and pull requests never touch it. The run summary lists the size and SHA-256 of each artifact.
APKs are available in two places: as workflow artifacts under Actions, and attached to tagged versions on the Releases page. Release entries list the file names, sizes and SHA-256 values.
Application (app/): GPL-3.0-only, see LICENSE. Rust core (rust/): Apache-2.0, see rust/LICENSE.
Questions and answers: QA.md.