V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
msmmbl
V2EX  ›  Android

将 android 作为小型 server 运行是否可行

  •  
  •   msmmbl · 2020-01-15 17:37:19 +08:00 · 8123 次点击
    这是一个创建于 1535 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近一个工控项目中,有一个需求:

    通过传感器采集一个设备的温度,传感器每隔 1 秒采集一次。需要在一个安卓平板上显示实时数据和历史 24 小时的数据。局域网中的其他手机也可以查询这些数据。

    目前我想要的做法是:

    1. 温度传感器接到 esp32 WiFi 模块,通过 mqtt 将温度值发布出来。
    2. 在安卓平板上建立 mqtt server 并订阅数据,并将数据存入 sqlite。
    3. 在安卓上开启 web server,想局域网提供 RESTful 接口查询数据(连接设备不会太多性能应该足够)。
    4. 安卓上显示一个 UI 界面显示温度数据。

    目前,使用安卓平板作为显示终端是客户要求的。其他部分还可以改。

    我本人做过简单的安卓 App 开发。但是对于安卓作为这样的 server 运行的场景,没有相关经验。我目前能想到的坑是安卓作为 server 需要长期唤醒,和作为 web server 后台运行保活的问题。是否有做过类似项目的小伙伴提供些建议。

    如果这个方案不靠谱,我个人趋向于再增加一个小型的 ARM 单板,在上面安装 Ubuntu,专门用于运行 mqtt server 和 web server 和数据库 server。安卓平板只做显示。

    第 1 条附言  ·  2020-01-15 21:17:16 +08:00
    谢谢大家回复,谢谢给出在 android 上做类似项目的经验和给出方案的小伙伴,谢谢推荐树莓派、香橙派的朋友们。你们让我坚信,在加一个 arm 单板才是快速做完项目、经济、稳定、不折腾的方案。感谢大家建议。
    35 条回复    2020-01-16 17:59:11 +08:00
    mouyase
        1
    mouyase  
       2020-01-15 17:41:14 +08:00 via Android
    安卓系统跑环境不如 ubuntu 这类
    maichael
        2
    maichael  
       2020-01-15 17:43:17 +08:00
    跑我记得是可以跑,可是折腾起来比较麻烦而且没必要。
    stillyu
        3
    stillyu  
       2020-01-15 17:43:30 +08:00 via iPhone
    弄个树莓派当 server 吧,开发更方便
    jdgui
        4
    jdgui  
       2020-01-15 17:44:17 +08:00
    可以跑,但是问题还是有的,主要是各种乱七八糟国产系统会杀进程之类的。需要加白名单。
    然后别的问题不是特别大,当然最好的还是整个单独的服务器
    Buges
        5
    Buges  
       2020-01-15 17:44:44 +08:00 via Android
    完全没问题,注册成服务,原生 Android 禁用电池优化后不会瞎杀你的 app。
    lihongjie0209
        6
    lihongjie0209  
       2020-01-15 17:44:58 +08:00
    必须用专门的 Server, 哪天客户需要在电脑上看报表, 你还要去平板上开端口?
    psychoo
        7
    psychoo  
       2020-01-15 17:48:10 +08:00
    真的决定是本地 server 吗
    xz410236056
        8
    xz410236056  
       2020-01-15 17:51:28 +08:00
    可以是可以啊,他不贵吗?
    cz5424
        9
    cz5424  
       2020-01-15 17:51:36 +08:00 via iPhone
    如果没有内网要求,建议发到远程服务器,平板坏了怎么办
    msmmbl
        10
    msmmbl  
    OP
       2020-01-15 17:54:56 +08:00
    @mouyase @maichael @stillyu @jdgui @lihongjie0209 嗯嗯,说的是,ubuntu 之类 nginx 什么都现成的,Android 还要自己折腾。
    @Buges 谢谢提供信息
    @psychoo 真的,客户没给外网开服务器的预算
    msmmbl
        11
    msmmbl  
    OP
       2020-01-15 18:00:16 +08:00
    @cz5424 有内网需求,我有一套用公有云的方案似乎没过
    @xz410236056 平板是指定要的,用于显示。只是想探讨下复用平板当作 server 的可能性。
    eason1874
        12
    eason1874  
       2020-01-15 18:05:52 +08:00
    除非以后维护按次收费,不然采用平板电脑当服务器这种不成熟方案就让自己没事找事。

    三四百块搞个树莓派,稳定好用。
    winterbells
        13
    winterbells  
       2020-01-15 18:07:41 +08:00 via Android
    可以的,不过安卓上 HTTP server 貌似有点坑
    winterbells
        14
    winterbells  
       2020-01-15 18:10:09 +08:00 via Android
    server 和 UI app 写成一个就可以了,省的跑后台去出什么乱子

    mixplorer 可以启动 http 服务器管理文件,即使是前台服务,放后台五分钟也会断开连接(我是 1+7p )
    deepure
        15
    deepure  
       2020-01-15 18:12:51 +08:00
    如果平板做为专有设备,只做你这个需求,还是可以考虑的,如果还干其它事就不用考虑了。
    Juszoe
        16
    Juszoe  
       2020-01-15 18:28:49 +08:00
    你最后那个方案靠谱些,安卓平板做个 client 就可以了
    jelen0101
        17
    jelen0101  
       2020-01-15 18:29:00 +08:00
    Linux Deploy
    Foxkeh
        18
    Foxkeh  
       2020-01-15 18:40:52 +08:00
    大坑, 安卓设备做服务器可用性和可靠性保障都难与云服务器媲美, 只适合自己折腾玩玩,就像楼上说的 ROOT 然后 BusyBox+Linux Deploy 可以玩起来.
    但是你要做生产项目交付这么玩就是纸糊的方案
    ragnaroks
        19
    ragnaroks  
       2020-01-15 19:03:19 +08:00
    做 MC 服务端是完全可行的...在一个 10 核 4G 的手机上跑了 2 年多的 MC 服务端,FRP 做转接,日常在线 20 多个人完全没问题
    xmumiffy
        20
    xmumiffy  
       2020-01-15 19:10:28 +08:00 via Android
    定制系统保活不是问题 加个白名单就行了
    PTLin
        21
    PTLin  
       2020-01-15 19:38:54 +08:00
    termux?
    IgniteWhite
        22
    IgniteWhite  
       2020-01-15 19:41:23 +08:00 via iPhone
    推荐树莓派…
    labulaka521
        23
    labulaka521  
       2020-01-15 20:06:27 +08:00 via Android
    tmux
    zzcworld
        24
    zzcworld  
       2020-01-15 20:19:13 +08:00
    买一个 raspberry pi zero w,一百多块就可以搞定了
    eminemcola
        25
    eminemcola  
       2020-01-15 20:38:50 +08:00
    做过类似的场景。可以的,完全没问题。
    保活这块需要给应用加白名单。
    reus
        26
    reus  
       2020-01-15 20:50:56 +08:00
    树莓派都嫌贵了,加个几十块的 arm 单板就行了,完整的 armbian 给你用,何必折腾。
    https://item.taobao.com/item.htm?spm=a1z10.5-c.w4002-9552179460.14.789556ecQE9QQj&id=599644205492
    zyq2280539
        27
    zyq2280539  
       2020-01-15 20:54:35 +08:00
    100 块包邮的斐&讯 N1 它不香吗? 双频 wifi 千兆以太网卡 高清 4K armv8l 64 位 CPU
    star29
        28
    star29  
       2020-01-15 21:02:48 +08:00
    完全可以,不过还是推荐树莓派,拓展性好也稳定
    yinzhili
        29
    yinzhili  
       2020-01-16 09:25:36 +08:00
    树莓派不是更适合吗?
    dizner
        30
    dizner  
       2020-01-16 10:48:32 +08:00
    我做过类似的东西,使用的是 ARM 的开发板,运行 Android 系统,可接入 esp32 WiFi 或者蓝牙、或者 zigbee(我们项目使用的这个)。开发板有 GPIO 接口,也有 uart 接口。
    当然我个人建议使用树莓派运行 AndroidThings 平台,搭配 USB 触摸屏也可以实现以上功能。
    (以上两种方案保活不用考虑,都可以很优美并且很稳定的实现,httpserver 的话,之前的一个项目用到了,是个开源的项目,可以在 github 上找找。)

    我觉得也可考虑使用 udp 通信啊(小声逼逼)
    dizner
        31
    dizner  
       2020-01-16 10:49:58 +08:00
    使用 arm 板或者树莓派的话,可以省去单独再加 pad 来做显示终端了。
    viruser
        32
    viruser  
       2020-01-16 11:59:59 +08:00
    Linux deploy 总感觉不大行,之前用的 AnLinux 感觉会方便很多,AnLinux 使用 proot 虚拟了个系统目录出来。或者 Termux 也可以,但是目录结构和普通的 Linux 系统还是不大一样。
    msmmbl
        33
    msmmbl  
    OP
       2020-01-16 13:39:44 +08:00
    @dizner 感谢建议,AndroidThings 确实合适。不过平板电脑是客户指定的,不然我会考虑晚霞 AndroidThings。
    @viruser 感谢,不过这块环境配置起来比较麻烦了。更趋向于封装一个 apk 给客户,拿个平板就自己安装。所以会考虑在 app 里面实现 web 服务器。不过想想这块坑也是挺大的。今天会去找客户聊下方案。
    Stain5
        34
    Stain5  
       2020-01-16 16:44:16 +08:00
    @zyq2280539 #27 openwrt 相比 android 坑只有更多,一些依赖的缺失也更严重
    zyq2280539
        35
    zyq2280539  
       2020-01-16 17:59:11 +08:00
    @Stain5 不是 openwrt 啊,可以用 armbian,我现在就在用 ubuntu 18.04 lts 版本,还可以吧,大多数软件都能兼容,当然也有一些软件没有 arm64 版本的这个只能从源码自己编译了,还好,常用软件都是支持的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   4552 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 09:59 · PVG 17:59 · LAX 02:59 · JFK 05:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.