用安卓平板写代码

发布时间:

最后更新:

总字数:
1.2k

前言

开学季,有不少学弟问:上大学能不能不买电脑,只用平板?

恐怕是不行的。国内大学恐怕默认所有的电脑都是Windows系统。就我们学校而言,即便是计算机专业,大多数同学也是Windows配linux虚拟机(或者WSL)。还有少数人装了双系统。用Mac的已经是极少数,而且要面临重大问题:有些课程实验是为x86平台设计的,mac用户不得不上qemu。认识一位崇拜的外校大佬买了Mac,据说确实有很多麻烦事。

然而这个问题并非毫无转机。至少,去年刚入学的时候,我实在不堪随处背着五六斤的大板砖,就想办法在我的安卓平板上尝试各种方案,整了一套勉强能用的解决方案。在这个平板上我做了c程序设计的OJ,写了大作业,还写了博客(比如这篇)。总而言之,arm架构下的轻轻量级开发,差不多可以胜任。

基本原理

Termux是一个在安卓下运行的终端模拟器。简而言之,就是一个命令行界面,允许你在安卓下运行命令。Termux的优点是无需root,开箱即用。

有这样一个命令叫做chroot,意思就是change root,即改变根目录。一个程序通过chroot操作后,将会把指定的目录当作根目录,因而无法访问这一目录之外的地方,从而形成了一种类似于“虚拟机”的效果,这个环境被称为chroot jail。(但并不是虚拟机!这种方法仅仅隔离了目录,实际仍旧运行在宿主系统的内核上。而且,并没有专门为防止逃逸和提权等安全问题优化。)

然而,十分遗憾,美中不足:调用chroot是需要root权限的。于是产生了proot:它与chroot类似,只不过不需要root权限。

我们的linux环境就跑在这个环境之中。

各种解决方案

proot-distro

官方仓库:https://github.com/termux/proot-distro

这是termux官方开发的一款工具,用以安装数种发行版。顾名思义,基于proot。支持的发行版包括:

  • Alpine Linux
  • Arch Linux ARM
  • Fedora 37(仅支持AArch64)
  • Manjaro AArch64
  • opensuse
  • pardus
  • Ubuntu 22.04
  • void linux

安装简单,命令行界面很清晰。

不知该说是优点还是缺点:安装好的系统很干净。相当多的工具需要自己安装,配置。

modded_ubuntu

仓库地址:https://github.com/modded-ubuntu/modded-ubuntu

这个方案是我现在用的,就基于上面的proot-distro。在其基础上,加了一些各种各样的东西,比如vnc-server等。不过gui我很少用,主要还是cli。

正如其名,只有ubuntu。

ubuntu-on-android

仓库地址:https://github.com/RandomCoderOrg/ubuntu-on-android

这个和上面那个大同小异,自带了一些gui、开发工具之类的。一样,只有ubuntu可以用,不过可以选不同的版本。而且,这个看起来比上面那个更靠谱一点,我比较推荐(我没用这个单纯是因为先装上了上面那个,就懒得换了)。

如何在安卓上写代码

code-server

当然,你可以直接安装VS Code或者Sublime Text之类的,然后用vnc操作。然而,gui很卡很糊也就罢了,最劝退的一点是:输入法总是配不好!

于是就探索了现用的这种实践。众所周知VS Code是开源项目(Code-OSS),而且基于electron。基于electron,意思就是说它本质是个网页;那么既然是网页,当然就可以在浏览器里跑啦。

code-server其实就是一个vscode的后端。在ubuntu里运行code-server,它会在localhost上开一个端口,这时候在安卓的浏览器里直接访问即可,调用的输入法就是安卓上的输入法了。

我使用的浏览器是Edge(我全平台用Edge,感觉微软的多端同步还是比较香的),输入法是谷歌拼音输入法。在安卓端用外接键盘,体验可以媲美电脑上的输入法。Gboard就略微难用一点,因为没有对中文做优化。我需要打日语的时候才切换过去。

其他的一些方案

既然VSCode可以在浏览器里运行,那当然就可以变成在线的开发平台。现在在线开发平台很多,比如GitHub Codespaces之类的。

此外,还有一种办法是自己租一个服务器,这样开发就都在云上进行,本地只需ssh上去就好了。只是囊中羞涩,我自己没有试过。