Создание приложений для LG Smart TV: советы начинающему разработчику


    Привет! В этой статье я хочу поделиться своим опытом разработки приложений для платформы LG Smart TV. Лично я свой путь Smart TV разработчика начинал именно с этой платформы и хотел бы порекомендовать ее всем заинтересованным в данном направлении приложений. В первую очередь это связано с тем, что по качеству документации и предоставляемых разработчику возможностям LG не уступает своим основным конкурентам из Samsung. В то же время, специалисты санкт-петербургской лаборатории LG R&D достаточно открыты и всегда готовы предоставить актуальную информацию, тогда как от их коллег из московского центра разработок Samsung я уже несколько месяцев пытаюсь получить контакт хоть кого-то, кто может внятно отвечать на технические вопросы. Про других участников рынка Smart TV я лучше не буду упоминать: то, как они подходят к вопросам взаимодействия с теми, кто, по идее, должен наполнять их магазины приложений, вызывает большие сомнения в том, что они вообще заинтересованы в том, чтобы для них что-то разрабатывалось.

    Одним из продуктов нашей команды является приложение Simple Smart IPTV, которое появилось в LG Smart World 29 апреля этого года, менее чем через месяц после объявления нас победителями в конкурсе LG Smart TV Apps Contest 2012. С первых же дней SS IPTV заняло уверенную позицию в топе бесплатных приложений, где и остается по сей день.

    Поскольку статья ориентирована в первую очередь на новичков, мне бы хотелось начать с двух противоречивых, но, не смотря на это, одинаково распространенных заблуждений о создании Smart TV приложений.

    Заблуждение первое – разрабатывать приложения для Smart TV очень сложно.
    Это не так. В большинстве случаев, когда мы говорим о создании Smart TV приложений, речь идет о верстке html-страницы, воплощающей весь необходимый функционал. Технологии, применяемые при создании такого рода приложений (HTML 5, CSS, JS) хорошо описаны и многим давно известны.

    Заблуждение второе – разрабатывать приложения для Smart TV очень просто.
    Это тоже не так. Данное заблуждение распространяется, вероятно, теми, кто не сталкивался с этой задачей непосредственно, а знаком с ней лишь в общих чертах. Применяемые при разработке технологии должны учитывать функциональные особенности платформы и соответствовать требованиям к пользовательскому интерфейсу. Без понимания этого можно всего за 2-3 месяца создать великолепный и потенциально востребованный продукт, после чего потратить еще год на то, чтобы пройти контроль качества в LG QA.

    Ниже я привожу несколько основных советов, следование которым существенно облегчит Вашу работу и сэкономит множество нервных клеток:

    1. Внимательно изучайте документацию
    Изучение документации, размещенной на LG Developer в разделах Library и Technical Notes – это то, с чего должен начать каждый будущий Smart TV разработчик. Документация включает в себя подробное описание LG Web API, возможностей платформы Netcast и всевозможные спецификации. Особое внимание следует уделить документы под названием LG Smart TV and Media Product UI Guideline – он содержит требования к пользовательскому интерфейсу, которые должны неукоснительно соблюдаться.
    2. Не доверяйте документации
    Не смотря на то, что представленная на сайте LG Developer документация станет основным Вашим источником информации по разработке, не стоит доверять ей безоговорочно, проверяйте на практике те моменты, которые могут вызывать у вас сомнения. Возможности платформы зачастую шире, чем описано в документации.
    3. Используйте для тестирования реальные телевизоры
    В комплект LG Smart TV SDK входят эмуляторы телевизоров всех модельных рядов. Они неплохо работают и, безусловно, незаменимы в разработке. Тем не менее, очень важно на всех этапах создания приложения использовать для тестирования реальные телевизоры (желательно разных годов выпуска), поскольку эмуляторы не могут учесть всех особенностей платформы и актуальных прошивок. В противном случае вы рискуете получить приложение, замечательно работающее в эмуляторе, но не запускающееся на телевизоре.
    4. Начинайте с простого
    Не пытайтесь с самого начала создать лучшее в мире приложение – это верный способ погрязнуть в дрязгах с QA и затянуть вывод продукта на рынок на долгие-долгие месяцы. На мой взгляд, гораздо проще и правильней будет создать относительно простое, но полнофункционального приложения, безупречное с точки зрения «гайдлайнов» и постепенно улучшать его функциональных характеристики.
    5. Не делайте packaged-приложения
    С точки зрения размещения исходного кода приложение может быть packaged (размещенное на сервере LG, полностью копируется на телевизор пользователя при установке) и hosted(запускается с телевизора пользователя по ссылке). На внесение любого изменения в packaged-приложение у вас уйдет минимум неделя, поскольку в этом случае весь процесс верификации в LG QA происходит заново, от и до. Изменения могут быть связаны не только с Вашим желанием расширить функционал, но и с исправлением выявленных в ходе эксплуатации продукта недочетов. Но даже если Ваше приложение сегодня работает безупречно, нет никаких гарантий, что завтра, с выходом новой прошивки оно будет работать также. Поэтому всегда следует иметь возможность для оперативного вмешательства.
    6. Не используйте сторонние библиотеки типа jQuery или backbone
    Очень важно помнить, что телевизор – это не компьютер: ресурсы, выделяемые под работу Smart TV приложений довольно таки ограничены и расходовать их следует очень аккуратно. Использование сторонних библиотек, которые на первый взгляд позволяют упростить процесс разработки, может привести к существенным потерям в производительности и невозможности последующего улучшения продукта. Более правильным подходом здесь будет создание собственных библиотек, адаптированных под реальные нужды и учитывающую специфику платформы.
    7. Не включайте в приложение примеры с сайта LG Develop
    Примеры, размещенные в разделе Tools and Samples не могут пройти контроль качества. Это факт. Вы можете использовать их для ознакомления с возможностями той или иной функции API, но делать их составной частью готового решения нельзя.
    8. Тщательно оформляйте сопроводительную документацию
    Сопроводительная документация к приложению включает в себя Self checklist и презентацию со скриншотами, детально описывающую работу приложения. Документация заполняется на английском языке.
    Self checklist представляет собой опросник, затрагивающий основные проблемы, возникающие при разработке приложений: вы должны заявить, что в Вашем продукте эти проблемы отражения не нашли. Ответы на вопросы не могут оставаться пустыми или иметь значение failed – это означает автоматический отказ на самом первом этапе тестирования. Если вы встречаете в опроснике противоречия с «гайдлайнами», помните, что статус «гайдалайнов» выше, а обязательность их исполнения — безусловна.
    Презентация должна очень подробно описывать структуру и функциональность Вашего приложения, все спорные ситуации (use cases) обязательно должны быть отражены в ней. Зачастую, если тестеров не устраивает тот или иной use case, достаточно внести его в презентацию и указать на это в комментарии к приложению.

    Вот, пожалуй, и все на сегодня, надеюсь данный материал будет Вам полезен.
    Разумеется, здесь затронуты только базовые аспекты процесса разработки — более тонкие моменты будут отражены в следующей статье.
    Simple Smart IPTV
    15.23
    Company
    Share post

    Comments 17

      +1
      Вижу, что не только у конечного пользователя возникают проблемы с такой штукой как LG Smart TV.
      В настоящий момент единственная статья или приложение, которое я ожидаю это как заменить LG Smart TV на XBMC…
        0
        Насчет эмуляторов можете подсказать, нажимаю run/debug в lg ide, грузится эмулятор и ничего не происходит. С пульта каналы переключаются, картинки меняются, но приложение не стартует. Пробовал все три версии эмулятора 2011, 2012, 2013. Пробовал и примеры и пустышку типа хеловорлд.
          0
          Я не пользуюсь LG IDE. Попробуйте запустить приложение в эмуляторе вручную: на пульте нажимаете кнопку Menu -> Run Browser (это в эмуляторе 2012)
          Там вбиваете ссылку, по которой можно запустить приложение.
            0
            Какую IDE используете? И как настроили
              0
              Flash Develop используем с собственным SDK
          0
          Подскажите кому нибудь удалось смотреть rtsp поток на LG?
            0
            rtsp-потоки прекрасно запускаются в нашем приложении
              0
              я пробовал прописать, не открылось, а VLC показывает этот поток.
                0
                Тут может быть несовместимость кодеков конкретного потока, это довольно редко случается. Нам испанцы постоянно шлют плейлисты с rtsp-потоками, они прекрасно открываются. Вот здесь, собственно, об этом и пишут.
                  0
                  Я для проверки, пробовал в локальной сети телевизора, на ПК запустить трансляцию VLC по RTSP. В вашем приложении добавлял плейлист, адрес была вида rtsp://192.168.0.100:5000
                    0
                    Ну как я могу это прокомментировать? Я же не могу посмотреть поток в вашей локальной сети. Так или иначе, как я уже сказал, rtsp-потоки запускаются, ваша проблема, скорее всего, локального характера.
                      0
                      На другом ПК в этой сети, VLC показывает этот поток. Может надо ссылку по другому подавать?
                        0
                        Нет, ссылка нормального вида. Я же написал вам, что может быть несовместимость кодеков. Может быть неподходящий фреймрейт, битрейт. Что угодно может быть, надо смотреть конкретный поток, что с ним не так. Общая информация — rtsp-потоки работают. Подтверждение я вам привел. Почему не работает конкретно ваш поток, нужно разбираться отдельно.
            0
            > 3. Используйте для тестирования реальные телевизоры
            Я бы лучше сказал так: используйте цепочку инструментов: «браузер ПК — эмулятор — телевизор». Они убывают по удобству отладки и возрастают по своеобразности, отличиям от обычного браузера Webkit. Например, в телевизоре нет консоли, приходится выводить сообщения на экран или использовать удалённую консоль (эмулятор консоли). В этом плане процесс похож на отладку мобильных JS-приложений.

            > 6. Не используйте сторонние библиотеки типа jQuery или backbone
            На самом деле, не всё так страшно, но движок телевизора 12-го года раз в 10 медленнее (13-го — раз в 5-6) современного системного блока с i5-процессором. Если есть желание облегчить жизнь себе и коллегам за счёт использования jQuery-синтаксиса, лучше перейти на разработку на Zepto или jqMobi, или в крайнем случае, на jQuery 2.x — они свободны от поддержки IE, ориентированы на мобильные приложения, и тесты показывают, что исполняются в среднем 1.5 раза быстрее, но всё сильно зависит от конкретных задач — есть такие, где jQuery оптимизирован сильнее, что закономерно из-за объёма его кодов. Vanilla, конечно, бъёт всех, но вы попробуйте собрать команду разработчиков, где все умеют читать и писать на Vanilla.

            > 5. Не делайте packaged-приложения
            Для LG — это да, а вот у Самсунга открытым текстом написан запрет на подгрузку скриптов со стороны. Не знаю, как это согласуется с удобством исправления багов. Во всяком случае, при написании многоплатформенного приложения нужно быть готовым, что у разных вендоров — разные правила приёма приложений.

            9. Не надейтесь, что с каким бы то ни было SDK (не только и не столько LG) будет удобно работать из-под любой ОС. Чем специализированнее инструмент, тем больше в нём багов при запуске в конфигурациях, отличных от основной (не всегда известной) конфигурации, в которой отлаживали сам SDK. Для аналогии, вспомните nodeJS на Windows до версий 0.8-0.9. И с SDK так же, если не хуже (их меняют каждый год, поэтому на допиливание имеется ровно год, дальше — никому не интересно).
              +2
              Спасибо за пост.
              Очень хотелось бы увидеть следующим постом что-нибудь аля «Пишем первое приложение для LG SmartTV».
                0
                Подскажите, можно ли создать приложение, которое, как бы работая в фоне (как приложения из стандартной поставки вроде списка каналов), имело доступ к текущему аудио-потоку с тюнера, то есть «слышало» то, что сейчас идёт по телеканалу?
                  0
                  Средствами Web API нельзя.

                Only users with full accounts can post comments. Log in, please.