Pho - 一个用于查看和上传照片的无服务端应用

中文 | English

安装

开源版(仅 Android APK):

Pro 版(含全部功能,需付费):

开源仓库仅提供 APK 下载。iOS 用户请前往 App Store、Android 用户请前往 Google Play 下载 Pro 版(支持免费试用基础功能后购买 Pro)。

介绍

该应用的目的是替代手机上的自带相册应用,并且能够将照片同步到网络储存.
功能简单,只是用于查看照片以及同步照片到网络储存.试图做到优秀的体验.

功能

支持的网络储存

与 Pro 版本差异

本仓库为 Pho 开源版,仅包含核心的照片查看与同步功能.以下功能仅在 Pro 版本中提供(未开源):

开源版仅支持 Samba / WebDAV / NFS 三种网络储存.

Pro 版在 App Store 和 Google Play 提供: App Store / Google Play

Screenshots

本地相册 云端相册 同步页面 照片查看

roadmap

构建

环境要求

构建步骤

# 1. 生成 protobuf 代码 (Go + Dart stubs)
make prebuild      # 安装 protoc 插件
make protobuf

# 2. 构建嵌入式 Go 服务端
make server-aar     # Android: android/app/libs/server.aar (需 gomobile)
make server-ios     # iOS: ios/Frameworks/RUN.xcframework
make server-linux   # Linux: linux/lib/run.so
make server-windows # Windows: windows/lib/run.dll

# 3. 构建 Flutter 应用
make apk           # Android APK
make ipa           # iOS IPA

# 4. 运行测试 (需要 Docker 用于 SMB/WebDAV/NFS 测试容器)
make test

注: flutter run 不会自动构建 android/app/libs/server.aar,需先执行 make server-aar,否则 Go 服务端无法启动.

Contribute

感谢各位的积极反馈

给本项目提需求的还不少,但是我一个人精力有限,如果你有兴趣,欢迎加入.

可以在issue中回复沟通,帮忙一起做一些功能,提出你的pull request.

文件储存逻辑

本着尽可能简单的逻辑来储存文件,以时间为目录结构,以文件名为文件名储存源文件.在根目录创建一个.thumbnail目录来储存生成的缩略图,缩略图的目录结构与源文件相同.
你可以随时以其他形式利用你备份上去的照片,而不用依赖此app. 目录结构示意图:

├── 2022
│   ├── 07
│   │   ├── 02
│   │   │   ├── 20220702_100940.JPG
│   │   │   ├── 20220702_111416.JPG
│   │   │   └── 20220702_111508.JPG
│   │   └── 03
│   │       ├── 20220703_101923.DNG
│   │       ├── 20220703_112336.DNG
│   │       └── 20220703_112338.DNG
├── 2023
│   └── 01
│       └── 03
│           ├── 20230103_112348.JPG
│           ├── 20230103_124634.JPG
│           └── 20230103_124918.DNG
└── .thumbnail
     └── 2022
         └── 07
             ├── 02
             │   ├── 20220702_100940.JPG
             │   ├── 20220702_111416.JPG
             │   └── 20220702_111508.JPG
             └── 03
                 ├── 20220703_101923.DNG
                 ├── 20220703_112336.DNG
                 └── 20220703_112338.DNG

Star History

Star History Chart