We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Построение и отладка мобильных приложений на Flutter/Dart внутри Termux с подключением к Android SDK и эмуляторам

Пошаговое руководство по установке Flutter и настройке Android SDK внутри Termux: сборка, запуск и отладка приложений, работа с AVD и эмуляторами на Android.

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, подход такой:

  1. Создайте AVD через avdmanager/sdkmanager (при наличии).
  2. Убедитесь, что нужные system-images установлены.
  3. Запустите эмулятор и подключите отладку.

Установка 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 и подготовить процесс разработки под ваши задачи.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект