Скрипты на Андроид: полное руководство по запуску и автоматизации

Shell-скрипт, который отлично работает на Linux, при запуске на Android часто выдаёт ошибку permission denied или bad interpreter — и причина почти всегда в том, что раздел /sdcard смонтирован с флагом noexec, а значит, исполняемые файлы оттуда запускаться не могут в принципе. Это первое, что нужно проверить, прежде чем искать ошибки в самом коде скрипта.

Автоматизация на Android решается несколькими путями: через эмулятор терминала с shell-окружением, через визуальные конструкторы сценариев вроде Tasker или MacroDroid, а также через интерпретаторы Python и других языков. Выбор инструмента зависит от задачи: одно дело — переименовать сотню файлов по маске, и совсем другое — включать точку доступа при подключении к Bluetooth автомобиля.

В этом руководстве разберём рабочие способы запуска скриптов на Android без root-прав и с ними, типичные ошибки и ограничения системы, о которых редко пишут в кратких инструкциях.

Какие скрипты можно запускать на Android

Android построен на ядре Linux, поэтому shell-скрипты (bash, sh) — самый естественный формат для системы. Однако стандартный набор команд урезан: вместо полноценных GNU-утилит используется toolbox или toybox, и многие привычные флаги команд недоступны. Это нужно учитывать при переносе скриптов с десктопного Linux.

Помимо shell, на Android запускают:

  • 🐍 Python-скрипты — через Termux, Pydroid 3 или QPython;
  • 📜 JavaScript — через Tasker (действие JavaScript) или Node.js в Termux;
  • ⚙️ Сценарии автоматизации — визуальные «скрипты» в Tasker, MacroDroid, Automate;
  • 🔧 ADB-команды — выполняются с ПК или локально через wireless debugging.

Выбор языка — вопрос удобства, но у каждого варианта есть ограничения. Например, без root-прав скрипт не сможет изменять системные настройки за пределами разрешённых API, а фоновое выполнение на современных версиях Android агрессивно ограничивается системой энергосбережения.

Termux: полноценный терминал без root

Termux — самый популярный способ работы со скриптами на Android. Приложение создаёт изолированное Linux-окружение с пакетным менеджером pkg, через который устанавливаются Python, Node.js, git, ssh и сотни других инструментов. Root-доступ не требуется, что делает метод безопасным для гарантии устройства.

Важный нюанс: версию Termux из Google Play давно не обновляли, актуальные сборки распространяются через F-Droid и GitHub. Установка устаревшей версии приводит к ошибкам репозиториев при обновлении пакетов — это одна из самых частых проблем новичков.

Базовая настройка после установки выглядит так:

pkg update && pkg upgrade

pkg install python nano

termux-setup-storage

Команда termux-setup-storage запрашивает доступ к памяти устройства и создаёт папку ~/storage с симлинками на общие каталоги. Без неё скрипт «не увидит» файлы в загрузках и документах.

Почему скрипт не запускается: типичные ошибки

Ошибка permission denied при запуске файла из /sdcard возникает потому, что этот раздел смонтирован с параметром noexec — такова политика безопасности Android, и обойти её без root нельзя. Решение простое: скопируйте скрипт во внутреннюю папку Termux (~, то есть /data/data/com.termux/files/home) и запускайте оттуда, либо передавайте файл интерпретатору напрямую.

Вторая частая проблема — ошибка bad interpreter: No such file or directory при заведомо рабочем скрипте. Причина обычно в Windows-окончаниях строк (CRLF) вместо Unix (LF): файл, созданный в Блокноте на ПК, содержит невидимые символы \r, из-за которых система не может найти интерпретатор из shebang-строки. Лечится конвертацией через dos2unix или пересохранением файла в редакторе с поддержкой LF.

ОшибкаВероятная причинаРешение
permission deniedЗапуск из /sdcard (noexec)Перенести в home Termux или запускать через bash
bad interpreterОкончания строк CRLFКонвертировать в LF (dos2unix)
command not foundУтилита не установленаУстановить пакет: pkg install <имя>
Скрипт умирает в фонеОграничения энергосбереженияИсключить приложение из оптимизации батареи

⚠️ Внимание: если скрипт должен работать в фоне длительное время, добавьте Termux в исключения оптимизации батареи и при необходимости используйте termux-wake-lock. Иначе система убьёт процесс через несколько минут после выключения экрана — поведение зависит от прошивки конкретного устройства.

📊 Как вы запускаете скрипты на Android?
Termux и shell/Python
Tasker или MacroDroid
ADB с компьютера
Только планирую попробовать

Автоматизация через Tasker и MacroDroid

Если задача — реагировать на события (время, геопозиция, уровень заряда, подключение к сети), удобнее визуальные конструкторы. Tasker строит сценарии по схеме «триггер → действия», MacroDroid предлагает похожую логику с более простым интерфейсом, а Automate использует блок-схемы. Ни один из них не требует знания языков программирования.

При этом Tasker умеет вызывать shell-команды и скрипты Termux через плагин Termux:Tasker — так связка закрывает оба сценария: системное событие запускает ваш код. Например, при подключении к домашнему Wi-Fi можно запускать rsync-синхронизацию фотографий на домашний сервер.

  • 🔋 Реакция на заряд батареи и подключение зарядного устройства;
  • 📍 Действия по геозонам: пришёл домой — выключился звук уведомлений;
  • 🕐 Расписания: ночной бэкап, утренний запуск отчётов;
  • 📡 Сетевые события: смена Wi-Fi, появление Bluetooth-устройства рядом.
