Ошибка fastboot «ANDROID_PRODUCT_OUT not set»: причины и решение

Ошибка fastboot: error: ANDROID_PRODUCT_OUT not set появляется, когда вы запускаете команду fastboot flashall или fastboot update без указания каталога с файлами прошивки — утилита пытается найти образы через переменную окружения ANDROID_PRODUCT_OUT, а та не задана. Это не сбой телефона и не «окирпичивание»: проблема целиком на стороне компьютера и решается за пару минут правильной настройкой путей.

Чаще всего с этой ошибкой сталкиваются при перепрошивке устройств Google Pixel заводским образом, при работе с AOSP-сборками или при ручной прошивке образов boot.img, system.img и vendor.img через скрипт flash-all. Ниже разберём, почему fastboot требует эту переменную, и как корректно её указать в Windows, Linux и macOS.

Что означает эта ошибка и почему она возникает

Утилита fastboot из состава Android SDK Platform Tools умеет прошивать отдельные разделы командой вида fastboot flash boot boot.img — здесь путь к файлу указан явно, и никаких переменных окружения не требуется. Но команды fastboot flashall и fastboot update работают иначе: они ищут набор образов прошивки в «текущем каталоге продукта», который определяется переменной ANDROID_PRODUCT_OUT.

Если переменная не задана, fastboot не понимает, где лежат boot.img, system.img и остальные файлы, и завершается с сообщением error: ANDROID_PRODUCT_OUT not set. Это защитное поведение: утилита отказывается прошивать «вслепую», чтобы не записать в разделы случайные файлы.

Типичные ситуации, в которых возникает ошибка:

  • 🔧 вы запустили fastboot flashall из каталога, где нет распакованных образов прошивки;
  • 📁 переменная окружения ANDROID_PRODUCT_OUT никогда не создавалась в системе;
  • 🧩 скрипт flash-all.bat или flash-all.sh был запущен вне папки с заводским образом;
  • 💻 используется самосборный fastboot из AOSP-окружения без инициализации lunch-конфигурации.

Быстрая диагностика: что проверить в первую очередь

Прежде чем менять переменные окружения, убедитесь, что сама связка «ПК ↔ смартфон» работает. Выполните в терминале:

fastboot devices

Если устройство отображается серийным номером — соединение в порядке, и дело точно в путях к образам. Если список пуст, сначала решите вопрос с драйверами и USB-подключением: на Windows может потребоваться установка Google USB Driver или драйвера производителя, на Linux — корректные udev-правила.

Далее проверьте, откуда вы запускаете команду. Откройте терминал и посмотрите текущий каталог: в нём должны лежать распакованные файлы прошивки — как минимум boot.img, а для полной перепрошивки также system.img, vendor.img, vbmeta.img и другие образы из архива производителя. Если вы скачали заводской образ Pixel, его нужно сначала распаковать: внутри архива лежит ещё один zip с образами и скриптами.

📊 В какой ситуации вы столкнулись с ошибкой ANDROID_PRODUCT_OUT not set?
Прошивка Google Pixel заводским образом
Команда fastboot flashall из AOSP
Запуск скрипта flash-all
Ручная прошивка отдельных образов

Способ 1. Запуск fastboot из папки с образами

Самый простой вариант — вообще не трогать переменные окружения, а перейти в каталог с прошивкой и работать оттуда. Флаг -p у fastboot задаёт «каталог продукта» вручную, а если вы уже находитесь в нужной папке, многие сборки fastboot подхватывают её как текущую — однако надёжнее указать путь явно.

Общий синтаксис выглядит так:

fastboot -p "C:\firmware\pixel-image" flashall

Здесь после -p указывается папка, в которой лежат образы прошивки. В Linux и macOS команда аналогична, меняется только формат пути:

fastboot -p ~/firmware/pixel-image flashall

Обратите внимание: путь не должен содержать опечаток, а на Windows каталоги с пробелами лучше заключать в кавычки. Если после этого fastboot начал прошивать разделы по очереди — проблема решена, и дополнительная настройка не нужна.

Способ 2. Задать переменную ANDROID_PRODUCT_OUT вручную

Если вы регулярно прошиваете устройства или работаете со сборками AOSP, имеет смысл задать переменную окружения постоянно или на время сессии терминала.

Windows (cmd, на время сессии):

set ANDROID_PRODUCT_OUT=C:\firmware\pixel-image

Windows (PowerShell):

$env:ANDROID_PRODUCT_OUT="C:\firmware\pixel-image"

Linux / macOS:

export ANDROID_PRODUCT_OUT=~/firmware/pixel-image

После этого команда fastboot flashall запускается без дополнительных флагов. Проверить, что переменная установлена, можно командой echo %ANDROID_PRODUCT_OUT% в cmd, echo $env:ANDROID_PRODUCT_OUT в PowerShell или echo $ANDROID_PRODUCT_OUT в Linux.

⚠️ Внимание: переменная, заданная через set или export, действует только в текущем окне терминала. После его закрытия настройка пропадёт — при повторной прошивке переменную нужно задать заново или прописать в системных параметрах окружения.

