Logo

dev-resources.site

for different kinds of informations.

让安卓手机不再吃灰:在安卓手机上搭建 Rust 开发环境

Published at
1/3/2025
Categories
termux
rust
debian
ssh
Author
axum
Categories
4 categories in total
termux
open
rust
open
debian
open
ssh
open
Author
4 person written this
axum
open
让安卓手机不再吃灰:在安卓手机上搭建 Rust 开发环境

如果你还在把旧手机拿去换不锈钢脸盆,那真是暴殄天物。何不将它变成包括 Rust 在内的开发环境呢。

安装 termux

  • 打开 termux 的官网,点击【DOWNLOADF-DROID】下载 APK 文件。
  • 运行下载好的 APK 文件进行安装。

启用 SSH 服务

  • 由于要兼容未进行 root 的手机,所以 termux 的 SSH 服务监听的是 8022 端口,而不是标准的 22 端口。(小端口监听需要 root 权限)。
  • 同样的原因,termux 的用户名并不是 root,而是每次安装 termux 自动生成的、形如 u0_axxx(其中,xxx是数字)的用户。

安装 SSH

# 更新 termux 软件源
pkg update && \
# 安装 openssh 提供的 SSH 服务端和客户端
pkg install openssh
Enter fullscreen mode Exit fullscreen mode

修改当前用户的密码

passwd
Enter fullscreen mode Exit fullscreen mode

输入以上命令后,按提示设置密码

查看当前用户

whoami
Enter fullscreen mode Exit fullscreen mode

将会显示形如 u0_axxx 的用户名,把它记录下来。

举例:u0_a117

查看当前IP

你可以通过手机的 WLAN 查看当前局域网 IP,也可以通过 ifconfig 命令来查看:

ifconfig | greap inte
Enter fullscreen mode Exit fullscreen mode

举例:192.168.0.13

运行 SSH 服务

通过 sshd 命令启动运行 SSH 服务:

sshd
Enter fullscreen mode Exit fullscreen mode

连接该 SSH 服务

现在,局域网内的其它设备,比如电脑等,可以通过 SSH 连接该手机了:

ssh -P 8022 [email protected]
Enter fullscreen mode Exit fullscreen mode
  • u0_a117 改为你实际的用户名
  • 192.168.0.13 改为你实际的IP

安装 debian

termux 自带的是一个非完整的 Linux 环境,好在我们可以在不需要对手机进行 root 的情况下,通过 proot-distro 安装完整的 Linux 环境,比如 debian 系统。

# 更新 termux 软件源
pkg update && \
# 安装 proot-distro
pkg install proot-distro && \
# 使用 proot-distro 安装 debian
proot-distro install debian
Enter fullscreen mode Exit fullscreen mode

安装好之后,便可以登录 debian:

proot-distro login debian
Enter fullscreen mode Exit fullscreen mode

proot-distro login 是以 root 身份登录 debian,所以享有完全的权限。首先要做的是给 debian 安装一些必要的工具:

# 更新软件源
apt update -y && \
# 更新软件包
apt upgrade -y && \
# 安装需要的工具
apt install -y wget curl unzip tmux build-essential cmake pkg-config libssl-dev libtool git
Enter fullscreen mode Exit fullscreen mode

安装 Rust 环境

参照官网,我们可以在 debian 里一键安装 Rust 环境:

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Enter fullscreen mode Exit fullscreen mode

Code Server

安装

在 Code Server 的release页面,找到最新版本的压缩包下载。

# 版本
CODE_SERVER_VERSION='4.96.2'
# 下载
wget "https://github.com/coder/code-server/releases/download/v${CODE_SERVER_VERSION}/code-server-${CODE_SERVER_VERSION}-linux-arm64.tar.gz" && \
# 确保 ~/.local 存在
mkdir -p ~/.local && \
# 解压到 ~/.local
tar zxvf code-server-${CODE_SERVER_VERSION}-linux-arm64.tar.gz -C ~/.local
# 重命名
mv ~/.local/code-server-${CODE_SERVER_VERSION}-linux-arm64 ~/.local/code-server
Enter fullscreen mode Exit fullscreen mode

