试过用 SSHDroid 把 Android 当成 SSH 服务,但电脑有时候能通过 ssh 访问安卓,有时候不能访问。
安卓有休眠机制,但网络会休眠吗? 22 端口有访问的时候不能唤醒设备吗?

或者自己在安卓上弄一个 ftp 服务器监听 21 端口,能让 21 端口实时访问吗?同时又希望在长期没有其他设备访问的时候又基本不增加耗电。

10 条回复    2021-01-09 00:30:06 +08:00
linhua
    1

linhua   92 天前

国产安卓系统会限制后台程序的运行,在应用程序设置里 设置成 不限制 就可以了。
小米的是在 应用设置–省点策略 里,如果设置成 智能限制后台运行,则不接电源,过一会就不能访问,如果接通电源,则一直可访问。 设置成 无限制,不管是否接通电源,始终可访问。
zictos
    2

zictos   92 天前

@linhua #1
我是三星的,已经把 SSHDroid 设为自动运行,取消电池优化以及取消手机自带的省电。
我其他需要保持后台运行的软件都是这么设置的,像 tasker 都可以保持长期后台运行。

但我发现 SSHDroid 其实并不需要后台,他运行的时候在进程看到实际是运行了一个 shell 脚本,即便把 SSHDroid 的后台关掉或者强制结束,但 ssh 服务依然可用,只是屏幕关掉一段时间后就很可能无法连接了,屏幕开启后不需要再次启动又能直接连接。

zictos
    3

zictos   92 天前

@linhua #1 很多后台运行的程序也会休眠的,需要自己定时唤醒,所以做不到实时
tanranran
    4

tanranran   92 天前

root 后把应用转为系统应用
Jirajine
    5

Jirajine   92 天前

和应用后台没关系吧。adbd 是系统进程,我用 adb shell,手机息屏以后反应也非常慢,亮屏才能恢复正常。应该与 Android 内核专门的调度有关。
zictos
    6

zictos   92 天前

@tanranran #4 如果是自己运行 shell 脚本是只需要把 shell 脚本移到 /system/bin 目录下吗?
试了用幸运破解器把 SSHDroid 移到系统目录,实际只是把 apk 移到了 /system/priv-app 下,但 data/data 下的数据还在原来的地方,而 SSHDroid 默认是会启动 data/data 下的 shell 脚本,即便程序退出了脚本还会运行
zictos
    7

zictos   92 天前

@Jirajine #5 我倒不是慢,而是有时候根本连不上。
linhua
    8

linhua   92 天前

我用的 SSHelper
zictos
    9

zictos   92 天前

@linhua #8 其实仔细想了想也没什么远程需求,用 adb 网络调试也行。
我现在好像可以后台运行 shell 脚本和 python 脚本了,也没必要用 SSHDroid 了。像下面这样就行:
setsid ./test.sh &

试着用 python 开了一个 tcp 长连接,每隔几秒就向服务器发一条消息,这样手机居然不会休眠,没有获取唤醒锁,服务器一直可以收到消息。
还有一个 ftp 服务器监听 21 端口,不知道会不会增加耗电,不知道会不会影响手机休眠

systemcall
    10

systemcall   91 天前 via Android

@zictos /system 默认情况下是只读的,所以即便是系统应用,数据也在 /data 下。但是系统应用在早期版本的安卓有很高的权限,*近的几个大版本虽然没那么高的权限了但还是有些地方比用户应用权限高
脚本放在 /data 没问题,/system/bin 里面不应该放自己的脚本吧,虽然放进去好像也没多大问题
要开机启动,直接改 Linux 层的启动脚本就行了