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

有没有办法在安卓上直接运行二进制文件呢?(已 ROOT)

  •  
  •   Ploter · 3 天前 · 2148 次点击

    比如说在后台自动运行 restic 进行备份文件,在通过 rsync 同步到 NAS 上。

    当然,也可以通过 Syncthing 同步到 NAS 上,这我也在用,只是提供一个应用场景。

    我想知道:

    1. 是否可行?重启后能否自启动。
    2. 是不是可以通过写一个 Magisk 模块来实现。(目前只会装模块,不太了解怎么写
    第 1 条附言  ·  3 天前
    应该确定就是 Termux 了,感谢推荐
    之前了解到的时候还没敲过命令行,现在一看是真有用。
    18 条回复    2024-11-13 20:47:45 +08:00
    RightHand
        1
    RightHand  
       3 天前 via Android
    可以先用 adb 直接跑
    hrdom
        2
    hrdom  
       3 天前   ❤️ 1
    ”有没有办法在安卓上直接运行二进制文件“ 有办法,不过这个二进制文件编译时要配置好安卓的 c 库
    BeautifulSoap
        3
    BeautifulSoap  
       3 天前
    termux 不就是干这个的
    gam2046
        4
    gam2046  
       3 天前
    1 & 2:可以

    与手动运行方式无异。程序得先通过 NDK 交叉编译到 Android ,如果直接通过 ARM 编译器静态编译,最终会出现域名无法解析的情况。
    EvineDeng
        5
    EvineDeng  
       3 天前   ❤️ 2
    termux 你值得拥有,在里面直接安装 restic, rsync, syncthing 都可以。

    如果需要开机自启,除了在手机中相关设置项中设置好外,termux 中还需要安装借助 cronie 来跑自动任务,借助 termux-service 这个包来创建自动启动任务。
    Ploter
        6
    Ploter  
    OP
       3 天前
    @hrdom
    @gam2046
    好的,就是所有二进制文件都要自己通过源码加安卓 NDK 编译一次对吗,我去了解下。

    @RightHand
    @BeautifulSoap
    我想问下,这样能保持在后台吗,开机能自启动吗,我不太了解
    Ploter
        7
    Ploter  
    OP
       3 天前
    @EvineDeng wow ,我去看看 termux
    Ploter
        8
    Ploter  
    OP
       3 天前
    @EvineDeng 我想问下,可以通过 SSH 到 termux 进行操作吗?在手机上敲命令行太痛苦了
    Ploter
        9
    Ploter  
    OP
       3 天前
    @EvineDeng 在官方 Wiki 找到了
    EvineDeng
        10
    EvineDeng  
       3 天前
    @Ploter #9 手动开就是运行 sshd ,自动开就安装 termux-service ,然后启用 sshd 的 service 。
    EvineDeng
        11
    EvineDeng  
       3 天前   ❤️ 1
    @Ploter #9 国光的 termux 教程可以重点参考一下: https://www.sqlsec.com/2018/05/termux.html
    holoto
        12
    holoto  
       3 天前
    安装 Termux 然后通过 https://github.com/ochinchina/supervisord 挂一个 ttyd 后台。然后可以网页访问 ssh 了。静态文件服务器可以用 dufs
    Magisk 模块可以设置自启动的。去 Magisk 模块目录修改下已经安装的 Magisk 模块。改启动 sh 文件 挂个 supervisord 后台就行
    liujl
        13
    liujl  
       3 天前 via Android
    @holoto 很感兴趣,ttyd 具体怎么做?
    iceheart
        14
    iceheart  
       3 天前 via Android
    我以前玩过,13 年用一个很便宜的平板 root 了,改启动脚本,电源模式设为关屏,不断网,不休眠。从 linux deploy 里取出启动容器的脚本,启动时自动运行。这样就用安卓的 linux 内核跑了个 ubuntu 。
    yolee599
        15
    yolee599  
       2 天前 via Android   ❤️ 1
    使用 NDK 编译就行了,编译出来的二进制文件可以用命令行执行
    Ploter
        16
    Ploter  
    OP
       2 天前
    @EvineDeng #10 Termux: Boot 是不是只在系统启动时发挥作用而不是应用启动时,这样好奇怪啊
    Ploter
        17
    Ploter  
    OP
       2 天前
    @Ploter #16 明白了,要用 termux-service 才是创建系统服务。Boot 主要是开机启动。
    rev1si0n
        18
    rev1si0n  
       1 天前
    答案是可以的,即使不 root 也可以,区别大概只是权限问题

    1. 用 termux ,有 termux boot 插件可以实现自启动
    2. 本人开发的 https://github.com/firerpa/lamda 支持 magisk 模块自启动,可以远程连接操作,并且内置 shell 支持 rsync 命令以及 crontab 规则实现定期备份。
    3. 如果命令还不够你折腾的,可以安装扩展插件实现内置小型的 debian 环境,可以 apt 安装大部分软件或者自行编译。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3147 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 00:38 · PVG 08:38 · LAX 16:38 · JFK 19:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.