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 aarch64zlib:要编译的包名,可替换为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 容器/镜像