Skip to content

Latest commit

 

History

History
72 lines (45 loc) · 6.78 KB

README_zh-CN.md

File metadata and controls

72 lines (45 loc) · 6.78 KB

Material Files

Android CI 状态 GitHub 发行版 许可证

一个开源的 Material Design 文件管理器,适用于 Android 5.0+。

下载应用,请到 Google Play 下载应用,请到 F-Droid

在酷安上下载 下载 APK

在 Transifex 上帮助翻译

预览

特性

  • 开源:轻量、简洁并且安全。
  • Material Design:遵循 Material Design 规范,并且注重细节。
  • 面包屑导航栏:点击导航栏所显示路径中的任一文件夹即可快速访问。
  • Root 支持:使用 root 权限查看和管理文件。
  • 压缩文件支持:查看、提取和创建常见的压缩文件。
  • NAS 支持:查看和管理 SFTP 和 SMB 服务器上的文件。
  • 主题:可定制的界面颜色,以及可选纯黑的夜间模式。
  • Linux 友好:类似 Nautilus,支持符号链接、文件权限和 SELinux 上下文。
  • 健壮性:使用 Linux 系统调用实现,而不是另一个 ls 解析器
  • 实现良好:使用正确的方式打造,包括 Java NIO2 文件 APILiveData

为什么要有 Material Files?

因为喜爱 Material Design,并且是整洁、精致的 Material Design。

市面上已经有了许多强大的文件管理器,但它们中的大多数并非 Material Design。而即使在算是 Material Design 的应用之中,它们(或多或少)有着各种设计瑕疵(布局、对齐、留白、图标、字体等等)存在于应用的各个角落,让人难受;然而却又不是特别大的问题,以至于可能没人愿意特意改善。所以还是需要自己编写。

因为想要一个开源的文件管理器。

大多数流行并且可靠的文件管理器都是闭源的,并且我有时会使用它们来查看或修改需要 root 权限的文件,但我心里对于授予 root 权限给闭源应用还是有些不安。毕竟 root 权限意味着对设备的完全访问权限,而这台设备每天跟随着我并且存储着我的个人信息;这样的话,闭源应用实际上做了哪些事情就完全仅仅取决于它们的良心了。

因为想要一个正确实现的文件管理器。

  • 这个应用实现了 Java NIO2 文件 API 作为后端,而不是发明一个自定义的机制来获取文件信息和进行文件操作。后者经常变得与前端逻辑耦合起来,最终成长为一个包含各种东西的混合物(示例)。相反地,一个解耦的后端可以使得代码更加干净(更少问题),并且可以更轻松地加入新文件系统的支持。

  • 这个应用没有使用 java.io.File 或者解析 ls 的输出,而是构建了 Linux 系统调用的绑定来正确地访问文件系统。java.io.File 是一个陈旧并且缺少许多功能的 API,并且无法正确处理符号链接,因此许多人宁愿解析 ls 的输出。然而解析 ls 的输出不仅缓慢,而且不可靠,同时也正是 Cabinet 在新版本 Android 上无法正确运行的原因。而通过使用 Linux 系统调用,这个应用可以做到快速流畅,并且能够处理例如 Linux 权限、符号链接以至于 SELinux 上下文等等高级特性。应用也可以正确地处理含有无效 UTF-8 编码的文件名,因为应用中的路径没有简单地使用 Java 的 String 存储,而大多数其他文件管理器却并非如此,因此无法正确地进行文件操作。

  • 这个应用的前端是基于现代的 ViewModelLiveData 实现的,使得代码结构更加清晰并且支持转屏。应用也可以正确地处理文件操作中的错误、文件冲突和前台/后台状态。

总而言之,这个应用尽力遵守 Android 上的最佳实践并且做正确的事,同时保持源代码干净和可维护。

因为事情可以被人做好。

Nautilus 是一个设计美观并且用户友好的 Linux 桌面上的文件管理器,并且同时做到了 Linux 友好。Phonograph 是一个开源的 Material Design 音乐播放其应用(我自己已经使用多年),而它也有着绝佳的 Material Design 设计和实现。

所以,是时候再编写一个 Android 文件管理器了。

许可证

Copyright (C) 2018 Hai Zhang

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.