Способ 3. Правильный запуск скрипта flash-all

Заводские образы Google Pixel содержат готовые скрипты: flash-all.bat для Windows и flash-all.sh для Linux/macOS. Они автоматически прошивают все разделы в правильном порядке. Ошибка с ANDROID_PRODUCT_OUT при их использовании обычно означает, что скрипт запущен не из своей папки или образы не распакованы полностью.

Порядок действий:

  1. Распакуйте архив заводского образа в отдельную папку без кириллицы и пробелов в пути.
  2. Внутри найдите вложенный zip-архив с образами (image-*.zip) и распакуйте его туда же, либо оставьте как есть — скрипт умеет работать с ним сам.
  3. Откройте терминал именно в этой папке: в Windows это делается через адресную строку проводника (введите cmd) или через «Открыть в Терминале».
  4. Запустите flash-all.bat (Windows) или ./flash-all.sh (Linux/macOS).

☑️ Перед запуском flash-all проверьте

Выполнено: 0 / 5
⚠️ Внимание: стандартный скрипт flash-all стирает все данные пользователя. Если нужно сохранить данные и ваша модель это позволяет, отредактируйте скрипт, убрав флаг -w из строки запуска fastboot, — но делайте это только если понимаете последствия несовпадения версий разделов.

Сравнение способов решения

Выбор метода зависит от того, разовая у вас задача или регулярная работа с прошивками. Сводная таблица поможет определиться:

СпособСложностьКогда подходитОграничения
Флаг -p в командеМинимальнаяРазовая прошивкаПуть нужно указывать каждый раз
Переменная на сессию (set/export)НизкаяНесколько команд подрядСбрасывается при закрытии терминала
Системная переменная окруженияСредняяРегулярная работа с fastbootТребует правки настроек ОС
Скрипт flash-all из своей папкиНизкаяЗаводские образы PixelТолько для образов с готовым скриптом
Почему ошибка часто возникает у разработчиков AOSP

При сборке Android из исходников переменная ANDROID_PRODUCT_OUT задаётся автоматически после выполнения команд source build/envsetup.sh и lunch <цель>. Если открыть новый терминал и сразу запустить fastboot flashall без инициализации сборочного окружения, переменной не будет — отсюда и ошибка. Решение: повторить source и lunch в новом окне или задать путь к out/target/product/<устройство> вручную.

Если ошибка не уходит: дополнительные проверки

Иногда переменная задана, путь верный, а fastboot всё равно ругается или завершается с другой ошибкой. В этом случае проверьте следующее.

Во-первых, убедитесь, что в каталоге ANDROID_PRODUCT_OUT действительно лежат все образы, которые ожидает прошивка — если какого-то файла нет, fastboot сообщит об этом уже после старта. Во-вторых, проверьте версию самой утилиты: старые сборки fastboot могут не поддерживать новые динамические разделы (super.img) и команды вроде flashall для современных устройств. Скачайте актуальные Android SDK Platform Tools с официального сайта для разработчиков Google.

В-третьих, исключите проблемы с USB: используйте другой порт (желательно напрямую, без хаба), другой кабель и при необходимости другой компьютер. Нестабильное соединение может обрывать прошивку на середине, что гораздо опаснее исходной ошибки.

  • 🔌 смените USB-кабель и порт на компьютере;
  • 🔄 обновите Platform Tools до актуальной версии;
  • 📂 проверьте целостность скачанного архива прошивки;
  • 🛡️ временно отключите антивирус, если он блокирует запуск fastboot.exe.

Частые вопросы (FAQ)

Можно ли прошивать отдельные разделы без ANDROID_PRODUCT_OUT?

Да. Команды вида fastboot flash boot boot.img с явным указанием файла не требуют этой переменной. Она нужна только для flashall и update, которые ищут целый набор образов.

Опасна ли эта ошибка для смартфона?

Нет. Ошибка возникает до начала записи в разделы — fastboot просто отказывается работать без путей к файлам. Устройство остаётся в исходном состоянии, достаточно исправить команду и повторить.

Как задать ANDROID_PRODUCT_OUT постоянно в Windows?

Через «Система → О системе → Дополнительные параметры системы → Переменные среды». Создайте пользовательскую переменную ANDROID_PRODUCT_OUT с путём к папке образов и перезапустите терминал. Учтите, что при смене папки прошивки переменную придётся обновлять.

Помогает ли переустановка драйверов при этой ошибке?

Нет, драйверы здесь ни при чём: ошибка относится к поиску файлов на ПК, а не к подключению устройства. Драйверы стоит проверять, только если fastboot devices не видит смартфон.

Что делать, если flash-all запускается, но прошивка обрывается?

Проверьте стабильность USB-соединения, целостность архива прошивки и актуальность версии fastboot. Если обрыв произошёл на критическом разделе и устройство не загружается, повторите прошивку полным заводским образом — устройства с загрузчиком в режиме fastboot обычно восстанавливаются перепрошивкой.