Skip to content

Repository files navigation

FileExplorer

VersionLicensePlatformKotlinComposeStatus

Full-featured Android file manager with root access, archive support, network protocols, cloud storage, built-in editor, and app manager. OLED dark theme. Zero-config.

Quick Start

git clone https://github.com/SysAdminDoc/FileExplorer.git
cd FileExplorer
  1. Open in Android Studio Ladybug (2024.2.1+)
  2. Sync Gradle
  3. Run on device or emulator (API 26+)
  4. Grant All Files Access when prompted

Verification

Use the Android Studio JBR when the inherited JAVA_HOME is stale, and run Gradle serially on memory-constrained machines:

$env:JAVA_HOME="C:\Program Files\Android\Android Studio\jbr"
.\gradlew.bat--no-daemon --console=plain test
.\gradlew.bat--no-daemon --console=plain verifyAccessibilityLocalization
.\gradlew.bat--no-daemon --console=plain :core:ui:compileDebugAndroidTestKotlin

verifyAccessibilityLocalization checks localized resource keys and format placeholders, reports Android fallback keys, and rejects new inline user-facing strings in Kotlin UI sources. The Compose instrumentation contract covers file-row actions, descriptions, touch targets, RTL, and large-text density.

Features

FeatureDescriptionStatus
File BrowsingNIO2 backend, breadcrumb nav, per-directory grid/list, sort, and column visibilityComplete
Dual-pane BrowsingIndependent left/right folders with long-press drag-and-drop copy or moveComplete
Tabbed BrowsingMultiple tabs per pane with add, select, reorder, and swipe-to-close controlsComplete
CollectionsMediaStore-backed Photos, Videos, Music, Documents, Downloads, and APK smart categoriesComplete
Storage AnalyzerOpt-in bounded size treemap, sampled/full SHA-256 duplicate groups, resumable scans, and review-before-Trash cleanupVerified (local storage)
Batch RenameRegex capture groups, counter/date/parent tokens, collision checks, and live previewComplete
Transfer QueueRoom-backed pausable and reorderable copy, move, and delete queue with process-death recovery, retry checkpoints, throttling, metadata conflict previews, persisted decisions, deterministic keep-both names, and text diff previewVerified (local recovery)
DocumentsProviderSAF access to the local storage root with browsing, search, recent files, document mutations, dynamic-root handling, and symlink-safe path validationVerified (SAF contract)
USB OTGUsbManager mass-storage detection, persistent SAF tree access, and DocumentFile read/write browsingRequires configuration
Quick ShareSelection menu action backed by the Android Sharesheet for nearby-device deliveryRequires Quick Share or another compatible receiver
Media castingCast a selected local or SAF-backed photo, video, or audio file through Chromecast's Cast dialogRequires Chromecast / Google Cast services
LocalizationShared Android string resources with English plus Spanish, Brazilian Portuguese, German, French, Japanese, Korean, Simplified Chinese, Russian, and Arabic locale variantsCore visible surfaces localized
Thumbnail cacheConfigurable 32–1024 MB Coil disk-cache cap, internal or external app-cache location, and one-tap purge controls in SettingsComplete
Directory sizesOptional coroutine-backed recursive folder sizes in list view with a bounded per-directory LRU cacheComplete
Saved searchesNamed regex and path filters persisted in Room and pinned to the navigation drawerComplete
Share ServerAuthenticated HTTP web access and passive FTP sharing with Keystore-encrypted credentials, loopback default, explicit plaintext-LAN opt-in, and bounded client/upload/request resourcesComplete
File EncryptionAES-256-GCM encryption with an Android Keystore key and biometric-gated decryption from the browserComplete
Shizuku Android/data and obbOptional UserService backend for scoped browsing and file operations under Android/data and Android/obbOptional
Large-screen layoutAdaptive places, file list, and preview panes with keyboard shortcuts and mouse context menusComplete
File OperationsProvider-aware copy, move, trash, restore, permanent delete, rename, and create actions. Foreground service with progress notificationVerified (provider-scoped)
Trash Bin.FileExplorer-Trash/ per storage volume, 30-day default purge, configurable TTL, restore and empty-trash screenComplete
SearchStreaming results via Coroutine Flow, regex support, search history, and provider-specific cost/availability statusVerified (provider-scoped)
BookmarksBookmark any directory, persisted in Room DB, accessible from drawerComplete
Recent FilesTrack opened files, quick access from drawerComplete
Recent LocationsAutomatically track recently visited directories in recency orderComplete
Root Accesslibsu 6.0.0, browse /data /system /vendor, SELinux context, chmod/chown, remountComplete
Root Module BrowserList Magisk, KernelSU, and APatch modules, toggle disable markers, and install trusted ZIPs through the detected managerComplete
ArchivesBrowse ZIP/7z/TAR/RAR as virtual folders. RAR is read-only; local ZIP/7z/TAR extraction and archive creation are capability-gatedVerified (bounded local archives)
SMB/CIFSWindows network shares via smbj 0.13.0 with domain auth and SMB3 server-side copy fallbackComplete
SFTPSSH file transfer via sshj 0.40.0 with known_hosts verification, password + private key authComplete
FTP/FTPSFile transfer via Apache Commons Net 3.13.0 with TLS toggleComplete
WebDAVHTTP/HTTPS via sardine-android 0.9 with server-side copy/moveComplete
Connection ManagerSave, edit, test network connections with Android Keystore-encrypted passwords. Remote file browserComplete
Provider ContractsShared capabilities, provider/location feature matrix, and typed unsupported/auth/permission/transport/conflict/corrupt errors across local, root, USB, plugin, network, and cloud adapters, with bounded redacted diagnosticsVerified (provider-scoped)
Plugin TrustExplicit certificate-bound approval and revocation, declared-capability checks, bounded isolated IPC, and path-free audit eventsVerified (local trust boundary)
Google DriveREST API v3. Browse, upload, download, delete, rename, quota displayRequires configuration
DropboxHTTP API v2. Browse, upload, download, folder operationsRequires configuration
OneDriveMicrosoft Graph API. Full file operations, quota trackingRequires configuration
Biometric LockFingerprint/face/device credential via AndroidX BiometricComplete
Encrypted VaultOpaque-ID AES-256-GCM storage with an encrypted index, Android Keystore key, and biometric/device-credential gateVerified (local files)
Secure DeleteProvider-aware local overwrite before deletion; flash storage, snapshots, copy-on-write filesystems, and remote providers remain best-effort or unsupportedVerified (provider-scoped)
Checksum VerifyMD5, SHA-1, SHA-256, SHA-512 via java.security.MessageDigest where the current provider exposes checksum supportVerified (provider-scoped)
Integrity WatchRoom-backed SHA-256 watches for files and directory trees, with periodic drift notificationsComplete
File TagsRoom-backed tags with multi-tag AND search and browser assignmentComplete
Encrypted VolumesRoot-only mount and unmount workflow for existing gocryptfs or EncFS volumesRequires configuration
Text EditorBuilt-in editor with syntax highlighting, line numbers, find/replace, undo/redoComplete
App ManagerList all apps, filter user/system/disabled, search, sort, share APK, uninstallComplete
APK AnalyzerManifest, permissions, signing certificate SHA-256, shared UID, DEX method count, and ZIP directory size breakdownComplete
PDF / Document PreviewNative paginated PDF rendering plus bounded DOCX, XLSX worksheet, and EPUB chapter previewsComplete
Hex EditorPaginated hexadecimal view with byte editing up to 64 MiB and read-only larger-file inspectionComplete
Gesture ActionsConfigurable swipe-left/right actions for delete, share, compress, and cut-to-moveComplete
Automation IntentsExported Tasker / Automate actions for copy, move, archive creation, and network uploadComplete

