Как пользоваться Repo в Termux на Android
Repo — это инструмент Google для управления множеством Git-репозиториев (AOSP). В Termux его можно установить и использовать для инициализации, синхронизации и управления исходниками прямо на смартфоне, но потребуется много места (100+ ГБ) и достаточная RAM.
Что такое Repo и зачем запускать его в Termux
Repo — обёртка над Git, которая объединяет десятки — тысячи репозиториев в единый проект через XML-манифест (.repo/manifest.xml). Он автоматизирует:
- инициализацию проекта (repo init),
- массовую синхронизацию (repo sync),
- создание веток и применение патчей (repo start, repo upload через Gerrit).
Зачем на Android через Termux:
- правки и тесты «в дороге» без ПК;
- доступ к исходникам для изучения или локального патчинга;
- работа с отдельными подсетями (ядро, device) без полной сборки.
Repo не заменяет Git — установите Git отдельно. Repo управляет множеством git-репозиториев, но для локальных коммитов и rebase всё равно используется git.
Установка Termux, зависимостей и Repo (пошагово)
- Установите Termux из F‑Droid. Откройте и обновите пакеты: pkg update && pkg upgrade
- Установите базовые утилиты: pkg install git python coreutils
- Для доступа к дополнительным пакетам: pkg install root-repo
- Установите сам Repo:
- из пакета: pkg install repo
- или вручную (если нужно свежее): curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo && chmod +x ~/bin/repo
- Проверьте: repo --version (ожидаемо 2.x.x).
- Доступ к хранилищу: выполните termux-setup-storage и смонтируйте ext4/SD при необходимости.
Без выделенной памяти (ext4/SD) и без root реальный объём пригодного места ограничен. На крупные AOSP-синхроны нужно ≥100 ГБ свободного места и желательно 16+ ГБ RAM.
Инициализация, sync и основные команды
Пример инициализации AOSP: mkdir -p ~/android && cd ~/android repo init -u https://android.googlesource.com/platform/manifest -b master repo sync -j8
Коротко по главным командам:
- repo init -u URL -b branch — загрузить манифест.
- repo sync [-c] [-jN] [--force-sync] — синхронизировать репозитории; -c — только текущая ветка, -jN — параллельных потоков.
- repo start
— создать локальную ветку во всех проектах. - repo forall 'git status' — выполнить команду в каждом проекте.
- .repo/upload (repo upload) — отправить изменения в Gerrit (если используется).
Практика:
- Для экономии места: repo sync -c и периодически repo prune.
- Для медленных соединений: используйте --partial-clone/прошлый опыт (если поддерживается) или синхронизируйте отдельные подпроекты (repo sync kernel/*).
Сборка на устройстве и автоматизация
Для компиляции понадобятся Java (OpenJDK 17), ninja и прочие зависимости: pkg install openjdk-17 ninja Скрипт синхронизации: #!/data/data/com.termux/files/usr/bin/bash repo sync -j$(nproc) --force-sync
Реальность: полноценная сборка AOSP на смартфоне крайне долгая (часы—сутки) и часто невозможна из‑за ресурсов. На мобильном устройстве разумнее собирать отдельные компоненты (ядро, vendor blobs) или патчи.
Частые ошибки
- "repo too old" — обновите бинарник repo вручную.
- Ошибки 404 при sync — попробуйте --force-sync или проверьте правильность манифеста.
- Недостаточно места — используйте ext4 на SD или удаляйте неиспользуемые ветки (repo prune).
- Permission denied при записи в ~/bin — проверьте права и PATH.
- Gerrit/Upload: для repo upload нужен аккаунт и настроенный ssh/HTTP авторизация.
FAQ
- Нужно ли root? Нет, root не обязателен, но для использования SD/ext4 и больших разделов может потребоваться.
- Сколько места реально нужно? Минимум 30–40 ГБ для небольших наборов; полный AOSP ~100–200+ ГБ.
- Можно ли работать с только частью дерева? Да — синхронизируйте конкретные пути: repo sync device/ vendor/ kernel/ и т.п.
- Альтернатива Repo? Git submodules и кастомные скрипты, но для AOSP Repo удобнее при большом числе репозиториев.
Надеюсь, это краткое руководство поможет быстро начать работу с Repo в Termux: установите зависимости, инициализируйте манифест, синхронизируйте нужные подсекции и тестируйте патчи локально, учитывая ограничения устройства.