Material Design file manager for Android — local & remote storage, LAN transfer, embedded servers
开源 Material Design Android 文件管理器:本地/远程存储、局域网传输、内嵌 FTP 与 Web 服务、备份计划等
Cloud Pivot (云枢) is an open-source file manager that follows Material Design. It targets advanced users who need FTP, SFTP, SMB, and WebDAV, LAN device transfer, on-device FTP/Web servers, scheduled backups, archives, and optional root / Shizuku workflows.
| Application ID | com.bluesky.cloudpivot |
| Version | 1.8.0 (versionCode 40) — see app/build.gradle |
| Repository | github.com/Blduu/CloudPivot-MaterialDesign |
| Store copy | fastlane/metadata/android/ |
- File operations — Browse, multi-select, copy/move/delete; breadcrumbs; Linux-aware paths (symlinks, permissions, SELinux context).
- Remote storage — FTP, SFTP, SMB/CIFS, WebDAV (in-tree
dav4jvm). - LAN transfer — Send/receive with trusted devices and foreground service.
- Embedded servers — FTP server (incl. Quick Settings tile), HTTP/Web server (NanoHTTPD).
- Archives — View/extract/create common formats via libarchive JNI.
- Viewers — Image and text editor; document intents (
OPEN_DOCUMENT,GET_CONTENT, etc.). - Backup — Scheduled backups with boot/alarm receivers and WorkManager.
- Theming — Custom colors and night mode (optional true black).
- TV — Leanback launcher entry (
LEANBACK_LAUNCHER).
- Language: Kotlin, coroutines
- UI: AndroidX, Material Components, ViewBinding
- Networking / protocols: SMBJ, jcifs-ng, sshj, Apache Ftpserver/MINA, WebDAV (
:dav4jvm), NanoHTTPD, OkHttp (transitive) - Native: CMake —
hiddenapi,syscallJNI (seeapp/CMakeLists.txt) - Quality: Android Lint, detekt, ktlint (see root
build.gradle)
| Path | Role |
|---|---|
app/ |
Main Android application |
fastscroll/ |
Fast-scroll list widget module |
dav4jvm/ |
WebDAV client library module |
docs/ |
Bilingual documentation (zh/, en/) |
config/detekt/ |
detekt configuration |
fastlane/metadata/ |
Store listing text (en-US, zh-CN) |
Modules included in settings.gradle: :app, :fastscroll, :dav4jvm.
- Android Studio — version compatible with Android Gradle Plugin 8.11.x (see
build.gradle). - JDK 17 — use Android Studio’s bundled JDK or an installed JDK 17.
- Android SDK —
compileSdk36, Build-Tools 36.0.0 (seeapp/build.gradle). - NDK — version pinned in
app/build.gradle(e.g. 28.1.13356709) for native builds.
Clone the repository and open the project root in Android Studio, then sync Gradle.
# Example upstream (replace with your fork URL if needed)
git clone https://github.com/Blduu/CloudPivot-MaterialDesign.git
cd CloudPivot-MaterialDesign # or the root folder name you cloned into# Windows
gradlew.bat :app:assembleDebug
# Linux / macOS
./gradlew :app:assembleDebugOutput (typical): app/build/outputs/apk/debug/.
- Copy
signing.properties.exampletosigning.properties(do not commit), or setSTORE_FILE,STORE_PASSWORD,KEY_ALIAS,KEY_PASSWORD(seesigning.gradle). - Run:
gradlew.bat :app:assembleReleaseRelease builds use R8 / ProGuard and resource shrinking (see app/proguard-rules.pro).
gradlew.bat :app:detekt :app:ktlintCheck :app:lintDebug| Audience | Entry |
|---|---|
| Bilingual hub | docs/README.md |
| English | docs/en/README.md |
| 简体中文 | docs/zh/README.md |
Topics covered: product & requirements, design, development, testing, compliance & security.
Contributions are welcome on GitHub via fork and pull request. Please:
- Match existing code style; fix detekt / ktlint issues before submitting.
- Update both
docs/zh/anddocs/en/when changing user-facing or architectural documentation. - Avoid committing secrets (
signing.properties, keystores,google-services.jsonif applicable).
Network and backup-related behavior is documented under Security / 安全. The app allows cleartext traffic and user CA trust by default for LAN and private servers — review app/src/main/res/xml/network_security_config.xml before hardening for your use case.
For vulnerability reports, use the repository Security tab (e.g. private Report a vulnerability) or maintainer contact.
Copyright — see notices in source files. Licensed under the Apache License, Version 2.0: see LICENSE. Third-party licenses are shown in-app (app/src/main/res/raw/licenses.xml) and in docs.