Language support

The app follows the Android system language. English is the fallback, with bundled resources for Spanish, Brazilian Portuguese, German, French, Japanese, Korean, Simplified Chinese, Russian, and Arabic. Android handles right-to-left layout for Arabic through the existing RTL manifest support.

Automation intents

Tasker, Automate, and other automation tools can send broadcasts to the exported AutomationReceiver. Every request accepts source (one path) or sources (a string array), plus the destination extra. Use these action names:

ActionAdditional extras
com.explorer.fileexplorer.action.COPYOptional conflict: rename (default), overwrite, skip, or keep-both; optional idempotency_key
com.explorer.fileexplorer.action.MOVEOptional conflict: rename (default), overwrite, skip, or keep-both; optional idempotency_key
com.explorer.fileexplorer.action.ZIPOptional format: zip (default), 7z, or tar.gz
com.explorer.fileexplorer.action.UPLOADRequired positive connection_id for a saved Network connection; destination is the remote path

Actions return RESULT_OK when the foreground transfer is accepted. Add a unique request_id to receive a completion broadcast with action com.explorer.fileexplorer.action.TRANSFER_RESULT; its status is completed, failed, or cancelled, and failures include error. idempotency_key is used to make repeated deliveries resolve to the same keep-both artifact; when omitted, copy and move requests derive a stable key from their operation, sources, and destination. The queue shows source and destination size/modified-time metadata before mutation, persists each per-source choice, and records cancellation as an explicit result. Upload sources must be local files. A saved network connection is connected automatically for the action and disconnected afterward if it was not already active.

