V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
putilaoha
V2EX  ›  程序员

一个人写了大半年 Android App,聊聊过程中的一些取舍

  •  1
     
  •   putilaoha · 18 小时 6 分钟前 · 1964 次点击

    App 是 Meows ,Android 上的 Linux 服务器监控工具,纯原生 Jetpack Compose 开发,之前发过几次。这次不介绍功能了,聊聊开发过程中一些纠结过的点。

    要不要装 agent

    一开始也考虑过走 agent 方案,服务端装个守护进程推数据,能做的事情多很多。但想了想,我自己作为用户其实最烦在服务器上多装东西,尤其是小鸡,本来资源就不多。

    最后选了纯 SSH ,好处是零侵入,坏处是能拿到的数据有限,得在客户端做更多解析。这个取舍到现在觉得是对的——填个地址就能看到所有指标,不用折腾。

    总览控制台

    CPU 、内存、磁盘、上下行流量、TCP 连接数、在线时长,实时刷新。9 种指标都有历史曲线,可以切 1 分钟 / 2 分钟 / 5 分钟跨度。

    流量图表

    终端要不要自己写

    调研了一下 Android 上能用的终端库,要么太老,要么和 Compose 不兼容。最后决定自己写 ANSI 解析引擎,手搓状态机。

    写完才发现这东西是个坑——光是 CJK 全角字符的宽度处理就搞了好几天,还有各种转义序列的边界情况。不过好处是完全可控,后面加语义着色就很自然:终端自动识别输出内容类型上色,文件权限逐字符着色( r 绿 w 橙 x 红)、路径按类型区分(/etc 配置色、/var/log 日志色)、IP 地址、百分比阈值着色(≥90% 红、≥70% 黄),比纯白字看着舒服不少。

    终端语义着色

    nano 、vim 、htop 都能正常跑,底部有快捷键栏,支持跳板机,内置了 4 款等宽字体可选。

    nano 编辑器

    关于定价和安全

    $4.99 一次买断,没有订阅,没有内购,没有广告,后续更新免费。去年 10 月底上架,到现在版本号刷到 1.0.144 了。

    不想做免费 + 广告,一是体验差,二是不想接第三方 SDK 。App 只申请了通知权限,不收集不共享任何数据。所有密码和私钥走 AES-GCM + Android Keystore 硬件级加密,不是明文落盘。

    设置页面

    其他功能

    • 告警:CPU 、内存、磁盘阈值 + 掉线通知,多指标超标合并推送,有防抖
    • 离线 IP 库 + 骨干网识别( CN2 、9929 、CMI 这些)
    • 8 项流媒体 / AI 解锁检测,直接显示在卡片上
    • SSH 登录失败次数统计,一眼看出有没有被暴力破解
    • Google Drive 加密备份,换机一键恢复

    告警设置

    卡片徽章配置

    下载

    Google Play 搜 Meows

    https://play.google.com/store/apps/details?id=com.meows.android

    上架地区: 日本、美国、新加坡、韩国、香港、台湾、英国、加拿大、澳门、马来西亚、冰岛。

    要求: Android 14+,Google Play 商店 → 设置 → 关于 → 「设备已通过认证」( Google Play 策略,非 App 限制。解锁 bootloader 的设备可能显示未认证,可先在网页端入库)。支持简中 / 繁中 / 英 / 日 / 韩。

    有问题或建议可以直接回帖,我都会看。

    22 条回复    2026-03-25 17:19:43 +08:00
    lambdavip2022
        1
    lambdavip2022  
       18 小时 2 分钟前
    这个需要在服务器安装对应的 server 组件吗?还是只需要手机安装 APK 就可以用了。
    putilaoha
        2
    putilaoha  
    OP
       17 小时 57 分钟前
    @lambdavip2022 不需要,服务器端零安装。手机装好 App ,填上服务器 IP 和 SSH 账号就能用,针对这个问题,文章第一节说过了
    Cabana
        3
    Cabana  
       17 小时 30 分钟前 via iPhone
    在用 serverbox ,它的终端是真难用
    bkmi
        4
    bkmi  
       13 小时 43 分钟前 via Android
    不让下载,“您的设备与此版本不兼容”
    Samsung S25 Ultra Android 16
    mosanHZ
        5
    mosanHZ  
       13 小时 36 分钟前
    告警是实时的?岂不是要常驻手机后台?
    putilaoha
        6
    putilaoha  
    OP
       13 小时 29 分钟前
    @bkmi 请先确保 Google Play Store 应用的认证显示为“设备已通过认证”
    bkmi
        7
    bkmi  
       12 小时 32 分钟前 via Android
    @putilaoha 那不行了,手机 root 了
    putilaoha
        8
    putilaoha  
    OP
       12 小时 23 分钟前
    @bkmi 文章里有写:( Google Play 策略,非 App 限制。解锁 bootloader 的设备可能显示未认证,可先在网页端入库)
    bjzhou1990
        9
    bjzhou1990  
       11 小时 58 分钟前
    牛逼,但是 M3 真的丑
    putilaoha
        10
    putilaoha  
    OP
       11 小时 53 分钟前
    @bjzhou1990 M3 设计我觉得还行,换个好看的壁纸可能会好点,毕竟动态取色跟壁纸走的
    vt2rexm
        11
    vt2rexm  
       11 小时 47 分钟前
    这算不算是一种探针的 app 化?
    putilaoha
        12
    putilaoha  
    OP
       11 小时 39 分钟前
    @vt2rexm 差不多吧,一开始是给自己用的。传统探针要在服务器上装 agent ,配环境配权限,数据还得过第三方。我不太习惯这套,就做了这个,数据加密落盘到本地,服务器上什么都不用装,甚至 app 也只需要一个通知权限,非常轻
    leiuu
        13
    leiuu  
       11 小时 31 分钟前
    不错 界面比很多监控软件现代化多了
    有借助 ai 编程吗 效果怎样
    另外有个风险是本地需要保存很多服务器的私钥吧
    putilaoha
        14
    putilaoha  
    OP
       11 小时 24 分钟前
    @leiuu 你说到点子上了,这也是我开发时遵循的一个理念,就是安全性。所有凭证走 AES-GCM + Android Keystore 加密存储,不是明文落盘。密钥由系统底层托管,不存在 App 的存储空间里,即使数据库被拖走也解不出来。
    magicls
        15
    magicls  
       11 小时 22 分钟前
    很不错啊,支持一下。iOS 上有个 ServerCat ,现在 Android 终于有了。
    putilaoha
        16
    putilaoha  
    OP
       11 小时 18 分钟前
    @magicls 好家伙,看名字怎么也是猫系软件
    magicls
        17
    magicls  
       11 小时 15 分钟前
    @putilaoha #16 老实说,我刚才很想试试,但是搜过去一看 39.99 HKD,ummmm……。

    其实愿意为好东西付费的人不少,但大部分人还是喜欢先看一眼。我看站内你也推广了不少,好 app 不应该被埋没,只是我温和建议老哥下一版改成免费试用 + 收费继续用的模式吧?或者免费的只能添加 1 台 server ,付费或订阅解锁更多这样…
    putilaoha
        18
    putilaoha  
    OP
       11 小时 9 分钟前
    @magicls 理解第一眼的犹豫。不过算下来其实就一杯咖啡的价格(节假日有打折活动),买断永久用,没有订阅没有内购,后续版本更新也一直免费
    qwell
        19
    qwell  
       11 小时 2 分钟前
    可以,老哥很强
    putilaoha
        20
    putilaoha  
    OP
       11 小时 0 分钟前
    @qwell 因为主要是自用,所以没啥压力,可以静下来做一个东西
    guanzhangzhang
        21
    guanzhangzhang  
       10 小时 55 分钟前
    as 才有 compose 预览,ai 写的还是纯手写的,ai 写的话 compose 预览啥的咋解决
    putilaoha
        22
    putilaoha  
    OP
       10 小时 47 分钟前
    @guanzhangzhang 手搓,ANSI 解析引擎也是,另外 Compose 预览?我都是真机调试啊,没必要啊
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   961 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 20:07 · PVG 04:07 · LAX 13:07 · JFK 16:07
    ♥ Do have faith in what you're doing.