注意:

  • 必须选择 arm64 架构,因为手机 CPU 就是这个架构
  • 本例使用的是 .tar.gz 压缩包,你也可以选择 .deb

运行

我们使用 tmux 来保证断开 SSH 之后 Code Server 依然在运行。首先创建 tmux 会话:

# 创建一个 tmux 会话
tmux new -s code-server
Enter fullscreen mode Exit fullscreen mode

运行 Code Server:

~/.local/code-server/bin/code-server
Enter fullscreen mode Exit fullscreen mode

修改配置

配置文件位于 ~/.config/code-server/config.yaml。根据你的需要进行更改

  • bind-addr:监听地址。为了让局域网能访问到,需要将监听的IP改为 0.0.0.0。比如:0.0.0.0:58080
  • auth:鉴权方式。由于我们是部署在局域网,给自己用的,完全没必要使用任何鉴权方式,所以将其改为 none
  • cert:证书路径。我们将在下一篇进行讲解。

修改配置之后,需要重新启动 Code Server。

启用 SSL

由于 Code Server 是以 Web 形式运行,而很多功能需要 HTTPS,比如复制/粘贴、预览 Markdown、执行 REST Client 等。我们将在下一篇博文讨论如何在局域网签发 SSL 证书。

自问自答

为什么不用 VSCODE 的远程 SSH 连接,而用 Code Server?

因为 termux 并不是完整的 Linux 环境,而 VSCODE 远程 SSH 连接需要在服务端安装对应的软件,termux 并不满足它的条件,所以只能退而求之,使用 VSCODE 的 Web 版本──Code Server。

你也可以尝试在 proot-distro 安装的 Linux 里安装 SSH 服务,它应该满足 VSCODE 的要求,但需要配置的地方可能很多,本文不作尝试。

相较于云服务器,使用手机有什么优势?

手机基本上都是 4G RAM 起步,内部存储更是 64G 起步,普通的 VPS 根本没法和它比。试想一下,购买一台相同配置的 VPS 每年需要花费多少钱?

另外,手机都是通过局域网连接,而包括 VPS 在内的云服务器都是公网连接,甚至是跨洲绕全球的连接,网络响应不是一个级别的。

rust Article's
30 articles in total
Favicon
Mastering Rust's 'unsafe' Code: Balancing Safety and Performance in Systems Programming
Favicon
Meme Tuesday 🚱
Favicon
Pulumi WASM/Rust devlog #3
Favicon
Typed integers in Rust for safer Python bytecode compilation
Favicon
### **Exploring Embedded Systems Development with Rust**
Favicon
Scan Your Linux Disk and Visualize It on Mac with GrandPerspective
Favicon
Diesel vs SQLx in Raw and ORM Modes
Favicon
C++ or Rust? I'd stick to my good old C++
Favicon
Rust
Favicon
Building a Developer-Focused Search Engine in Rust: Lessons Learned and Challenges Overcome 🚀
Favicon
A Gentle Introduction to WebAssembly in Rust (2025 Edition)
Favicon
Stable Memory In Internet Computer
Favicon
Solana Account Model Simplified
Favicon
Rust Frameworks
Favicon
Mastering Rust's Type System: A Comprehensive Guide for Robust and Efficient Code
Favicon
🚀 Intrepid AI 0.10: Ready for Liftoff!
Favicon
Swiftide 0.16 brings AI agents to Rust
Favicon
Introducing Yamaswap
Favicon
Rust and Generative AI: Creating High-Performance Applications
Favicon
Rust: Matchy Matchy
Favicon
Rust registry error "candidate versions found which didn't match"
Favicon
Mastering Rust Lifetimes: Advanced Techniques for Safe and Efficient Code
Favicon
Rust
Favicon
让安卓手机不再吃灰:在安卓手机上搭建 Rust 开发环境
Favicon
How to test Asynchronous Rust Programs with Tokio [TUTORIAL]
Favicon
SSH port forwarding from within code
Favicon
Reto de Rust 365 días, 2025!!
Favicon
Rust-Powered Password Decrypter: Find the String Behind the Hash! 🦀🔒
Favicon
🚀 Rust Basics 5: Structs and Enums in Rust
Favicon
Rust mega-tutotial

Featured ones: