Ошибка 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 с образами и скриптами.
Способ 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 при их использовании обычно означает, что скрипт запущен не из своей папки или образы не распакованы полностью.
Порядок действий:
- Распакуйте архив заводского образа в отдельную папку без кириллицы и пробелов в пути.
- Внутри найдите вложенный zip-архив с образами (
image-*.zip) и распакуйте его туда же, либо оставьте как есть — скрипт умеет работать с ним сам. - Откройте терминал именно в этой папке: в Windows это делается через адресную строку проводника (введите
cmd) или через «Открыть в Терминале». - Запустите
flash-all.bat(Windows) или./flash-all.sh(Linux/macOS).
☑️ Перед запуском flash-all проверьте
⚠️ Внимание: стандартный скрипт 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 обычно восстанавливаются перепрошивкой.