Termux предоставляет полноценную Linux‑окружение на Android‑устройствах. Для расширения функционала часто требуется собрать собственные пакеты. Стандартный способ – использовать APKBUILD, скриптовый файл, описывающий процесс сборки. В этой статье мы разберём, как автоматизировать сборку пакетов, интегрировать её в CI/CD и поддерживать репозитории с минимальными усилиями.
Подготовка окружения
Перед тем как приступить к автоматизации, убедитесь, что в Termux установлены необходимые инструменты:
pkg update && pkg upgrade -y
pkg install git curl tar make clang python
pkg install termux-tools termux-elf-cleaner
Для работы с APKBUILD потребуется пакет termux-pkg, который находится в репозитории Termux:
pkg install termux-pkg
Структура файла APKBUILD
Файл APKBUILD – это Bash‑скрипт с набором переменных и функций. Ниже минимальный шаблон для простого C‑проекта:
# Maintainer: Your Name
# Contributor: Another Person
pkgname=example
pkgver=1.0.0
pkgrel=1
pkgdesc="Пример простого C‑пакета"
arch='aarch64 arm x86_64 i686'
url="https://github.com/yourname/example"
license='GPL-3.0'
depends=''
makedepends='gcc make'
source="${url}/archive/refs/tags/v${pkgver}.tar.gz"
sha256sums='SKIP'
build() {
cd "$srcdir/$pkgname-$pkgver"
$CC $CFLAGS -o example main.c
}
package() {
cd "$srcdir/$pkgname-$pkgver"
install -Dm755 example "$pkgdir/usr/bin/example"
}
Обратите внимание на:
pkgname,pkgver,pkgrel– базовые идентификаторы.sourceиsha256sums– источник и контроль целостности.- Функции
build()иpackage()описывают процесс компиляции и упаковки.
Автоматизация сборки с помощью скрипта
Создадим Bash‑скрипт build-package.sh, который будет выполнять все шаги от клонирования репозитория до создания .apk‑файла.
#!/usr/bin/env bash
set -euo pipefail
# Параметры
REPO_URL="https://github.com/yourname/example.git"
WORKDIR="$HOME/termux-packages"
APKBUILD_DIR="$WORKDIR/example"
# 1. Подготовка рабочего каталога
mkdir -p "$WORKDIR"
cd "$WORKDIR"
# 2. Клонирование/обновление исходников
if [[ -d "$APKBUILD_DIR" ]]; then
cd "$APKBUILD_DIR"
git pull --rebase
else
git clone "$REPO_URL" "$APKBUILD_DIR"
cd "$APKBUILD_DIR"
fi
# 3. Генерация APKBUILD (если нужен динамический)
cat > APKBUILD <<'EOF'
# Сгенерированный файл, см. раздел «Структура файла APKBUILD»
EOF
# 4. Сборка пакета через termux-pkg
termux-pkg build .
# 5. Перемещение готового .apk в каталог releases
mkdir -p "$HOME/releases"
mv .apk "$HOME/releases/"
echo "Сборка завершена. Пакет находится в $HOME/releases"
Сделайте скрипт исполняемым:
chmod +x build-package.sh
Теперь запуск ./build-package.sh полностью автоматизирует процесс.
Интеграция в CI/CD (GitHub Actions)
Для обеспечения непрерывной сборки можно добавить GitHub Actions workflow. Ниже пример .github/workflows/termux.yml:
name: Termux Package Build
on:
push:
tags:
- 'v..'
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Set up Termux environment
uses: vishnubob/setup-termux@v1
with:
packages: git curl tar make clang termux-pkg
- name: Run build script
run: |
chmod +x build-package.sh
./build-package.sh
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: termux-apk
path: ~/releases/*.apk
Этот workflow будет запускаться при каждом пуше тега версии, автоматически создавая .apk‑пакет и размещая его как артефакт сборки.
Лучшие практики
- Контроль целостности: всегда указывайте реальный
sha256sumsвместоSKIP. Это защищает от подмены кода. - Разделение сборки и упаковки: используйте отдельные функции
build()иpackage()для чистоты процесса. - Минимальная зависимость: перечисляйте только те пакеты, которые действительно нужны в
dependsиmakedepends. - Тестирование: добавляйте функцию
check(), где запускаются unit‑тесты перед упаковкой. - Версионирование: обновляйте
pkgverиpkgrelв соответствии с изменениями кода и исправлениями сборки.
Заключение
Автоматизация сборки пакетов в Termux с помощью APKBUILD позволяет существенно ускорить разработку, обеспечить воспроизводимость и интегрировать процесс в современные CI/CD‑системы. Следуя изложенным рекомендациям, вы сможете поддерживать собственный репозиторий пакетов, быстро реагировать на изменения кода и предоставлять пользователям готовые .apk‑файлы без ручных вмешательств.
Если вам требуется профессиональная настройка автоматизированных сборок, создание кастомных репозиториев или консультация по оптимизации Termux‑окружения, команда RybinskLab готова помочь. Мы предоставляем услуги по разработке скриптов, настройке CI/CD, аудиту безопасности пакетов и обучению ваших сотрудников. Свяжитесь с нами, чтобы вывести ваш проект на новый уровень эффективности.