Подтвердить что ты не робот

Как создать и развернуть приложение 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 в сети веб-сервера, доступной для телевизора, входа в систему как "разработка" на телевизоре и "синхронизация" приложения с установленным приложений на телевизоре.


Может ли кто-нибудь указать мне на источник требований полного развертывания и приложений? Или даже просто рабочий образец?

4b9b3361

Ответ 1

У меня был разумный успех, создав среду разработки на моей машине Ubuntu, и я хотел бы поделиться своими методами здесь для тех, кто хочет сделать то же самое. Этот ответ должен быть независимым от платформы, поэтому один и тот же совет должен работать над любой полноценной операционной системой.

Введение

Во-первых, предположения о структуре приложения правильны. Приложение JavaScript состоит из следующих элементов:

  • config.xml - простой файл конфигурации, определяющий различные параметры и информацию о развертывании. См. Запись файла config.xml на официальном сайте разработчика.
  • widget.info, очень маленький файл с несколькими строками, используемыми для определения непрозрачности тела приложения. Это может не потребоваться для полноэкранных приложений.
  • index.html, основной файл HTML для вашего приложения.
  • Изображения, звуки и другие ресурсы.

Вы можете записать эти файлы, используя ваш любимый редактор. Я с удовольствием использую vim с linting плагинами для своих JS и CSS.

Тестирование

Начиная с версии 4.0 SDK теперь доступна версия эмулятора Linux. Это позволяет тестировать ваши приложения так, как они появятся на телевизорах 2011-2013. Для старых телевизоров вы можете запустить эмулятор SDK 1.5 в Wine, но эмуляторы, принадлежащие SDK 2.0 и более поздние не будут работать.

Можно запускать эмуляторы на виртуальной машине Windows, и с небольшим количеством обмана вы можете заставить эмуляторы использовать свою собственную папку приложений для поиска приложений. Это предполагает совместное использование папок разработки с вашей виртуальной машиной, а затем создание символической ссылки на эти папки, заменив папку "apps" в каталоге установки SDK. Краткий обзор этого процесса доступен в статье под названием Ваша Windows IDE сосет? Замените его на свой любимый редактор на Mac!

Развертывание

Samsung Smart TV имеет встроенную учетную запись разработчика, которая позволяет отправлять приложение с вашего компьютера для тестирования в реальном времени на самом телевизоре. Вы вводите 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. На самом деле, есть несколько вариантов. Ура!

Ответ 2

Теперь они выпустили 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 (Service Extension Framework)

Вам нужно зарегистрироваться на форуме Samsung D, а затем вы можете загрузить SDK из https://www.samsungdforum.com/Devtools/SdkDownload

Ответ 3

Один совет, который я не видел в любом из ответов, заключается в том, что телевизор попытается открыть соединение сокета на порте 45634 на компьютере, на котором было загружено приложение (то есть с widgetlist.xml).

Все вызовы отладки (оповещения()) будут отправляться через этот порт, что позволяет удаленно отлаживать.

Я использую NetCat, чтобы открыть порт и выгрузить все журналы, например:

nc -l 45634

Ответ 4

Я создал этот ответ для темы, о которой я ничего не знаю, но тем не менее я заметил что-то, что бросало красный флаг в мою сторону... bounty или нет.

Во-первых, я посмотрел на Отчет об ошибках 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, которые очень хорошо могут применяться здесь, или вы можете перейти к строке с жирным текстом.

Я работал над проектом веб-страницы, который использовал плагин lightbox под названием Shadowbox. Этот проект не был на локальном сервере, только во вложенной папке подпапки. Он отлично работает в Firefox и Chrome, но IE задыхается и не отображает CSS из таблицы стилей плагинов. Поскольку я был очень знаком с Shadowbox, я был на 100% уверен, что это не плагин. Поэтому я начал думать нестандартно, и через испытания и несчастья я обнаружил, что виновником был только фактический путь!

Я создал подпапку для проекта, который использовал /test(v1)/ в Path, и что сломал IE8. Как только я удалил круглые скобки, CSS был загружен правильно. Это же решение было также причиной проблемы CSS для члена форума, который использовал Vista and IE9, поэтому тогда эти проблемы могут быть связаны с Вином.

Какая проблема? Он использует незаконные символы, круглые скобки, в имени пути. Я остановлюсь на коротком месте и скажу URL-адрес только потому, что путь к файлу, ведущий к файлу index.html (и только относительные пути были использованы в кодировке), скобки не могли быть экранированы, а базовый тег не удалось).

Firefox и Chrome прощали, но не IE. Даже если вы не используете IE, возможно, что этот вопрос выходит за рамки этого.

Мое решение не использовать parentheses или whitespaces в любой части вашего пути к файлу. Хотя это может не решить эту ошибку, по крайней мере, у вас не будет проблем с песочницей Wine, когда этот file path станет URL path для любого требования (например, для доступа к SWF-объекту, который будет использоваться в качестве видеопроигрывателя). Если браузеры IE неумолимы, так же могут быть и другие встроенные браузеры или модули программирования.

Рекомендуемые:

Z:\дом\andy.wine\drive_c\Samsung\Samsung_TV SDK_3.5.2\Emulator\Emulator2012_v3.5\Bin\Emulator2.exe

Обратите внимание, что вышеприведенная версия не использует папку Program Files (x86), поскольку она не может быть изменена в соответствии с требованиями ОС. Наличие такого пути, несомненно, уменьшит, если не устранит, непредвиденные ошибки. Ура!

Ответ 5

Я знаю, что это старый вопрос, но поскольку я вникаю в этот процесс, я решил, что поделюсь некоторыми ссылками. Наслаждайтесь!

Достойное краткое руководство по началу разработки платформы Smart TV: http://www.samsungdforum.com/Guide/c02/index.html.

Это минимальные требования к проекту и некоторые файлы примеров: http://www.samsungdforum.com/Guide/art00011/index.html.

Ответ 6

Для людей, которым нравится делать все с командной строкой, smarttvjs (http://smarttvjs.org) очень упростил:

  • $smarttvjs init #create образец проекта
  • ... сделать некоторые разработки (IDE не требуется)
  • $smarttvjs build samsung (создайте пакет для samsung)
  • $smarttvjs запустить samsung #launch simulator