前面已经准备好远程的相关工作,这就相当于嫖了一台云端Linux裸机。
接下来想要真正做事情的话,还是得老老实实搭好环境。
打造个人编程环境
先扫几个网页,基本上了解个大概了。
Termux 官方Wiki
安卓手机上安装termux,把手机当linux服务器用
Termux 高级终端安装使用配置教程
- 更换国内源(可选)
- 安装基本工具
pkg update pkg install vim curl wget git unzip unrar
- 开发语言环境搭建 C/C++、Python2/3、Node.js、PHP等语言
- …
注意事项
关于Java环境
- 关于这个,可以再嵌套搭一套JVM环境,也可以使用本来的dalvikvm。
- 如果直接使用dalvikvm,需要注意部分JDK自带的功能没有实现。例如:(都是我踩的坑哦。。。)
- 使用了Jar文件扫描原理的包扫描机制失效,毕竟是dex文件。
这让我写的部分小程序没法运行,构思的小框架拓展灵活性缺失。找到替代方案前只能写死了。 - dalvikvm未实现反射包的
Parameter
类,这导致Method
类无法获取方法的参数名称。
换句话说,无法实现Springboot那样缺省的解决方案,目前只能麻烦的再加上注解。
举例来说,想要给Controller注解的方法参数自动赋值,不能再缺省的凭借参数名称了,而必须加注解。
以下失效:@Controller(path = "/test") public String test(String param, String time) { return null; }
以下有效:
@Controller(path = "/test", note="测试") public String test(@Value(key = "param") String param, @Value(key = "_t") String time) { return null; }
- 使用了Jar文件扫描原理的包扫描机制失效,毕竟是dex文件。
关于定时/周期任务
- 首先发现的问题是在熄屏状态下,Java调用Timer + Timer Task,时间到了基本不执行。
后来换了多种实现方式仍然有问题。 - 接下来发现Termux终端本身timeout/crontab等功能在熄屏状态也不能很好地执行。
- 可以想见,Android本身熄屏状态下对于程序的线程执行有所优化,这个问题有三种解决方案:
- 保持亮屏。耗电太多,感觉没啥意义了,就这不如直接用PC得了
- 使用Android本身计时的解决方案。原生APP解决方案是有的,但Termux模拟出来的终端到底如何去利用,是个问题
- 由某个原生APP来充当定时触发器,通过某种方式来调用Termux的特定脚本/程序。
官方给出了组合 Tasker + Termux:Task + Termux。这个以后详细讲。
关于与手机互动
例如,在Termux面板,通过调用某些命令行,获取/改变Android剪贴板,获取电池状态/通讯录信息等等。
官方给出了方案: Termux: API + Termux
详见https://wiki.termux.com/wiki/User:Termux:API