Телевизоры LG на платформе webOS запускают только веб-приложения, упакованные в специальные контейнеры. В отличие от Android TV, здесь нет поддержки APK-файлов, так как ядро системы построено на Linux с графическим стеком, ориентированном на веб-движок. Понимание этой архитектуры критически важно для пользователей, пытающихся установить сторонний софт, и для разработчиков, портирующих сервисы на экосистему LG.
Официальный магазин LG Content Store распространяет приложения в защищенном формате, который автоматически обрабатывается системой обновлений. При попытке установить файл, скачанный из браузера или переданный по USB, телевизор проверяет цифровую подпись и структуру архива. Если контейнер не соответствует спецификации webOS, установка блокируется на уровне системного установщика.
Основные форматы контейнеров:.ipk и.wgt
История webOS делится на две крупные эры упаковки приложений. На ранних версиях (webOS 1.x — 3.x, модели 2014–2016 гг.) использовался формат .ipk (Itsy Package), наследуемый от Palm/HP webOS. Это архив с метаданными в control.tar.gz и полезной нагрузкой в data.tar.gz, по структуре напоминающий пакеты Debian.
С выходом webOS 4.0 (2017 год) LG перешла на стандарт W3C Widget Packaging — формат .wgt. Это ZIP-архив с обязательным файлом манифеста config.xml в корне, описывающим идентификатор, версию, права доступа и точку входа. Современные телевизоры OLED, NanoCell и линейки UHD последних лет работают именно с.wgt.
- 📦 .ipk — устаревший формат для webOS 1.0–3.5, требует утилиты
palm-installдля разработки. - 📦 .wgt — актуальный стандарт для webOS 4.0+, поддерживает современные API и модель безопасности.
- 🔐 Оба формата требуют валидной подписи разработчика для установки на продакшн-устройства без режима разработчика.
- 🚫 Форматы .apk, .exe, .ipa не поддерживаются ни в каком режиме работы телевизора.
Ключевой момент: только.wgt (webOS 4.0+) и.ipk (legacy) являются нативными исполняемыми форматами для LG TV.
⚠️ Внимание: Попытка переименовать.apk в.wgt или.ipk не сделает приложение рабочим. Архитектура кода (Dalvik/ART vs JavaScriptCore/V8) принципиально отличается, бинарная совместимости нет.
Технологический стек веб-приложений webOS
Любое нативное приложение для LG TV — это по сути веб-сайт, работающий в офлайн-режиме с доступом к системным API через JavaScript-мосты. Движок рендеринга основан на WebKit (в новых версиях — на Chromium через WebEngine), что обеспечивает поддержку современных стандартов HTML5, CSS3 и ECMAScript 2020+.
Разработчики используют фреймворки React, Preact, Vue или старый Enyo (поддержка прекращена LG). Для доступа к тюнеру, DRM, Bluetooth, пульту Magic Remote применяются специальные JavaScript API webOS.service. и webOS.dev.. Без знания этих интерфейсов портирование веб-приложения на телевизор невозможно.
- 🌐 HTML5/CSS3/JS — база любого приложения, точка входа
index.html. - ⚙️ config.xml — манифест (для.wgt), определяющий
<widget id>,<version>,<privilege>. - 🔌 JS Services — фоновые Node.js-скрипты для длительных задач (загрузка, синхронизация).
- 🎮 Input API — обработка нажатий пульта, голосовых команд, указателя Magic Remote.
Установка сторонних приложений через Developer Mode
Единственный легальный способ запустить неподписанный.wgt или.ipk на телевизоре — активировать Developer Mode. Это делается в меню Настройки → Общие → О телевизоре → Информация о пользователе → Режим разработчика. После перезагрузки телевизор открывает порт 3000 для подключения CLI-инструментов.
Для передачи пакета используется официальный webOS TV SDK (входит в состав @webosose/ares-cli для Node.js). Установка выполняется командами ares-setup-device (добавление IP телевизора) и ares-install --device <имя> <путь_к_.wgt>. Файл приложения должен быть предварительно собран утилитой ares-package из исходников проекта.
☑️ Чек-лист перед установкой.wgt через CLI
После успешной установки иконка появляется на чере. Логи запуска можно просматривать командой ares-inspect --device <имя> , которая открывает DevTools в браузере на ПК. Это единственный способ отладить ошибки JavaScript на самом телевизоре.
Почему Android-приложения (APK) не запускаются на LG
Архитектура webOS не содержит виртуальной машины Android Runtime (ART) и системных библиотек фреймворка Android. APK-файлы содержат байт-код DEX, нативные библиотеки .so (ARM/x86) и манифест AndroidManifest.xml, которые не имеют никакого отношения к веб-контейнеру webOS.
Существуют проекты-эмуляторы (например, Anbox или Waydroid), но они требуют root-доступа, разблокированного загрузчика и ядра Linux с поддержкой binder — ничего из этого недоступно на потребительских телевизорах LG. Любые инструкции по «установке APK на LG» в интернете описывают либо запуск Android-приставки через HDMI, либо использование сервисов облачного стриминга.
⚠️ Внимание: Не скачивайте и не пытайтесь установить файлы, выдаваемые за «APK для LG» на сторонних сайтах. Это вектор распространения вредоносного кода для вашего ПК или телефона, на ТВ они просто не запустятся.
Инструментарий разработчика: SDK, CLI и IDE
Официальный набор инструментов webOS TV SDK распространяется через npm и включает эмулятор (на базе QEMU/VirtualBox), компилятор пакетов, инспектор и утилиту управления устройствами. Рекомендуемая среда разработки — Visual Studio Code с расширением webOS TV Extension, обеспечивающим подсветку манифеста, автодополнение API и кнопку «Deploy to TV».
Для кроссплатформенных проектов актуален фреймворк Enact (наследник Enyo), оптимизированный под пультовое управление и рендеринг на больших экранах. Он решает проблемы фокуса навигации, масштабирования интерфейса и работы с памятью, типичные для веб-приложений на ТВ.
Детали сборки проекта Enact для webOS
Команда `enact create my-app` создает заготовку с настроенным webpack и babel. В `package.json` добавляются скрипты `pack` (сборка.wgt через ares-package) и `pack-p` (сборка для продакшена с подписью). Файл `appinfo.json` (legacy) или `config.xml` генерируется автоматически на основе метаданных проекта.
Важно: эмулятор в SDK полезен для проверки верстки и логики, но не воспроизводит аппаратное ускорение видео (DRM, 4K, HDR) и специфику пульта Magic Remote. Финальное тестирование обязательно на железе.
Частые ошибки при сайдлоаде и их диагностика
Самая распространенная ошибка INSTALL_ERROR_INVALID_PACKAGE означает повреждение архива, отсутствие config.xml в корне или несоответствие ID приложения в манифесте и имени папки/файла. Ошибка INSTALL_ERROR_VERSION возникает, если версия в манифесте не выше уже установленной (webOS не позволяет даунгрейд без удаления).
Проблемы с правами доступа (SECURITY_ERROR) появляются, когда приложение запрашивает привилегию (например, http://webos.org/privilege/media.recorder), не объявленную в манифесте или запрещенную для неподписанных приложений. Некоторые системные API (HDMI CEC, настройки сети) доступны только предварительно установленным системным приложениям.
Если установка зависает на 99%, проверьте логи командой `ares-install -d
Конфликт версий webOS API: приложение, собранное под SDK 6.0 (webOS 6.0 / webOS 22), может не запуститься на ТВ 2018 года (webOS 4.x), если использует новые API (например, webOS.service.tv.avblock). Всегда указывайте минимальную версию ОС в манифесте или используйте полифиллы.
Сравнительная таблица форматов и совместимости
| Формат | Версия webOS | Годы выпуска ТВ | Инструмент упаковки | Поддержка сейчас |
|---|---|---|---|---|
| .ipk | 1.0 – 3.5 | 2014 – 2016 | palm-package / ares-package (legacy) | Только архивные модели |
| .wgt | 4.0 – текущая | 2017 – настоящее время | ares-package (Node.js CLI) | Полная поддержка |
| .apk | — | — | Android SDK (Gradle) | Не поддерживается |
| .crx | — | — | Chrome Extension Packaging | Не поддерживается |
Часто задаваемые вопросы
Могу ли я установить APK на LG TV через флешку?
Нет. Операционная система webOS не содержит среду выполнения Android. Файл.apk не будет распознан установщиком, даже если включен режим разработчика. Используйте Android-приставку или телевизор на Google TV / Android TV для нативного запуска APK.
Какой форент нужен для приложения из LG Content Store?
Пользователю не нужно знать формат — магазин качает и устанавливает зашифрованный.wgt автоматически. Файлы в памяти ТВ скрыты и недоступны для копирования через файловый менеджер или USB без взлома системы (что не рекомендуется).
Почему мое самописное.wgt не устанавливается:"Invalid signature"?
В режиме разработчика подпись не обязательна, но файл манифеста config.xml должен быть валидным XML с корректным id (формат com.domain.appname). Проверьте команду ares-package --validate перед установкой.
Работают ли веб-приложения (PWA) в браузере LG вместо нативных?
Браузер LG поддерживает Service Workers и манифест Web App Manifest, поэтому PWA можно «установить» на главный экран браузера. Но доступ к системным API (пульт, тюнер, DRM, уведомления) в браузере ограничен по сравнению с нативным.wgt приложением.
Где скачать webOS TV SDK для Windows/Mac/Linux?
Официально SDK распространяется как npm-пакет @webosose/ares-cli. Установка: npm install -g @webosose/ares-cli. Требуется Node.js LTS. Эмулятор качается отдельно через ares-emulator install (нужен VirtualBox). Документация на developer.lge.com.