赞
踩
Termux是 Android 设备上的一款终端扩展软件,可以用来扩展 Android 设备上被阉割的 shell 功能,开源且不需要 root(工作空间就在app的私有目录下),它支持 apt 管理软件包,并拥有自己的 apt 仓库源。
Termux 会维护他们的软件仓库源,仓库里有很多常用的软件包,比如说 curl, python 等等,因此可以实现支持 Python, PHP, Go, Nodejs, MySQL 等的功能环境。
作者:苍耳叔叔
链接:https://juejin.cn/post/7054743435562975262
Termux 的GitHub仓库地址,可以在这里面查看安装方式。安装成功后第一次打开它会下载解压 bootstrap 包,主要用来在应用的私有目录下设置一个类 Linux 的文件结构,并设置环境变量等等。初始化完成后在 termux app 的私有目录下会解压出以下文件结构:
初始化完成后可以看到它就是一个 Linux Terminal 一样的界面,可以在里面跑 shell 命令了。然后还可以通过 apt 来安装管理软件,记得先 apt update 更新一下哈~
接下来试试在 Android 手机上的小火车效果,作为一个懒人,当然是直接使用现有的轮子了。
通过 apt 安装 sl 包:
$ apt install sl
如果嫌弃手机输入命令太麻烦的话可以借助 adb 通过电脑输入(记得切换输入法为英文哦):
$ adb shell input text 'apt\ install\ sl'
安装完成后执行 sl 命令即可看到一只可爱的小火车啦:
一些没用但看起来有意思的命令
除了上面的小火车,还有很多有意思的命令,其中有些 Termux 也是支持的:
比如说黑客感的 cmatrix 命令:
$ adb shell input text 'apt\ install\ cmatrix'
效果:
比如说俄罗斯方块(跟扫雷一样适合上班摸鱼):
$ adb shell input text 'apt\ install\ bastet'
效果:
通过ssh在电脑上连接termux
有需要的话可以通过 ssh 在电脑上连接你的 termux 终端,然后在电脑 terminal 上操作。网上有很多教程,这里就懒得抄了。
记得 19 年刚毕业的时候,遇到一个需求需要在我们的 app 里执行 python 脚本,由于一些原因不能在服务器上运行,只能在本地执行,因此需要在 app 上嵌入 python 环境,考虑之后决定使用 termux, 通过当时的一些线上数据,发现它的兼容性确实还可以。
做这个之前得先了解一下 termux 的实现原理,之前有简单记录过(最新版可能有所修改),直接贴链接: Termux解析
简单来说就是在初始化的时候会下载并解压一个 bootstrap 包到应用私有目录的 files 下,其文件结构大致如下:
bootstrap-aarch64
├── SYMLINKS.txt
├── bin
├── etc
├── include
├── lib
├── libexec
├── repo.asc
├── share
├── tmp
└── var
对 linux 比较熟悉的同学估计会觉得很面熟~然后 fork 子进程,并开启终端,设置环境变量,创建符号链接等等。
采取的方案是把 termux 终端等冗余的逻辑都去掉,只留下核心的 shell 功能,抽出一个用来接收命令输入和返回结果的工具类,并简单实现了一个连接池,并行接收命令。
两个挑战:
1.termux 提供的 bootstraps 包以及 apt 仓库源里的软件们都是跟他们的包名 com.termux 绑定的,因此需要自定义包名并重新编译。
解决办法:重新编译,参考之前的笔记 termux-app修改包名,在 docker 里把这些 apt 仓库源里的软件重新编译了一份,并在公司的服务器上搭建了一个 apt 仓库源,然后自定义打包一个 bootstrap 包,让其能通过 apt 去自定义的仓库源里安装 python。
2.从下载 bootstrap 到安装 python 一整套流程需要下载的量有几十兆了,所以给自己提了个需求,缩减下载量。
解决办法:从需求目的上来看,我需要的只有 python 环境,什么 apt 之类的都只是下载安装 python 的手段,因此最后我去掉了 apt 的能力,直接把 python 打包进 bootstrap 包,并裁剪了 bootstrap 里一些非必要的能力,最终用户只需要下载 6M 左右的包。
很多同学应该都玩过 Termux, 我个人觉得还是比较有意思的,大家都知道 Android 上的 shell 是阉割后的,而 Termux 可以在一定程度上使用 linux 的一些能力,还原 Android shell 的部分功能,甚至还可以在 app 里嵌入它来实现一些非常规的能力,喜欢折腾的同学可以试试~
以上这篇文章的全部内容了,感谢各位的阅读,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎扫描关注博主一起学习!!
还有一些学习福利送给大家,有需要可扫描下方二维码免费领取
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。