NiceLeeのBlog 用爱发电 bilibili~

旧手机废物利用(3)-Termux:打造个人编程环境和注意事项

2019-09-07
nIceLee

阅读:


前面已经准备好远程的相关工作,这就相当于嫖了一台云端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;
      }
      

关于定时/周期任务

  • 首先发现的问题是在熄屏状态下,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


内容
隐藏