Skip to content

Termux Packages 编译指南总结

简介

Termux Packages 是用于 Termux(Android 终端模拟器)的包构建系统,可以很方便地编译适用于 Android 的软件包。

本文以编译 Zlib(压缩库) 为例,介绍整个流程。


1. 准备工作

1.1 克隆仓库

bash
git clone https://github.com/termux/termux-packages.git --depth=1

--depth=1:只克隆最新 commit,速度更快。


1.2 修改配置

打开 termux-packages/scripts/properties.sh,搜索 TERMUX_APP__PACKAGE_NAME,将其中的路径替换为自己的包路径:

bash
TERMUX_APP__PACKAGE_NAME="你的软件包名"
TERMUX_REPO_APP__DATA_DIR="/data/data/你的软件包名"
TERU_REPO__CORE_DIR="/data/data/你的软件包名/termux/core"
TERMUX_REPO__APPS_DIR="/data/data/你的软件包名/termux/app"
TERMUX_REPO__ROOTFS="/data/data/你的软件包名/files"
TERMUX_REPO__HOME="/data/data/你的软件包名/files/home"
TERMUX_REPO__PREFIX="/data/data/你的软件包名/files/usr"

1.3 启动 Docker 编译环境

确保 Docker 正在运行,然后在 scripts/ 目录下:

bash
# Linux
chmod 700 run-docker.sh
./run-docker.sh

# Windows
./run-docker.ps1

⚠️ 拉取镜像可能很慢,建议使用代理加速。


1.4 进入容器后初始化

进入容器后,先提权:

bash
sudo -s

安装编译依赖:

bash
apt update
cd scripts
./setup-android-sdk.sh   # 安装 Android SDK、NDK(交叉编译所需)
./setup-ubuntu.sh        # 安装常用编译工具包
cd ..

2. 开始编译

使用 build-package.sh 脚本编译包:

bash
./build-package.sh zlib -a aarch64
  • zlib:要编译的包名,可替换为 nodejs
  • -a aarch64:指定目标架构

编译完成后,输出文件位于 output/ 目录,格式为 .deb

解压并打包

bash
# 解压 deb 包到目标目录
for file in output/*; do
    dpkg -x $file /
done

# 使用 tar.gz 打包(不要用 zip,否则软链接会被替换为实体文件,占用空间大)
cd /home/builder/termux-packages && tar czvf zlib.tar.gz /data/data/你的软件包名/*

退出容器后,在宿主机根目录下即可得到 zlib.tar.gz


3. 清理环境

编译完成后可删除容器和镜像以释放空间。

删除容器

bash
docker ps -a                           # 查看容器 ID
docker stop <容器ID>
docker rm <容器ID>

删除镜像(可选)

bash
docker images                          # 查看镜像 ID
docker rmi <镜像ID>

镜像约 7.84GB,拉取较慢,建议保留。


总结流程图

克隆 termux-packages

修改 properties.sh 配置

启动 Docker 编译环境

安装 Android SDK/NDK + 编译工具

执行 build-package.sh

解压 deb → tar.gz 打包

清理 Docker 容器/镜像
最近更新

Released under the MIT License.