Architecture

 ┌─────────────────────────────────────────────┐
│ :app │
│ Application, Navigation (11 routes), │
│ Permission flow, MainActivity │
└──────┬──────┬──────┬──────┬──────┬─────────┘
│ │ │ │ │
┌───────────────────┼──────┼──────┼──────┼──────┼───────────────┐
│ │ │ │ │ │ │
┌────────▼──┐ ┌─────▼──┐ ┌─▼────┐ │ ┌────▼──┐ ┌▼─────┐│ ┌──────┐ ┌──▼────┐
│ :feature: │ │:feature│ │:feat: │ │ │:feat: │ │:feat:││ │:feat:│ │:feat: │
│ browser │ │:search │ │transf │ │ │:netw │ │cloud ││ │:edit │ │:apps │
│ │ │ │ │ │ │ │ │ │ ││ │ │ │ │
└──┬──┬─────┘ └───┬────┘ └──┬────┘ │ └──┬────┘ └──┬───┘│ └──┬───┘ └──┬────┘
│ │ │ │ │ │ │ │ │ │
┌──▼──▼─────────────▼────────▼──────▼────▼─────────▼────▼─────▼────────▼──┐
│ Core Layer │
│ :core:data FileRepositoryFactory → Local / Root / Archive │
│ UsbFileRepository + EncryptedVolumeManager │
│ :core:plugin Versioned AIDL plugin discovery and URI repository │
│ :core:storage PermissionHelper, StorageVolumeHelper, RootHelper │
│ :core:network SMB / SFTP / FTP / WebDAV + ConnectionManager │
│ :core:cloud Google Drive / Dropbox / OneDrive + AccountManager │
│ :core:database Room (bookmarks, recents, history, connections, views, integrity, tags) │
│ :core:model FileItem, SortOrder, TransferTask, ClipboardContent │
│ :core:ui FileIcon, BreadcrumbBar, FileListItem │
│ :core:designsystem OLED dark theme, Material 3 colors │
└─────────────────────────────────────────────────────────────────────────┘

19 Gradle modules. MVVM + Clean Architecture. FileRepositoryFactory routes file operations to the correct backend based on path type, device capabilities, and installed plugin URI schemes.

Technology Stack

LayerTechnologyVersion
LanguageKotlin2.2
UIJetpack Compose + Material 3BOM 2026.06
DIHilt2.58
AsyncKotlin Coroutines + Flow1.9.0
PersistenceRoom + DataStore2.8.4
File I/Ojava.nio.file (NIO2)JDK 17
Rootlibsu6.0.0
ArchivesApache Commons Compress + zip4j + Junrar1.28.0 / 2.11.6 / 7.6.0
SMBsmbj0.13.0
SFTPsshj + BouncyCastle0.40.0 / 1.84
FTPApache Commons Net3.13.0
WebDAVsardine-android0.9
HTTPOkHttp4.12.0
SecurityAndroidX Biometric + Security-Crypto1.2.0 / 1.1.0
ImagesCoil3.3.0
NavigationJetpack Navigation Compose2.8.5

Plugin / Add-on API

Third-party providers can ship as separate APKs without running plugin code inside FileExplorer. The :core:plugin library defines protocol version 1, manifest metadata, and the IFileExplorerPlugin AIDL service. Filesystem plugins advertise URI schemes such as sftp2 and are routed through FileRepositoryFactory; archive and tool plugins can use the same operation envelope without claiming a URI scheme.

A plugin declares one exported service and the protocol metadata in its manifest:

