⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 http://www.iocoder.cn/Fight/plainapp-browser-phone/ 「芋道源码」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

AirDroid 我用了好几年,从最初的免费传文件、看短信,到后来弹广告、限流量,再到现在核心功能锁在付费墙后面,就慢慢不怎么用了。

中间试过不少替代方案。KDE Connect 开源免费,功能也全,但 Windows 端的连接稳定性一直不行,动不动断连。LocalSend 传文件飞快,但就是传文件。Pushbullet 免费版砍得只剩通知同步。也试过自己搭 FTP,能用,但每次都要手动输地址,太麻烦。

上个月在 GitHub Trending 上翻到 PlainApp,5k Star,Google Play 下载量过百万。花了一个下午装好、配完权限、把每个功能点了一遍,感觉挺不错。

仓库首页实时截图,Star 与 Fork 计数同时可见

它没发明任何功能,只是把手机本来就有的能力摊开了

Web 端首页仪表盘

这句话是全文的骨架。PlainApp 里的每一项能力,手机本身都有;短信、通话记录、文件、通讯录、投屏,一样都不是它发明的。它做的事是把这些能力从一个浏览器页面里暴露出来,而且不收钱、不走云、不加锁。

这份克制是它最大的产品力。同类工具这几年都在往订阅和云端中转上走,它反着来,全免费、全本地、代码全开。

装完点一下,浏览器里就多出一个手机后台

手机端首页

