Termux — удобная среда для работы с Linux-командами прямо на Android. Однако разработка Flutter/Dart «внутри Termux» требует аккуратной связки: Flutter нужен полноценный toolchain, а для сборки и отладки — Android SDK, средства сборки (Gradle/Android build-tools) и корректный способ запуска приложения на устройстве или эмуляторе.
В этой статье показано, как построить цепочку Flutter→Android SDK→запуск/отладка в контексте Termux, а также как организовать работу с эмуляторами (AVD) и подключить отладку.
Что нужно перед началом
- Android-устройство с установленным Termux.
- Доступ к сети (для скачивания SDK/Flutter).
- Достаточно места на диске: Flutter + Android SDK + образы эмулятора занимают заметный объём.
- Android SDK и платформа (API level), совпадающие с требованиями вашего проекта.
- Желательно: возможность запуска эмулятора через внешнюю инфраструктуру (например, через ПК) либо использование эмулятора на устройстве только там, где это реально по архитектуре.
Важно: в зависимости от конкретного устройства и версии Android некоторые компоненты (например, эмуляция) могут вести себя нестабильно. Практика показывает, что сборка и отладка Flutter часто проще всего организуется на реальном Android-устройстве, а эмуляторы — на ПК. Но даже в этом сценарии Termux остаётся «рабочим центром» сборки и запуска.
Подготовка Termux и установка базовых пакетов
Начнём с обновления пакетов и установки необходимых утилит.
pkg update -y
pkg upgrade -y
pkg install -y git wget curl unzip tar xz-utils clang make libstdc++ ncurses-utils
Далее поставим Java (для Android build tools). В Termux обычно используют OpenJDK.
pkg install -y openjdk-17
Если ваш проект/SDK требует другого Java, можно подстроить версию. Для большинства современных Flutter+Android корректен Java 17.
Установка Android SDK в Termux
Есть два типичных подхода:
- Использовать Command line tools и собрать SDK вручную в каталоге Termux.
- Использовать уже готовую развернутую структуру (например, если SDK был заранее перенесён).
Ниже — практический вариант с установкой через Command line tools.
Скачивание Android SDK command line tools
Создайте директорию для Android SDK.
mkdir -p $HOME/android-sdk
Скачайте архив command line tools. Версию лучше смотреть на странице Android Developers (командную строку для скачивания актуализируйте под вашу дату). В примере используется переменная пути.
cd $HOME
# Пример ссылки: замените на актуальную для Android SDK Command-line Tools
# Вариант 1: скачивание вручную и затем распаковка
wget -O commandlinetools.zip "https://dl.google.com/android/repository/commandlinetools-android-11076708_latest.zip"
unzip commandlinetools.zip -d $HOME/android-sdk
После распаковки проверьте содержимое. Часто внутри появляется структура cmdline-tools. Приведём к стандарту, где должен быть cmdline-tools/latest.
cd $HOME/android-sdk
find . -maxdepth 3 -type d -print
Пример выравнивания структуры (подстройте под фактические папки после распаковки):
mkdir -p $HOME/android-sdk/cmdline-tools
# Если после распаковки у вас появилась папка вида ./cmdline-tools/bin или ./cmdline-tools/
# Переложите её в latest:
mv $HOME/android-sdk/cmdline-tools/* $HOME/android-sdk/cmdline-tools/latest/
На практике лучше один раз внимательно посмотреть структуру find и сделать перенос точнее.
Установка необходимых платформ и компонентов SDK
Установим SDK Platform, Build-Tools и Platform-Tools.
export ANDROID_SDK_ROOT=$HOME/android-sdk
export PATH="$PATH:$ANDROID_SDK_ROOT/platform-tools"
export PATH="$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin"
Примемся за установку:
sdkmanager --sdk_root=$ANDROID_SDK_ROOT --list
sdkmanager --sdk_root=$ANDROID_SDK_ROOT "platform-tools" \
"platforms;android-34" \
"build-tools;34.0.0" \
"platforms;android-33" \
"build-tools;33.0.0" \
"extras;android;m2repository" \
"extras;google;m2repository" \
"extras;google;google-services"
При запросах соглашений отвечайте y. Список версий при необходимости подберите под ваш проект.
Настройка переменных окружения в Termux
Чтобы изменения были постоянными, добавьте их в .bashrc или .profile (в Termux часто удобнее .bashrc, если он используется).
touch $HOME/.bashrc
cat >> $HOME/.bashrc <<'EOF'
export ANDROID_SDK_ROOT=$HOME/android-sdk
export PATH="$PATH:$ANDROID_SDK_ROOT/platform-tools"
export PATH="$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin"
# Android SDK tools sometimes rely on JAVA_HOME
export JAVA_HOME=/data/data/com.termux/files/usr/lib/jvm/java-17-openjdk
EOF
Перезагрузите окружение:
source $HOME/.bashrc
Проверьте, что adb доступен:
adb version
Установка Flutter в Termux
Ставим Flutter в домашний каталог. Обычно удобно использовать $HOME/flutter.
cd $HOME
git clone https://github.com/flutter/flutter.git -b stable flutter
Добавьте Flutter в PATH и выполните диагностику.
export PATH="$PATH:$HOME/flutter/bin
flutter --version
flutter doctor
Далее важно убедиться, что Flutter видит Android toolchain. Обычно вы увидите статус по Android.
Подключение Android-устройства для отладки
Отладка на реальном устройстве часто самый простой и устойчивый путь.
- Включите Параметры разработчика.
- Активируйте Отладку по USB.
- Разрешите отладку на вашем устройстве при появлении запроса.
Подключите устройство к вашему Android (если у вас сценарий «отладка с телефона на телефон» зависит от устройств) или используйте собственный adb внутри Termux для самого устройства.
В Termux обычно adb работает «локально», но проверьте:
adb devices
Если устройство в списке, приступаем к запуску.
Создание и сборка Flutter-проекта
Создадим новый проект (или перейдём в существующий).
flutter create my_app
cd my_app
Проверим подключение и конфигурацию:
flutter doctor
flutter devices
Соберём и установим приложение на выбранное устройство:
flutter run
Если нужно указать устройство:
flutter devices
flutter run -d <device_id>
Отладка: точки останова, горячая перезагрузка и логи
Отладка Flutter обычно выполняется через встроенный отладчик Dart/Flutter. Когда вы запускаете flutter run, в терминале будет показан debug-режим.
- Hot Reload: сохраняете изменения в коде — приложение обновится.
- Точки останова: добавляются в IDE (например, Android Studio/VS Code на ПК) или в вашем workflow, если вы используете соответствующий редактор.
- Просмотр логов: используйте
adb logcatдля системных сообщений и падений.
Пример просмотра логов:
adb logcat -v time
Для фильтрации по приложению можно использовать пакет (package name вашего приложения):
adb logcat -v time | grep -i "my_app"
Примечание: grep работает, но производительность может зависеть от устройства. При необходимости используйте более точные фильтры.
Подключение Android SDK к Gradle внутри Flutter
Обычно Flutter сам управляет Gradle и зависимостями. Но при проблемах с SDK Flutter использует переменные окружения (в первую очередь ANDROID_SDK_ROOT).
Если сборка падает с ошибками вида «SDK location not found», проверьте:
- что
ANDROID_SDK_ROOTуказывает на реальную директорию; - что
platform-toolsсодержатadb; - что
cmdline-tools/latest/bin/sdkmanagerдоступен.
Команды самопроверки:
echo $ANDROID_SDK_ROOT
ls -la $ANDROID_SDK_ROOT
ls -la $ANDROID_SDK_ROOT/platform-tools
sdkmanager --sdk_root=$ANDROID_SDK_ROOT --list | head
Работа с эмуляторами (AVD): практичный путь
Запуск эмулятора внутри Termux может быть ограничен архитектурой, правами и доступностью аппаратных компонентов ускорения. На практике надёжнее делать эмуляторную часть на ПК, а Termux использовать для сборки/запуска/логов.
Но если вы всё же планируете AVD, подход такой:
- Создайте AVD через
avdmanager/sdkmanager(при наличии). - Убедитесь, что нужные system-images установлены.
- Запустите эмулятор и подключите отладку.
Установка system-images (пример для API 34, x86_64). В Termux это может зависеть от того, сможет ли эмулятор запуститься.
sdkmanager --sdk_root=$ANDROID_SDK_ROOT "system-images;android-34;google_apis;x86_64"
Создание AVD (подстройте параметры). Команды могут отличаться в зависимости от набора tools.
avdmanager list avd
# Пример (может потребовать интерактивного ввода):
# avdmanager create avd -n test_avd -k "system-images;android-34;google_apis;x86_64" -d "pixel"
После запуска эмулятора на хосте проверьте устройства:
adb devices
Дальше отладка делается через flutter run -d <emulator_serial>.
Сценарий “эмулятор на ПК + Termux для Flutter”: как это организовать
Если вы запускаете эмулятор на компьютере, то Termux может:
- собирать проект (Flutter/Dart в Termux);
- отправлять запуск на эмулятор через
adb, если доступно соединение; - читать логи.
Для такого сценария нужна совместимость и доступ к adb на ПК/устройствах. На стороне сети при необходимости используйте локальную сеть (например, для синхронизации/доступа к сервисам разработки внутри вашей домашней инфраструктуры). Не используйте VPN для обхода блокировок.
Базовая логика:
- Запускаете эмулятор на ПК.
- Проверяете доступность устройства:
flutter devices
adb devices
- Запускаете приложение:
flutter run -d <device_id>
Типичные проблемы и быстрые решения
Flutter doctor ругается на Android
- Проверьте
ANDROID_SDK_ROOT. - Установите
platform-tools,platforms;android-XX,build-tools;XX.X.X. - Убедитесь, что Flutter видит SDK: запустите
flutter doctor -v.
Ошибка Gradle: “SDK location not found”
- Убедитесь, что переменные окружения выставлены до запуска Gradle/Flutter.
- Выполните
source $HOME/.bashrcи повторитеflutter run.
Приложение запускается, но падает
- Смотрите stack trace в терминале.
- Проверьте
adb logcat. - При необходимости выполните rebuild:
flutter clean
flutter pub get
flutter run
Сборка APK/Bundle без отладки
Если нужна релизная сборка:
flutter build apk --release
или для app bundle:
flutter build appbundle --release
Заключение
Построение и отладка Flutter/Dart-приложений в Termux — вполне реальная задача при корректной настройке Android SDK, переменных окружения и workflow с запуском приложения на устройстве или эмуляторе. Практически всегда оптимальная связка выглядит так: Termux выступает как среда сборки и диагностики (Flutter/Dart, gradle/SDK), а эмуляторы — либо на этом же устройстве (если это поддерживается), либо на ПК с последующим подключением через adb и flutter run.
Если хотите ускорить настройку, избежать типичных ошибок с SDK/Gradle и выстроить удобную отладку под ваши проекты — обращайтесь в РыбинскЛАБ. Мы поможем настроить рабочую среду Termux + Flutter + Android SDK и подготовить процесс разработки под ваши задачи.