<serviceandroid:name=".FileExplorerPluginService"android:exported="true"android:process=":plugin">
<intent-filter>
<actionandroid:name="com.explorer.fileexplorer.action.PLUGIN" />
</intent-filter>
<meta-dataandroid:name="com.explorer.fileexplorer.plugin.PROTOCOL_VERSION"android:value="1" />
<meta-dataandroid:name="com.explorer.fileexplorer.plugin.ID"android:value="com.example.sftp" />
<meta-dataandroid:name="com.explorer.fileexplorer.plugin.DISPLAY_NAME"android:value="SFTP add-on" />
<meta-dataandroid:name="com.explorer.fileexplorer.plugin.VERSION_NAME"android:value="1.0.0" />
<meta-dataandroid:name="com.explorer.fileexplorer.plugin.SCHEMES"android:value="sftp2" />
<meta-dataandroid:name="com.explorer.fileexplorer.plugin.CAPABILITIES"android:value="filesystem" />
</service>

The host validates the metadata, binds only to the declared component, and keeps each discovered plugin untrusted until it is approved in Settings. Approval is tied to the exact service component and SHA-256 signing-certificate digest, can be revoked, and grants only the declared capabilities. The host negotiates protocol version 1, rejects unknown operations, checks every requested path through the plugin, and sends list, info, exists, copy, move, delete, create_directory, create_file, rename, size, search, and checksum requests as Bundle messages. Calls are limited to four concurrent requests, 15 seconds, 256 KiB requests, and 512 KiB responses; binder death and protocol/resource failures are isolated as unavailable provider errors. Each response must set ok=true; file entries use PluginFileCodec bundles. The binder boundary keeps failures and plugin dependencies out of the host process.

Cloud Setup

Cloud providers are optional. The Cloud Storage screen reports Requires OAuth configuration, Unavailable in this build, Ready for sign-in, or Signed in and keeps the connect action disabled until a real provider auth intent is available. The default build does not contain production OAuth credentials or client secrets; credentials must remain external to the repository.

Google Drive: For a configured build, create an OAuth 2.0 client in Google Cloud Console, add your app's package name and SHA-1 fingerprint, and provide the client configuration through the approved external secret/build mechanism.

Dropbox: For a configured build, register an app at Dropbox App Console and provide the App Key through the approved external secret/build mechanism.

OneDrive: For a configured build, register an app in Azure AD Portal, add Files.ReadWrite.All offline_access, and provide the client configuration through the approved external secret/build mechanism.

Configuration

SettingLocationDescription
Show hidden filesSettings / DrawerToggle visibility of dotfiles
Folders firstSettingsPin folders above files in listings
Directory viewBrowser / MoreList or Grid plus per-directory size, modified, and type columns
Sort orderBrowser / top barPer-directory name, size, date, or type with ascending/descending direction
Trash auto-purgeSettingsRetain trash for 7, 14, 30, 60, or 90 days
Root modeDrawer toggleEnable/disable root shell access
App lockSecurity screenBiometric requirement on launch
Secure deleteSecurity screen3-pass overwrite before deletion
VaultBrowser selection → More → Add to Vault; Security screenAuthenticate, move local regular files into opaque encrypted storage, inspect entries only while unlocked, restore to Downloads, or delete atomically
File encryptionBrowser selection → MoreEncrypt files to .encrypted; biometric authentication is required to decrypt
Shizuku accessShizuku Access screen / drawerOptional Android/data and Android/obb backend; requires a separately started Shizuku or Sui service and granted permission
Large-screen layoutAutomatic on windows at least 840dp wideThree-pane places, files, and preview workspace with Ctrl+A, Delete, F5, Escape, and Up shortcuts
Share serverShare Server screen / Quick SettingsAuthenticated HTTP or FTP access to a selected local folder
Integrity watchSecurity screen or Browser selection → More → Watch for changesRecompute watched SHA-256 fingerprints every 15 minutes and notify on drift
File tagsBrowser selection → More → Set tags; drawer → Tags; Search → tag chipsApply normalized tags and combine multiple tags with filename or regex search
USB OTGDrawer → USB OTG → Choose USB folderConnect a mass-storage device, choose its SAF folder, then browse and mutate it with persisted access
Quick ShareSelect files → More → Send with Quick ShareOpens the Android Sharesheet with read grants so Quick Share can send one or many files
Media castingTop-bar Cast button → select receiver; select one media file → More → Cast mediaStreams the selected local/SAF item over a temporary LAN URL and loads it in the Cast receiver
Encrypted volumesSecurity → Encrypted volumesRequires root, an installed gocryptfs or EncFS binary, FUSE support, and existing cipher directories

Theme

Theme mode is selectable in Settings: System, Light, Dark, OLED / True Black, or Material You on Android 12+.

