Создание скрипта на смартфоне Huawei начинается с выбора среды выполнения: для бытовой автоматизации подходят MacroDroid или Tasker, а для системных задач — Termux с доступом к shell. На устройствах с HarmonyOS NEXT классические Android-скрипты не запустятся без контейнера, поэтому стратегию нужно определять до написания кода.
Пользователи часто сталкиваются с ограничением Energy Saver (экономия энергии), который убивает фоновые процессы автоматизаторов через 10–15 минут после блокировки экрана. Решается это добавлением приложения в «Защищённые» в настройках батареи и отключением «Управления автозапуском» для конкретной утилиты. Без этого шага любой скрипт перестанет работать сразу после ухода устройства в спящий режим.
Выбор инструмента: от новичков к профи
Для большинства задач достаточно визуальных конструкторов: MacroDroid предлагает понятный интерфейс «триггер — действие — условие», а Automate использует блок-схемы, удобные для сложной логики. Если нужен доступ к файловой системе, adb-командам или Python-скриптам — ставим Termux из F-Droid или GitHub, так как в AppGallery его версия часто устаревает.
Разработчики под HarmonyOS пишут на ArkTS (TypeScript-расширение) в DevEco Studio. Это уже не «скрипты» в бытовом смысле, а полноценные модули Ability с доступом к распределённым возможностям DSoftBus. Для быстрой проверки гипотез на ПК используют эмулятор Previewer или реальное устройство в режиме Developer Mode.
☑️ Минимальный набор для старта автоматизации
⚠️ Внимание: На прошивках EMUI 13+ и HarmonyOS 4+ системный раздел/systemсмонтирован только для чтения (dynamic partitions). Любые скрипты, пытающиеся писать туда безmagiskилиoverlayfs, уйдут в ошибкуRead-only file system.
Настройка Termux: первый рабочий скрипт за 5 минут
После установки Termux выполните pkg update && pkg upgrade -y, затем установите базовые утилиты: pkg install python git nano termux-api -y. Пакет termux-api даёт доступ к вибрации, тостам, GPS, камере и SMS через CLI-команды вроде termux-vibrate -d 500 или termux-toast "Hello".
Создайте файл ~/bin/backup_photos.sh с содержимым: #!/data/data/com.termux/files/usr/bin/bash\nrsync -av --progress /sdcard/DCIM/ /sdcard/Backup/DCIM_$(date +%F). Сделайте его исполняемым (chmod +x ~/bin/backup_photos.sh) и добавьте виджет Termux:Widget на рабочий стол — теперь бэкап запускается одним тапом. Путь /sdcard указывает на общий внутренний накопитель, доступный без root.
# Пример простого Python-скрипта для Termux
import os, subprocess
def notify(title, text):
subprocess.run(['termux-notification', '-t', title, '-c', text])
notify('Скрипт запущен', 'Проверка свободного места...')
df = subprocess.run(['df', '-h', '/sdcard'], capture_output=True, text=True)
notify('Диск', df.stdout.splitlines()[-1])
Автоматизация через MacroDroid: логика без кода
MacroDroid идеален для сценариев «если-то»: включить Wi-Fi при приходе домой (геофенс), выключить звук по календарю, отвечать SMS-ботом. Создайте макрос: триггер — Wi-Fi Connected (SSID «Home»), действие — Run Shell Command termux-toast "Welcome home" (требует Termux:API и права на наложение окон). Условие — Time Between 08:00–22:00, чтобы не спамить ночью.
Важный нюанс: для выполнения shell-команд из MacroDroid нужен доступ к /data/data/com.termux/files/usr/bin/bash. На Android 14+ (API 34) ограничения SELinux блокируют запуск бинарников из чужого контекста. Обход — использовать встроенное действие «HTTP Request» к локальному серверу на Termux (python -m http.server 8080) или дать MacroDroid права WRITE_SECURE_SETTINGS через adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS.
- 🔧 Триггеры: геолокация, сенсоры, уведомления, зарядка, NFC-теги
- 🎯 Действия: изменение настроек, отправка Intent, запуск скриптов, управление медиа
- 🛡 Условия: уровень батареи, режим «Не беспокоить», подключённые устройства Bluetooth
- 🔄 Циклы и переменные: счётчики, массивы, глобальные словари для сложных цепочек
Разработка под HarmonyOS: ArkTS и Stage Model
Если цель — опубликовать приложение в AppGallery, скрипты на Python/Shell не подойдут. Начинают с DevEco Studio (скачать с developer.huawei.com), создают проект Empty Ability на API 12+ (Stage Model). Основной файл — EntryAbility.ets, UI описывается в Index.ets через декларативный синтаксис @Entry @Component struct Index { build() { Column() { Text('Hello') } } }.
Для доступа к системным API (Bluetooth, NFC, Account Kit) нужны разрешения в module.json5: "requestPermissions": [{ "name": "ohos.permission.BLUETOOTH", "reason": "Поиск устройств" }]. Отладка идёт через hdc shell hilog | grep (Huawei Device Connector). Преимущество ArkTS — горячая перезагрузка (Hot Reload) и строгая типизация, исключающая класс ошибок рантайма.
⚠️ Внимание: На смартфонах без GMS (серия Mate 60, Pura 70, Nova 12) Google Play Services отсутствуют. Скрипты, полагающиеся наFirebase,Google Maps SDKилиGCM/FCMpush, работать не будут. Используйте HMS Core (Push Kit, Location Kit, Analytics Kit) или открытые альтернативы вроде UnifiedPush.
Таблица: сравнение сред выполнения скриптов
| Среда | Язык | Доступ к системе | Кривая обучения | Подходит для |
|---|---|---|---|---|
| MacroDroid / Automate | Визуальный / DSL | Высокий (через Shell/Intent) | Низкая | Бытовая автоматизация, профили |
| Termux (Linux env) | Bash, Python, Node.js, Lua | Пользовательский (без root) | Средняя | Серверы, бэкапы, парсинг, боты |
| Tasker | Свой DSL + Java(S)let | Максимальный (с root/ADB) | Высокая | Сложная логика, плагины, интеграции |
| DevEco Studio (ArkTS) | ArkTS (TS/JS) | Полный (системные API) | Высокая | Нативные приложения, HarmonyOS Next |
| Quick App / JS FA | JavaScript (legacy) | Ограниченный (JS Framework) | Низкая | Лёгкие сервисы, виджеты (устаревает) |
Распространённые ошибки и их исправление
Частая ошибка новичков — игнорирование Doze Mode и App Standby Buckets. Скрипт в Termux, запущенный по cron (через termux:boot + crond), не сработает, если телефон «уснул». Лечение: termux-wake-lock в начале скрипта и termux-wake-unlock в конце, либо добавление Termux в «Неограниченное» использование батареи (Settings → Apps → Special Access → Battery Optimization).
Вторая проблема — кодировка. Файлы, созданные в Windows-блокноте, имеют CRLF (\r\n), что ломает shebang #!/bin/bash в Termux. Используйте VS Code с настройкой files.eol: "\n" или конвертируйте на телефоне: sed -i 's/\r$//' script.sh. Третья — пути: /storage/emulated/0 это реальный путь к «Internal Storage», а /sdcard — симлинк. В скриптах для rsync или find лучше указывать полный путь, чтобы избежать проблем с симлинками на некоторых прошивках.
Продвинутый доступ
ADB и Shizuku:Если рут недоступен, но нужен системный уровень — используйте Shizuku. Установите APK, запустите через ADB: adb shell sh /storage/emulated/0/Android/data/moe.shizuku.privileged.api/start.sh. Теперь приложения вроде Canta (удаление системных пакетов) или App Ops получают права android.permission.PACKAGE_USAGE_STATS и WRITE_SECURE_SETTINGS без разблокировки загрузчика. На HarmonyOS NEXT Shizuku не работает — только нативные API или контейнер Linux.
Для отладки скриптов в Termux установите pkg install tmate и запустите tmate -F. Получите SSH-строку для подключения с ПК — удобно копировать логи, править файлы в привычном редакторе и запускать команды в полноценном терминале.
Главное правило: любой скрипт на Huawei должен уважать политику управления питанием. Без настройки исключений для батареи автоматизация умрёт через 15 минут после выключения экрана.
Используйте termux-notification --action "termux-toast 'Action clicked'" --button1 "Run" --button1-action "termux-toast 'Button pressed'" для создания интерактивных уведомлений с кнопками прямо из shell-скрипта.
Безопасность и приватность скриптов
Скрипты с доступом к READ_SMS, CALL_LOG или LOCATION требуют явного согласия пользователя в runtime. В Termux запрашивайте через termux-api: termux-contact-list выдаст диалог разрешения. Никогда не храните токены/пароли в открытом виде в .sh или .py — используйте termux-clipboard-get для разового ввода или шифруйте через age / gpg (пакеты есть в репозитории Termux).
При установке APK извне (например, самосборный скрипт-обёртка) проверяйте хеш SHA-256: sha256sum app.apk и сравнивайте с исходником. На EMUI/HarmonyOS установка неизвестных источников разрешается по пакету (Settings → Security → Install unknown apps), что безопаснее глобального переключателя старых Android. Для Enterprise-устройств MDM-профиль может блокировать adb и сторонние APK — скрипты не запустятся без согласования с IT-админом.
⚠️ Внимание: Разблокировка загрузчика (Bootloader Unlock) на современных Huawei (после 2018 года) официально недоступна — коды не выдаются. Любые сервисы, предлагающие «разблокировку за $», — мошенники. Без анлока нет Magisk, нет TWRP, нет системного root. Планируйте автоматизацию в рамках пользовательского пространства.
Перспективы: ArkCompiler, ArkTS и кроссплатформенность
Huawei продвигает ArkCompiler — единый рантайм для ArkTS, JS, C/C++. В перспективе скрипты, написанные для телефона, будут запускаться на планшетах, часах, автоголовных устройствах и ТВ без изменений (Distributed Scheduler). Уже сейчас @ohos.distributedSchedule позволяет запускать FA (Feature Ability) на удалённом устройстве: телефон управляет камерой планшета, часы показывают уведомления от скрипта на телефоне.
Для кроссплатформенных задач сегодня актуален Flutter (поддержка HarmonyOS в стадии Beta/Release Preview) и React Native (через @react-native-ohos). Если у вас есть готовый JS/TS-скрипт для автоматизации веба — его можно обернуть в Quick App или ArkTS модуль с минимальными правками, получив нативную производительность и доступ к HMS Core.
FAQ: Частые вопросы про скрипты на Huawei
Можно ли запускать .sh скрипты автоматически при загрузке телефона?
Да. В Termux создайте файл ~/.termux/boot/start.sh (директорию boot нужно создать вручную). Добавьте туда команды запуска ваших сервисов (например, crond, python server.py &). Требуется включить «Автозапуск» для Termux в настройках батареи и дать разрешение «Отображать поверх других окон» для корректной работы уведомлений при загрузке.
Как передать данные из скрипта в MacroDroid и обратно?
Через глобальные переменные MacroDroid: действие «Run Shell Command» -> curl -X POST "http://localhost:12345/set?var=value" (нужен локальный HTTP-сервер на Termux/Tasker). Или через файлы: скрипт пишет в /sdcard/Shared/macrodroid_var.txt, MacroDroid триггер «File Modified» читает и парсит. Для обратной связи MacroDroid запускает shell: echo "new_value" > /sdcard/Shared/from_macro.txt.
Работают ли Python-библиотеки (requests, pandas, numpy) в Termux на Huawei?
Большинство pure-Python пакетов ставятся через pip install без проблем. Библиотеки с C-расширениями (numpy, pandas, scipy, cryptography) требуют компиляции. В Termux они доступны как предсобранные пакеты: pkg install python-numpy python-pandas python-cryptography. Версии могут отставать от PyPI, но для автоматизации обычно достаточно. Для актуальных версий используйте pip install --no-binary :all: numpy (нужен pkg install clang make libopenblas), но компиляция на телефоне может занять 20–60 минут.
Как сделать скрипт, который работает на HarmonyOS NEXT без Android-контейнера?
Нативно — только ArkTS/JS в DevEco Studio. Android-контейнер (ARK) на HarmonyOS NEXT отсутствует. Варианты: 1) Переписать логику на ArkTS как System/Service Extension. 2) Использовать Remote Terminal / SSH к другому устройству (Linux/Windows/старый Android) где скрипт выполняется, а телефон лишь управляет. 3) Ждать порт Termux/Linux-контейнеров от энтузиастов (проект TermuxOhos в ранней стадии).
Почему скрипт в Termux не видит файлы на флешке (OTG)?
Termux имеет доступ только к своим приватным папкам и /sdcard (через Storage Access Framework). Для OTG-накопителей нужно: 1) Дать разрешение в системном диалоге при подключении. 2) Узнать точку монтирования: ls /mnt/media_rw/ или findmnt. 3) Использовать этот путь в скрипте. На Android 13+ прямой доступ к /mnt/media_rw/USB_DISK требует разрешения MANAGE_EXTERNAL_STORAGE (All files access), которое Termux получить не может без Shizuku/Root. Обход: копировать файлы через системный файл-менеджер в /sdcard/Download перед обработкой.