Как создать и развернуть приложение Samsung SmartTV без IDE (например, в Linux)
Проблема:
Я хотел бы попробовать создать приложение для проверки концепции с использованием Samsung SmartTV SDK 2.5 (у меня есть телевизор модели 2011 года - UA55D8000).
К сожалению, SDK поставляется в двух вариантах, которые работают только в Microsoft Windows. Это странно, потому что нет причин, по которым это должно быть так: сами телевизоры работают на Linux, а приложения написаны на JavaScript.
Это представляет две проблемы:
Поскольку у меня дома нет Microsoft Windows, я не могу использовать среду сборки (и эмулятор ТВ), которые поставляются с SDK. (Сами файлы SDK просто JavaScript)
Даже если бы у меня был доступ к Windows, очень сложно автоматизировать сборку и тестирование приложений без доступа к традиционным инструментам сборки (например, Make, Ant, Autotools и т. Д.)
Как я могу создавать приложения Samsung Smart TV для Linux? (т.е. без использования инструментов сборки на основе Windows, которые поставляются с SDK)
Что я понял до сих пор:
Из того, что я могу извлечь, приложение в режиме JavaScript- это просто zip-файл, содержащий XML-файл конфигурации, один или несколько файлов JavaScript (включая поставляемые библиотеки интерфейса JavaScript для функций SDK платформы) и любые необходимые ресурсы (HTML, изображения и т. Д.).
Кроме того, из того, что я понял, развертывание включает размещение zip-файла и XML-файла манифеста в сети веб-сервера, доступной для телевизора, вход в систему как "разработка" на телевизоре и "синхронизацию" приложения с установленными приложениями на ТВ.
Может ли кто-нибудь указать мне источник полной информации о требованиях к развертыванию и комплектах приложений? Или даже просто рабочий образец?
6 ответов
У меня был достаточный успех в настройке среды разработки на моей машине с Ubuntu, и я хотел бы поделиться своими методами здесь для всех, кто хочет сделать то же самое. Этот ответ должен быть независимым от платформы, поэтому тот же совет должен работать на любой полноценной операционной системе.
Вступление
Прежде всего, предположения вопроса относительно структуры приложения верны. Приложение JavaScript состоит из следующих элементов:
- config.xml, простой файл конфигурации, определяющий различные настройки и информацию о развертывании. См. Написание файла config.xml на официальном сайте разработчика.
- widget.info, очень маленький файл с несколькими строками, используемый для определения непрозрачности тела приложения. Это может не потребоваться для полноэкранных приложений.
- index.html, основной файл HTML для вашего приложения.
- Изображения, звуки и другие ресурсы.
Вы можете написать эти файлы, используя ваш любимый редактор. Я с удовольствием использую vim с подключаемыми плагинами для JS и CSS.
тестирование
Начиная с версии 4.0 SDK, теперь доступна версия эмулятора для Linux. Это позволяет вам тестировать ваши приложения так, как они будут отображаться на телевизорах 2011-2013 годов. Для более старых телевизоров вы можете запустить эмулятор SDK 1.5 в Wine, но эмуляторы, принадлежащие SDK 2.0 и новее , не будут работать.
Можно запускать эмуляторы на виртуальной машине Windows, и, сделав небольшую хитрость, вы можете заставить эмуляторы использовать собственную папку приложений для поиска приложений. Это включает в себя совместное использование папок разработки с вашей виртуальной машиной, затем создание символической ссылки на эти папки и замена папки "apps" внутри установочного каталога SDK. Краткий обзор этого процесса доступен в статье под названием " Ваша Windows IDE - отстой? Замените его своим любимым редактором на Mac!
развертывание
Смарт-телевизоры Samsung имеют встроенную учетную запись разработчика, которая позволяет отправлять приложения со своего компьютера для непосредственного тестирования на самом телевизоре. Вы вводите IP-адрес своего сервера развертывания, и телевизор будет искать файл с именем widgetlist.xml на этом сервере. Пример формата следующий:
<?xml version="1.0" encoding="UTF-8"?>
<rsp stat="ok">
<list>
<widget id="MyTVApp">
<title>MyTVApp</title>
<compression size="3383543" type="zip"/>
<description>A basic application for Samsung TVs</description>
<download>http://192.168.1.83/Widget/MyTVApp_0.1_America_20120709.zip</download>
</widget>
</list>
</rsp>
После этого будет загружено каждое приложение из списка, используя URL-адрес в <download>
тег. Все, что вам нужно сделать, это заархивировать файлы, соответственно изменить файл widgetlist.xml и убедиться, что оба файла размещены на веб-сервере, работающем на вашем компьютере. Вы можете использовать Apache, lighttpd или что-нибудь еще. У меня есть небольшое приложение node.js / connect, которое будет динамически создавать widgetlist.xml на основе zip-файлов, которые у меня есть в каталоге с пометкой deploy.
Так что у вас есть это. Разработка приложений Samsung Smart TV не невозможна без Windows. На самом деле, есть довольно много вариантов. Ура!
Теперь они выпустили Smart TV SDK 4.0, который включает поддержку Linux и Mac OS X: http://www.samsungdforum.com/SamsungDForum/NewsView?newsID=27
"В дополнение к редактору приложений на основе Eclipse был выпущен новый эмулятор на основе Linux.
Этот эмулятор запускается на виртуальной машине Ubuntu, которая запускается в средстве виртуализации Virtual Box ".
■ Функции для платформы 2013 года в Linux (первый выпуск)
- Платформа приложений
- App Engine / WebKit
- UniPlayer
- SEF (структура расширения услуг)
Вам нужно зарегистрироваться на форуме Samsung D, а затем загрузить SDK с https://www.samsungdforum.com/Devtools/SdkDownload
Один из советов, о которых я не упомянул ни в одном из ответов, заключается в том, что телевизор попытается открыть сокетное соединение через порт 45634 компьютера, с которого было загружено приложение (тот, что с widgetlist.xml).
Все отладки (оповещения () звонки) будут отправляться через этот порт, что позволяет удаленную отладку.
Я использую NetCat, чтобы открыть порт и сбросить все журналы, например так:
nc -l 45634
Я знаю, что это старый вопрос, но так как я углубляюсь в процесс, я решил поделиться некоторыми ссылками. Наслаждайтесь!
Достойное краткое руководство по разработке для платформы Smart TV: http://www.samsungdforum.com/Guide/c02/index.html.
Это минимальные требования проекта и некоторые примеры файлов: http://www.samsungdforum.com/Guide/art00011/index.html.
Я создал этот ответ для темы, о которой ничего не знаю, но, тем не менее, я заметил что-то, что бросило красный флаг в мою сторону... щедрость или нет.
Сначала я посмотрел на ваш Отчет об ошибках WineHQ, чтобы увидеть, была ли решена эта проблема, но она все еще находится на рассмотрении на момент написания этой статьи. Я заметил, что в отчете об ошибке была ссылка на обсуждение, на которое я нажал и проследовал.
Глядя наmachine-code generated dump-error
вэтой дискуссии оказался информативным.
Ссылка:
Z: \ home \ andy.wine \ drive_c \ Program Files (x86) \ Samsung \ Samsung TV SDK (3.5.2) \ Emulator \ Emulator2012_v3.5 \ bin \ Emulator2.exe
ВышеPath
расположение файла, вызвавшего дамп Этот путь - красный флаг, который я упомянул.
Позвольте мне немного вернуться и объяснить, что я узнал о Windows XP SP3
а также IE8
что очень хорошо может применяться здесь, или вы можете перейти к строке с жирным текстом.
Я работал над проектом веб-страницы, который использовал плагин лайтбокса под названиемShadowbox
, Этот проект не был на локальном сервере, просто в подпапке подпапки. Он отлично работает в Firefox и Chrome, но IE задохнулся и не рендерил CSS из таблицы стилей плагинов. Поскольку я был очень хорошо знаком с Shadowbox, я был на 100% убежден, что это не плагин. Таким образом, я начал мыслить нестандартно, и черезиспытания и невзгоды я обнаружил, что преступник был просто реальным путем!
Я создал подпапку для проекта, который использовал/test(v1)/
в Path
и вот что сломалось IE8
, Как только я удалилскобки, CSS был загружен правильно. Это же решение стало причиной проблемы с CSS для участника форума, который использовалVista and IE9
Таким образом , вполне возможно, что эти проблемы также связаны с Wine.
Что это за проблема? Он использует недопустимые символы,круглые скобки в имени пути. Я остановлюсь коротко и скажу имя URL только потому, что это путь к файлу, ведущий кindex.html
файл (и только относительные пути использовались в кодировании - скобки не могли быть экранированы - и базовый тег не удался).
Firefox и Chrome были прощающими, но не IE. Даже если вы не используете IE, возможно, эта проблема выходит за рамки этого.
Мое решение не использоватьparentheses
или жеwhitespaces
в любой части вашего пути к файлу. Хотя это может и не решить эту конкретную ошибку, по крайней мере у вас не будет проблем с Wine в песочнице, когда file path
становится URL path
для любых требований (например, доступ к объекту SWF, который будет использоваться в качестве видеопроигрывателя). Если браузеры IE не прощают, то могут поступить и другие встроенные браузеры или программные модули.
Рекомендуемые:
Z: \ home \ andy.wine \ drive_c \ Samsung \ Samsung_TV SDK_3.5.2 \ Emulator \ Emulator2012_v3.5 \ bin \ Emulator2.exe
Обратите внимание, что выше не использует Program Files (x86)
папка, поскольку это не может быть изменено в соответствии с требованиями ОС. Наличие такого пути наверняка уменьшит, если не устранит, любые непредвиденные ошибки. Ура!
Для людей, которым нравится делать все с помощью командной строки, smarttvjs ( http://smarttvjs.org/) сделал это очень просто:
- $ smarttvjs init # создать пример проекта
- ... сделать некоторые разработки (IDE не требуется)
- $ smarttvjs build samsung (создать пакет для samsung)
- $ smarttvjs run samsung # Запуск симулятора