ElementColor
Background#0D0D0D
Surface#161616
Primary accent#00BCD4 (Cyan)
Root indicators#FF9800 (Orange)
Error#CF6679

OLED remains available as the high-contrast AMOLED option, while System follows the device theme.

Requirements

  • Android Studio Ladybug (2024.2.1+)
  • Android SDK 36, JDK 17
  • Device or emulator running Android 8.0+ (API 26)
  • Rooted device for root features (optional)
  • Shizuku or Sui for optional Android/data and Android/obb access (optional)

Release and upgrade gates

The build uses Google Maven, Maven Central, and a JitPack allowlist for the two GitHub-hosted groups that still require it. Fixed versions live in gradle/libs.versions.toml.

Run the local policy checks before a release:

.\gradlew.bat verifyAndroidUpgradeReadiness verifyDependencyProvenance
.\gradlew.bat scanDependencyAdvisories
.\gradlew.bat releaseSmoke

The first command checks Android 15/16 SDK, manifest, backup, storage, predictive-back, and foreground-service timeout requirements. The advisory task resolves the release runtime graph and queries OSV; use -PosvAllowlist=OSV-ID,... only for an explicitly triaged release decision. releaseSmoke additionally validates exported components, builds and installs the debug artifact on a connected emulator, checks picker/share/ DocumentsProvider/Quick Settings entry points, and recreates the main activity.

Remote capability semantics

Remote repositories expose operation support and the expected consistency/cost to the browser. Recursive inspection is cancellable and bounded to 100,000 entries and depth 64; search returns at most 10,000 matches, and streamed checksums inspect at most 2 GiB.

ProviderCopy/moveRecursive sizeSearchChecksumConsistency and cost
SMBServer-side copy with streamed fallbackBounded, cancellableBounded, cancellableStreamed, boundedMutations are strong; inspection is point-in-time/high cost
SFTPStaged stream and verified renameBounded, cancellableBounded, cancellableStreamed, boundedMutations are strong; inspection is point-in-time/high cost
FTP/FTPSCopy is explicit unsupported; move uses verified renameBounded, cancellableBounded, cancellableStreamed, boundedMutations are strong; inspection is point-in-time/high cost
WebDAVServer-side copy/move when acceptedBounded, cancellableBounded, cancellableStreamed, boundedMutations are strong; inspection is point-in-time/high cost

Unsupported operations return typed provider errors. Network transfers and mutating operations report progress and verify completion rather than presenting an empty or zero-valued success as a completed operation.

Local multi-file copies, moves, deletes, archive extraction, and archive creation use an atomic manifest under .fileexplorer-staging/. The manifest records planned, staged, committed, and backup entries; interrupted journals are rolled back or cleaned before the next operation. The transfer queue persists its intended and committed entries in Room, so cancellation and process death show partial completion instead of silently retrying an unknown filesystem state.

When a queued conflict is resolved with Keep both, the target name includes a stable copy-<hash> suffix derived from the task idempotency key and source/target paths. A retry first compares the existing deterministic artifact with the source (checksum when the provider supports it, otherwise type and size) and records it as committed without invoking the provider again. If an unrelated artifact already has that name, providers fall back to a numbered variant.

Permissions

The following matrix is the release-readiness record for every privileged permission and exported or system-facing component. “Owner review” means the build is ready for an operator to make the distribution decision; this repository does not submit a store listing or request restricted-policy approval.

