msmmbl
V2EX  ›  Android

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

  •  
  •   msmmbl · Jan 15, 2020 · 18150 views
    This topic created in 2484 days ago, the information mentioned may be changed or developed.

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

    通过传感器采集一个设备的温度,传感器每隔 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。安卓平板只做显示。

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

    三四百块搞个树莓派,稳定好用。
    300
    300
    Jan 15, 2020 via Android
    13
    可以的,不过安卓上 HTTP server 貌似有点坑
    300
    300
    Jan 15, 2020 via Android
    14
    server 和 UI app 写成一个就可以了,省的跑后台去出什么乱子

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

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