手机上装完 PlainApp,点一下 Start,它就启动一个本地 Web 服务。同一 WiFi 下的电脑打开浏览器,输入 App 显示的地址加端口(比如 https://192.168.1.50:8443),手机端确认授权,浏览器里就会出现一个完整的手机管理后台。

电脑端不需要装客户端,不需要注册账号。文件、照片、短信、通话记录全部在局域网内传输,不经过第三方服务器。连接走 TLS 加 XChaCha20-Poly1305 加密,代码按 AGPL-3.0 开源,全部公开。

这里最省事的是电脑那头。 你不需要装任何软件,一个浏览器就是客户端,换台电脑也不用重新配。

六个模块挨个试过,能用的和不能用的

文件管理

文件管理是它最像本地文件管理器的一块。浏览器里能浏览手机全部存储空间,内部存储、SD 卡、外接 U 盘都能访问,上传、下载、重命名、移动、删除的操作逻辑和本地一致。

实际用起来最有感的是大文件。拍视频素材动不动两三个 G,以前要么插线,要么微信文件传输助手压成渣画质,要么 AirDroid 传一半弹额度提示。现在浏览器右键下载原文件,不限速、不压缩;照片和视频可以直接在浏览器里预览播放,音频支持在线串流并带播放列表。

短信管理

短信和通话记录能在浏览器里直接读和发,通话记录支持搜索和筛选。

这里有一条必须先说,Google Play 版本的短信和通话管理被移除了。要用完整功能,得去 GitHub Releases 下载 APK。这不是它藏着功能不给,是 Android 对短信权限的商店政策限制。

屏幕镜像

屏幕镜像基于 WebRTC,支持 Auto、HD、Smooth 三档画质切换,30fps,音频同步回传,浏览器端可以直接用鼠标反向控制手机。拿来演示 App 操作、远程帮家里人调设置够用了。

和 Scrcpy 比,延迟和画质都有差距。但 Scrcpy 需要 USB 线加 ADB 调试,这个一个浏览器就搞定,门槛差着一截。

通知同步是把手机通知实时推到浏览器。写代码的时候不用隔几分钟拿一次手机。

内置工具这一块不小气。Markdown 笔记编辑器,写完存在手机上;内置 RSS 阅读器,在浏览器里管理和阅读订阅源;还有 P2P 局域网聊天和文件互传,设备间直连不经过服务器。

Markdown 笔记

另外还有番茄钟、噪音检测这些小工具。核验官方 README 时发现两个来源没写的,一个是投屏到电视,能把媒体投到支持 DLNA 或 Chromecast 的设备上;另一个是完整的音视频播放器,带播放列表。

RSS 阅读器

其他能力包括联系人管理、已安装应用查看和 APK 备份导出、设备信息查看(电量、存储、网络状态)。浏览器端支持 PWA,可以固定到桌面,用起来接近原生应用。

README 那张对比表,说明它抢的是谁的位置

来源当时从 README 整理过一张对比表,十四项能力乘四个产品,把 PlainApp 和 AirDroid、KDE Connect、Pushbullet 摆在一起打分。那张表现在在官方 README 里已经找不到了,不过它指出的位置关系还成立。

三条最关键的差别值得点一下。浏览器访问这一项只有 KDE Connect 是叉,它必须装桌面客户端;全部功能免费这一项 AirDroid 和 Pushbullet 都只是部分;Markdown 笔记和内置 RSS 阅读这两项只有 PlainApp 有,其他三家全无。

AirDroid 那一列「付费」的密度不用多解释,Pushbullet 免费版连文件传输都没有。KDE Connect 全免费且良心,但跨平台体验不稳定。PlainApp 在「全功能免费加浏览器即客户端」这个组合上,目前没有对手。

需要说明的是,这几家的免费额度和功能边界随时会变,上面对比里涉及第三方的部分,以各自官方为准。

四条短板,每条都写清楚

只能在局域网用。 想从公司连家里的手机,要自己搭 frp 做内网穿透。AirDroid 收费版自带远程访问,如果远程需求大又不想折腾,它目前确实还是最省事的。

必须开着浏览器标签页。 KDE Connect 有系统托盘图标常驻后台,这种存在感 PlainApp 没有。虽然支持 PWA 固定桌面,还是不如原生客户端方便。

投屏比不上 Scrcpy。 画质和延迟都有差距,要求高的话还是插 USB 线。

只支持 Android 9.0 以上,老机型用不了。

装起来两步,但有一处会让人卡一下

装之前先记一件事,去 GitHub Releases 下 APK,那里是功能最完整的版本,短信和通话管理都在。Google Play 和 F-Droid 上也有,但商店版把短信与通话管理摘掉了。

  1. 打开 github.com/plainhub/plain-app/releases 下载最新版 APK,直接安装。
  2. 打开 App,先给存储权限,不然浏览器里看不到文件。
  3. 点右上角的笔记本电脑图标,或者直接点 Start。服务启动后,App 界面会显示一个地址,格式是 https://你的手机IP:8443。
  4. 同一 WiFi 下的电脑浏览器输入这个地址。

第 4 步会卡一下。 第一次访问浏览器会提示「连接不安全」,因为这个地址用的是自签名证书。点高级、继续访问就行,不是出问题了。

之后在登录页点 Login,手机端弹窗确认授权,就进管理后台了。需要用短信和通话功能的话,在手机端开放对应权限;不需要就不开,不影响文件管理和投屏这些。

想把地址省掉,可以在浏览器地址栏右侧点安装图标,把 PlainApp 固定到桌面或任务栏,以后直接从图标打开。

官方还有一份 FAQ 文档站在 plainapp.app/docs,遇到问题可以先翻那里。

它适合谁,不适合谁

PlainApp 不是完美的工具。它没有颠覆性创新,没有 AI 加持,也没有云端同步。它做的是把手机本来就有的能力,通过一个干净的界面暴露出来。不开订阅,不偷数据,不锁功能。

适合经常把文件在手机和电脑之间倒来倒去的人,尤其是大文件;也适合对数据流向敏感、不想让自己的短信和照片经过别人服务器的人;还适合临时要在别人电脑上操作自己手机的人,因为电脑那头什么都不用装。

不适合需要远程访问的人,除非你愿意自己搭内网穿透;也不适合追求投屏画质的人,那种需求应该用 Scrcpy。

仓库地址是 https://github.com/plainhub/plain-app 。最后交代一句,我没有实际安装过 PlainApp,上面的功能描述来自官方 README 与来源正文,文中那段实测是来源作者做的。

文章目录
  1. 1. 它没发明任何功能,只是把手机本来就有的能力摊开了
  2. 2. 装完点一下,浏览器里就多出一个手机后台
  3. 3. 六个模块挨个试过,能用的和不能用的
  4. 4. README 那张对比表,说明它抢的是谁的位置
  5. 5. 四条短板,每条都写清楚
  6. 6. 装起来两步,但有一处会让人卡一下
  7. 7. 它适合谁,不适合谁