Почему некоторые действия в Tasker недоступны без root или ADB

Часть системных функций (переключение мобильных данных, GPS, режим полёта) на современных версиях Android недоступна обычным приложениям. Tasker предлагает выдать расширенные разрешения через ADB-команду с ПК — это разовая процедура, не требующая root. Точный список команд приведён в официальной документации Tasker, так как набор разрешений зависит от версии приложения.

Python-скрипты на Android

Для запуска Python есть два пути: внутри Termux (консольный вариант, максимально близкий к десктопу) или через приложение Pydroid 3 с графическим редактором и встроенным pip. Termux-вариант предпочтительнее для автоматизации и связки с shell, Pydroid удобнее для обучения и экспериментов с GUI-библиотеками.

Установка и запуск в Termux:

pkg install python

pip install requests

python myscript.py

Учтите, что библиотеки с нативными C-расширениями (например, часть зависимостей для научных вычислений) могут не собираться под Android из-за особенностей окружения. Если pip install завершается ошибкой компиляции, проверьте, нет ли готового пакета в репозиториях Termux — многие «тяжёлые» библиотеки там уже собраны.

☑️ Проверка перед запуском скрипта на Android

Выполнено: 0 / 5

ADB и скрипты с компьютера

Отдельный класс задач — управление устройством с ПК через ADB (Android Debug Bridge). Так автоматизируют массовые действия: установку и удаление приложений, снятие скриншотов, бэкапы, выдачу разрешений. На компьютере пишется обычный bat- или shell-скрипт, который вызывает команды вида adb shell ... по цепочке.

Для работы нужно включить отладку по USB в настройках разработчика устройства и установить platform-tools на ПК. Начиная с Android 11, доступна беспроводная отладка без кабеля, но порядок сопряжения зависит от версии системы — сверяйтесь с настройками конкретного устройства.

⚠️ Внимание: не запускайте ADB-команды из непроверенных инструкций, особенно с флагами pm uninstall и adb shell pm disable в отношении системных пакетов. Удаление или отключение системного компонента может нарушить работу устройства, а восстановление иногда требует сброса к заводским настройкам.

Root-доступ: когда он действительно нужен

Большинство бытовых задач автоматизации решается без root. Права суперпользователя понадобятся, если скрипт должен менять системные файлы, управлять ядром (губернаторы процессора), работать с разделами, блокировать рекламу через hosts или выполнять действия, закрытые для обычных приложений. Получение root на современных устройствах обычно делается через Magisk, но процедура зависит от модели и может аннулировать гарантию.

Безопасная альтернатива для многих сценариев — выдача приложениям расширенных разрешений через ADB без полного root. Так работают, например, автоматизация переключения системных настроек и доступ к журналам. Это обратимо и не затрагивает системные разделы.

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

Автозапуск скриптов при включении устройства

Стандартный Android не даёт обычным приложениям запускать произвольные процессы при загрузке без ограничений. В Termux задачу решает дополнение Termux:Boot: скрипты, помещённые в папку ~/.termux/boot/, выполняются после старта устройства. После установки дополнения его нужно один раз открыть вручную, чтобы система зарегистрировала приёмник загрузки.

На устройствах с root возможности шире — init-скрипты и сервисы Magisk, но конфигурация зависит от версии Magisk и прошивки, универсальной инструкции здесь нет. Для большинства пользователей связки Termux:Boot плюс wake-lock достаточно, чтобы, например, поднимать SSH-сервер или скрипт синхронизации сразу после включения телефона.

Часто задаваемые вопросы

Можно ли запускать скрипты на Android без root?

Да, большинство задач решается без root: Termux выполняет shell и Python-скрипты в своём изолированном окружении, Tasker и MacroDroid автоматизируют системные события, а расширенные разрешения выдаются через ADB с компьютера. Root нужен только для изменения системных файлов и функций, закрытых на уровне ядра.

Почему скрипт из /sdcard выдаёт permission denied?

Раздел общей памяти смонтирован с флагом noexec — исполнение файлов оттуда запрещено политикой безопасности Android. Скопируйте скрипт в домашнюю папку Termux или запускайте его через интерпретатор: bash script.sh.

Чем Termux отличается от Pydroid 3?

Termux — это полноценная консольная Linux-среда с пакетным менеджером, где Python — лишь один из инструментов. Pydroid 3 — приложение с графическим редактором, ориентированное именно на Python и удобное для обучения. Для автоматизации и связки с shell предпочтительнее Termux.

Скрипт работает при открытом экране, но останавливается в фоне. Что делать?

Это система энергосбережения убивает фоновый процесс. Добавьте приложение в исключения оптимизации батареи в настройках устройства, а для Termux дополнительно используйте команду termux-wake-lock. Точный путь к настройке зависит от оболочки производителя.

Безопасно ли запускать готовые скрипты из интернета?

Только после чтения кода. Shell-скрипты короткие и читаемые: откройте файл в редакторе и проверьте, нет ли команд удаления данных, загрузки файлов со сторонних адресов или изменения системных настроек. Особенно это критично для скриптов, требующих root-доступ.