
## 适用环境

Termux（无需 Root），任意 Android 手机。

## 目标

在手机上直接把 Java 源码编译成 Android 原生的 `.dex` 文件并运行，全程不依赖电脑，也不用 Android Studio。

用到的三个工具：

- `ecj`：Java 编译器
- `dx`：把 `.class` 转成 `.dex`
- `dalvikvm`：直接运行 `.dex`

流程很简单：

> Java源码 → ecj → .class → dx → .dex → dalvikvm 运行

---

## 一、前置准备：修复 Termux 镜像源

很多人在第一次执行 `pkg install` 的时候会遇到类似下面的报错：

```
E: The repository 'https://mirror.iscas.ac.cn/...' does not have a Release file.
```

这是因为 Termux 的镜像源失效了。

### 解决方法

1. 安装镜像管理工具：

```bash
pkg install termux-tools -y
```

2. 切换镜像源：

```bash
termux-change-repo
```

推荐选择 Grimler 官方源。亚洲用户选日本或香港镜像速度会比较快，比如在新加坡的话，选日本或香港都可以。

3. 更新软件包：

```bash
pkg update -y
```

如果没有报错，说明环境已经好了。

---

## 二、安装编译工具

直接安装两个核心工具：

```bash
pkg install ecj dx -y
```

装完之后检查一下，`ecj`、`dx`、`dalvikvm` 这三个命令应该都能用了。

---

## 三、写一个 HelloWorld

在 Termux 里创建一个 Java 文件：

```bash
cat > HelloWorld.java << 'EOF'
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello from Android DEX!");
    }
}
EOF
```

---

## 四、写个脚本自动编译运行

每次手动敲三条命令太麻烦，写个脚本自动完成：

```bash
cat > build_and_run.sh << 'EOF'
#!/data/data/com.termux/files/usr/bin/bash

ecj HelloWorld.java && \
dx --dex --output=HelloWorld.dex HelloWorld.class && \
chmod 444 HelloWorld.dex && \
dalvikvm -cp HelloWorld.dex HelloWorld
EOF
```

给脚本加执行权限：

```bash
chmod +x build_and_run.sh
```

---

## 五、跑起来

执行脚本：

```bash
./build_and_run.sh
```

如果一切正常，你会看到：

```
Hello from Android DEX!
```

这就说明 Java 编译成功了，`.dex` 也生成好了，Dalvik 虚拟机顺利跑起来了。整个过程完全在手机上完成。

---

## 六、流程总结

再捋一遍整个流程：

1. 写 `HelloWorld.java`
2. 用 `ecj` 编译得到 `HelloWorld.class`
3. 用 `dx` 转换得到 `HelloWorld.dex`
4. 用 `dalvikvm` 运行

这套方案的好处是：

- 不需要 Android Studio
- 不需要电脑
- 不需要 Gradle
- 不需要 Root

适合用来学习 Android 底层机制、研究 Dalvik/DEX 格式，或者做一些极简的 Android 开发实验。

---

## 七、还能玩点什么？

后面可以继续写一些纯 DEX 的小程序，比如：

- 读取手机设备信息
- 猜数字小游戏
- 文件浏览器
- 简单的 HTTP 客户端
- 系统工具脚本

如果有兴趣的话可以在评论区留言，我会继续更新。

---

## 结语

通过 Termux 加上 ecj、dx、dalvikvm 这三个工具，我们可以在手机上直接完成 Java 编写、DEX 编译和 Android 虚拟机运行。这是一种很极简但也很硬核的 Android 开发方式，如果你喜欢研究底层，这套方案值得试试。

---