Permission or componentPurposeAPI rangeDenial or fallbackUser explanationBackup implicationDistribution status
MANAGE_EXTERNAL_STORAGEBrowse and mutate shared storage, including folders outside the app sandboxAndroid 11+ (API 30+)App opens Android’s All Files Access settings; limited mode opens app-scoped external files“Needed to browse and organize shared storage.”Permission state is not backed up; excluded data remains excludedRestricted permission; owner review required before Play submission
READ_EXTERNAL_STORAGE / WRITE_EXTERNAL_STORAGELegacy shared-storage access for older devicesRead API 26–32; write API 26–29App-scoped storage and the system picker remain available“Allows file access on older Android versions.”Permission state is not backed upLegacy compatibility only; no new runtime request on modern Android
READ_MEDIA_IMAGES / READ_MEDIA_VIDEO / READ_MEDIA_AUDIOGranular media fallback for Android 13+ integrationsAndroid 13+ (API 33+)Media actions use app-scoped files or a system picker when not granted“Allow only the media types you want File Explorer to open.”Permission state is not backed up; media content is never copied by backup rulesRuntime, optional, least-privilege fallback
QUERY_ALL_PACKAGESComplete App Manager inventory for search, sort, APK analysis, and sharingAndroid 11+ package visibilityApp Manager falls back to launcher-visible packages through a declared <queries> intent“Used only by App Manager to show installed applications.”Installed-package metadata and APKs are not included in app backup rulesRestricted permission; owner review required before Play submission
INTERNET / ACCESS_NETWORK_STATERemote repositories, cloud status, and local share-server connectivity checksAll supported API levelsOffline locations remain usable; network failures are surfaced as provider errors“Network access is used only when a remote feature is selected.”Credentials and network state are excluded from cloud backupNormal permissions; release-ready
FOREGROUND_SERVICE / FOREGROUND_SERVICE_DATA_SYNCLong-running transfers and the local share serverAll supported API levels; Android 14+ type declarationWork can be cancelled; Android 15 timeout calls stop the service cleanly“Keeps an active transfer or share server visible while it runs.”Queue metadata follows app backup policy; credentials remain excludedNormal/type permissions; release-ready with timeout gate
POST_NOTIFICATIONSTransfer progress, completion, and share-server status notificationsAndroid 13+ (API 33+)Operations continue without notifications and remain visible in the app“Allow notifications to see transfer progress.”Permission state is not backed upRuntime, optional; release-ready
MainActivity (exported=true, launcher)Normal launcher entry pointAll supported API levelsNone; the activity validates storage state before opening the browser“Start File Explorer.”No activity state or permission grant is backed upRequired launcher surface; release-ready
TransferService / ShareServerService (exported=false)Internal transfer and share-server workersAll supported API levelsExplicit start failures are reported; services stop on cancellation and timeoutDescribed by the active transfer/share actionService state is not restored from backupInternal-only; release-ready
ShareServerTileService (exported=true, BIND_QUICK_SETTINGS_TILE)Optional Quick Settings control for the local share serverAndroid 7+ (API 24+)Share server remains controllable from the app“Quick Settings can start or stop local sharing.”Share-server settings and credentials are excludedSystem-bound export; release-ready
FileProvider (exported=false, URI grants)Temporary APK/file sharing through Android’s chooserAll supported API levelsShare action reports a recoverable error; no public provider access“The selected file is shared through a temporary Android URI.”Shared files are not backup dataInternal provider; release-ready
FileDocumentsProvider (exported=true, MANAGE_DOCUMENTS, URI grants)Android Storage Access Framework browsing, creation, and editingAndroid 4.4+ (API 19+; app min API 26)Contract errors are returned for inaccessible, removed, or invalid roots“Android’s file picker can use File Explorer as a document source.”Provider roots and grants are not restored by cloud backupRequired SAF integration; release-ready; external submission remains owner-gated
Application backup rules (allowBackup, backup_rules.xml, data_extraction_rules.xml)Preserve safe portable settings while excluding secrets and private vault dataAndroid 6+ cloud backup; Android 12+ data extraction rulesRestore omits database, security preferences, credentials, and vault files“Safe settings can be backed up; secrets and vault data stay on-device.”Room database, security preferences, and .vault/ are explicitly excludedRelease gate required; policy is checked in

Backup rules exclude the Room database (contains Keystore-encrypted network credentials), security preferences, and vault files from Android cloud backup.

FAQ

Q: Why does it need All Files Access? A: Android requires MANAGE_EXTERNAL_STORAGE to browse outside app-specific directories. If it is denied, File Explorer stays usable in limited mode and opens its app-scoped storage instead of crashing.

Q: Is root required? A: No. Root features are optional and auto-detected. The app works as a standard file manager without root.

Q: Which archive formats are supported? A: ZIP (with AES-256 encryption), 7z, TAR, GZ, BZ2, XZ, Zstandard, and read-only RAR. Archives can be browsed as virtual folders without extracting.

Q: Are my cloud credentials stored securely? A: Network passwords are encrypted before database storage with Android Keystore-backed AES-GCM. Cloud OAuth tokens stay in memory unless you choose Stay signed in, which stores account tokens in Keystore-encrypted app preferences.

Contributing

Issues and PRs welcome. This project follows the "maximum feature density" philosophy — if it belongs in a file manager, it should be here.

License

MIT

About

Full-featured Android file manager with root access, archive support, network protocols, cloud storage, built-in editor, and app manager. OLED dark theme. Zero-config.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

12 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages