用Termux来开启安卓新姿势
用Termux来开启安卓新姿势
Termux是安卓平台上的终端模拟器,用极小的体积提供了Linux环境,适合用来进行轻量的移动学习和开发。
我接触Termux前还玩过AIDE、qpython等。AIDE确实在开发App上有一定可行性,但收费,而且仅限于开发安卓应用;qpython基本只能跑python,提供的终端也不是很好用。Termux则提供了一个通用的Linux终端环境,可以更自由地学习Linux和各种编程语言。
然而需要强调的是,Termux原生仅仅提供了最基本的终端环境,不能完全模拟PC环境,而且外设也不适应开发,用手机或平板取代PC开发是很不方便的。因此,Termux更多是给像我一样喜欢折腾的人玩的,实用性并不大。
如果你准备好了,那就开始享受玩机的乐趣吧~
准备使用
安装Termux
进入Termux官网,你可以看到软件的介绍以及下载地址。
软件不要求root环境,但需要安卓7以上版本(当然鸿蒙也可以)。目前github和F-Droid国内都是可以访问的,不过F-Droid可能会更通畅些。
配置环境
打开软件,屏幕左侧边缘右滑可以打开终端列表(带手势导航就麻烦了QAQ),而主体内容就是终端界面了,点击即可输入指令。另外Termux还很贴心地附赠了特殊字符输入栏哦OwO
为了让后续操作更顺畅,接下来需要进行apt换源,如果需要也可以顺便获取储存权限和开启ssh服务。
apt 换源
apt是Debian系Linux通用的包管理器,Windows用户可以理解为应用商店。apt使用起来方便快捷,但默认的官网软件源实在缓慢,需要更换到国内镜像源。
网上很多教程介绍的是Linux通用的方式,通过修改apt配置文件来换源,然而这很繁琐。幸运的是Termux对换源提供了封装,输入termux
后按几次Tab
键显示可用命令,你就会发现termux-change-repo
,输入更多字符(比如termux-c
)来明确你想要执行的命令,然后再次Tab
完成补全,回车执行后跟着指引走选择中国镜像源组或者单独选tuna清华源均可。确认后应该会自动更新本地软件列表,注意看弹出来的说明,有时是需要输入y
来确认操作的。
另外,上面补全时看到很多termux
开头的命令,这些都是Termux提供的工具,可以通过名字猜测或者带--help
执行命令查看工具说明(比如termux-change-repo --help
)
获取储存权限
安卓系统将外存分为系统空间、私密空间和公共空间,系统空间没有root权限不能访问,私密空间仅供应用自己访问,公共空间可供所有申请过权限的应用访问。为了备份数据、向手机其他应用传递数据、访问视频图片等,你可以选择通过执行termux-setup-storage
来获取存储权限。
开启ssh服务
如果觉得在手机上操作不太方便而且动手能力强,可以尝试开启ssh服务通过电脑连接终端。ssh具体是什么请百度,简单来说就是远程终端,为此你需要:
- 安装openssh
输入apt install openssh
,确认后一般即可完成安装 - 设置密码
ssh也支持更高级的加密,不过密码是最简单快捷的,输入passwd
即可设置用户密码 - 启动sshd服务
输入sshd
即可开启sshd服务,默认端口8022。如无意外终端不会输出任何信息。你可以输入top
命令在ARGS
列看到sshd的进程(看不到的可以双指缩放或者旋转屏幕),按ctrl+c
可以结束命令。想结束服务就关闭软件并杀后台,或者记下top
里sshd的pid,用kill pid
的方式结束进程。 - 连通网络
这大概是最难的一步了,需要对计算机网络有一定了解。。你需要让电脑和手机处于同一子网内,还需要避开校园网对低段位端口的封锁。方便起见,你可以用手机开热点,这样电脑连上热点后即处于统一子网内了。接下来要获取手机ip地址。输入ifconfig
查看当前网络环境,一般你的手机会连接多个网络,热点应该是p2p开头的,inet后面即手机在热点网络中的ip地址,记下来。 - ssh登陆
在电脑终端中输入ssh *ip地址*
,确认后输密码即可连接Termux。需要注意的是要保持手机亮屏(调息屏时间)且处于Termux界面,否则可能会被手机杀后台。当然,这很麻烦(也不环保),不过禁用电池优化有很多步骤,比如在设置里打开保持息屏网络连接,在应用中心禁止自动关闭Termux后台等
安装常用软件
依次输入以下命令,安装常用软件:
1 | ~ $ apt install vim # 安装文本编辑器vim |
其他软件也可以用类似方式安装,用apt help
可以查看更多apt小知识哦~
图形界面?
Termux其实也是支持图形界面的,但。。出来的PC桌面对手机太不友好了,图形甚至不支持GPU渲染。如果你想了解可以参考这个来配置。
学习Linux基本操作
用apt install man
安装man
,接下来的命令都可以用man 命令
的方式查看说明
目录操作
Linux的目录是树状结构的,每个文件夹有两个特别的文件夹:.
该文件夹,..
上一级文件夹,通过ls
命令可以查看当前目录文件(夹)。.
开头的文件或文件夹都是隐藏的,可以通过ls -a
查看。
通过cd
可以切换文件夹,比如cd ..
可以返回上一级文件夹,当前目录路径可以在$
前看到,初始是主页~
,其上一级是/data/data/com.termux/files
,终端指示会隐藏一部分,用pwd
可以显示完整路径。
用ls
可以发现当前目录有home
和usr
,usr
就是GUN/Linux的相关组件所在目录,可以理解为Windows下的C盘,home
则类似于桌面(不过很多软件的配置文件也会以因此文件的形式放在里面),Linux会以~
代指。而看到当前完整路径,发现与常规Linux不同,系统文件夹不是根目录\
,这是因为Termux并非模拟器,其路径与安卓系统是一致的,Termux能访问的也就只有com.termux
下的东西。
用cd ~
回到home
,mkdir test
即可创建test
文件夹;ln
命令可以创建文件链接,具体可以百度。
文件操作
vim a
即可打开a文件,如果不存在则vim会创建。vim分为命令模式、输入模式、底线命令模式。初始为命令模式,按i
进入输入模式,输入完后按Esc
退出,输入:
进入底线命令模式,w
保存,q
退出,:wq
一起就是保存退出。更多vim操作可以搜索。
cat a
也可以打开文件,但会直接把所有文件内容输出到屏幕。可以用less
以cat a | less
的形式(管道)让它不会使整个屏幕刷满,回车继续输出,q
退出。如果屏幕被刷满了很难看,用clear
清空。
mv a b
即可把a路径的文件(夹)变成b路径的文件(夹),当然这个也可以用来改名,比如mv ~/cpp/a.cpp ~/b.cpp
同时完成了移动和改名
cp a b
可以复制文件
zip
和unzip
可以压缩和解压
rm
可以删除文件,加上-r
可以删除文件夹,所以 rm -rf / 就是删除整个系统(-f
是强制的意思,当然实际上会没有权限)。注意Linux没有回收站,谨慎删除。
其他命令
curl
可以“打开”网站(试试curl www.baidu.com
),wget
可以打开并保存(通常用于下载文件),git clone
可以下载项目源代码(去github/gitee逛逛?),ls -lh
可以显示更详细的信息
搭建开发环境
python
上面已经安装了python,直接输入命令python
即可进入交互模式,运行exit()
退出。Termux支持pip
安装拓展库,但由于平台兼容性问题,如果库依赖本地代码就需要在本地编译构建,很有可能装个几十分钟然后报错退出。目前发现可用的包有sympy
(代数系统),pwntools
(pwn手工具,部分需编译,要安装十几分钟分钟,现在好像装不上了QAQ),numpy
(需要安装cmake并编译几十分钟),jupyterlab
,matplotlib
,pillow
(但需要补全一些运行库,挺麻烦的)。scipy
,pandas
等由于某些原因装不上。
C/C++
上面已经安装了g++
,接下来就可以用vim a.cpp
写代码,然后用g++ a.cpp
的形式编译源代码(多个文件参与编译就把要编译的文件都在后面加上)。带上-g
参数生成调试信息方便debug,-O2
开启优化,-o 文件名
可以更改输出文件名。编译完成后当前目录会多出一个绿色的可执行文件(默认叫a.out,不要在意后缀,Linux可执行文件后缀不重要),输入./a.out
即可执行。这里需要明确程序路径,这是因为Linux终端查找程序的范围不包括当前文件夹。
用gdb a.exe
打开gdb
调试器。l
可以列出源代码,l a.cpp:0
形式可指定文件和行号(多文件编译时有用);b
接数字可以打断点;r
运行程序;n
跳过语句(多次执行同一条命令不需要重复输入,直接回车即可);s
进入语句;p
接表达式打印变量;c
继续执行;q
退出gdb。
其他语言
Termux支持很多语言,包括Java、nodejs、rust、haskell、golang等,安装方式与普通Linux无异
解锁更多新姿势
利用Jupyter Lab在有图形的IDE上开发
安装python后,用pip install jupyterlab
可以安装jupyter lab,这是一个将python代码和markdown注释结合起来的神器ide,由于其通过Web服务器的形式提供GUI,其使用体验除了不能自动打开浏览器外和普通Linux上无异。不过你要先禁止对Termux的电池优化,否则切出Termux后它很快就被休眠乃至清除了(经测试我手机会在十秒后使其休眠)。另外手机显示PC的界面布局很不好看,面向PC的按键系统对触控也很不友好,如果真的要用,建议配合平板和蓝牙键鼠使用。由于Termux很难调用GPU,python库有些也很难装上,所以Jupyter+Python并不太好用(这方面AidLux会更优秀,但它太重了QAQ);貌似Jupyter也支持其他语言,我没试过,也许可以。
利用ffmpeg和Python处理视频图片
开源软件ffmpeg
是很多剪辑软件的内核,其功能强大,可以完成音频视频图片的格式转换、裁切、剪辑、打水印等各种操作,但操作完全命令行,比较难学。
Python有pillow库来执行更多图片处理命令,不过因为Termux缺少图形库,这个比较难装。
口袋里的计算机实验室
Termux还可以用来进行一些网络安全或计算机组成原理的实验。比如nmap
、radara2
等软件都是可以使用的
无限的探索空间
总之吧,Termux就是给了你接触安卓底层的机会,你终于可以不用被App开发者牵着鼻子走啦!接下来,用Termux搭服务器之类的无限潜力就可以由我们慢慢发掘探索啦!