javascript - produccion - Cómo construir e implementar una aplicación Samsung SmartTV sin el IDE(por ejemplo, en Linux)
node js install (6)
Ahora han lanzado Smart TV SDK 4.0 que incluye soporte para Linux y Mac OS X: http://www.samsungdforum.com/SamsungDForum/NewsView?newsID=27
"Además del Editor de aplicaciones basado en Eclipse, se ha lanzado un nuevo Emulador basado en Linux.
Este emulador se ejecuta en una máquina virtual de Ubuntu que se ejecuta en la herramienta de virtualización de la caja virtual ".
■ Características para la plataforma 2013 en Linux (primera versión)
- Marco de aplicaciones
- App Engine / WebKit
- UniPlayer
- SEF (Service Extension Framework)
Debe registrarse en el foro de Samsung D y luego puede descargar el SDK desde https://www.samsungdforum.com/Devtools/SdkDownload
Problema:
Me gustaría intentar crear una aplicación de prueba de concepto con el Samsung SmartTV SDK 2.5 (tengo un modelo de TV 2011 - UA55D8000).
Desafortunadamente, el SDK viene en dos variedades que solo parecen funcionar en Microsoft Windows. Es extraño porque no hay razón para que sea así: los televisores que ejecutan Linux y las aplicaciones están escritos en JavaScript.
Esto presenta dos problemas:
Como no tengo Microsoft Windows en casa, no puedo usar el entorno de compilación (ni el emulador de TV) que viene con el SDK. (Los archivos SDK son solo JavaScript)
Incluso si tuviera acceso a Windows, es muy difícil automatizar la creación y prueba de las aplicaciones sin acceso a las herramientas de construcción tradicionales (por ejemplo: Make, Ant, Autotools, etc.)
¿Cómo puedo construir aplicaciones de Smart TV de Samsung en Linux? (es decir, sin usar las herramientas de compilación basadas en Windows que vienen con el SDK)
Lo que he descubierto hasta ahora:
De lo que puedo recopilar, una aplicación de modo JavaScript es simplemente un archivo zip que contiene un archivo de configuración XML, uno o más archivos JavaScript (incluidas las bibliotecas de interfaz JavaScript suministradas para las funciones de la plataforma SDK) y cualquier activo necesario (HTML, imágenes, etc.).
Además, de lo que recojo, la implementación implica colocar el archivo zip y un archivo de manifiesto XML en una red de servidor web accesible para el televisor, iniciar sesión como ''desarrollar'' en el televisor y ''sincronizar'' la aplicación con las aplicaciones instaladas en el TELEVISIÓN.
¿Alguien podría indicarme una fuente para los requisitos completos de implementación y los requisitos del paquete de aplicaciones? ¿O incluso solo una muestra de trabajo?
He creado esta Respuesta para un tema del que no sé nada, pero sin embargo, detecté algo que arrojó una bandera roja en mi dirección ... bounty o no.
Primero, miré su informe de errores de WineHQ para ver si este problema se resolvió, pero aún está pendiente en este momento. Me di cuenta de que el informe de error tenía un enlace de referencia a la discusión que hice clic y seguí.
Observar el machine-code generated dump-error
en esa discusión resultó ser informativo.
Referencia:
Z: / home / andy.wine / drive_c / Archivos de programa (x86) / Samsung / Samsung TV SDK (3.5.2) / Emulator / Emulator2012_v3.5 / bin / Emulator2.exe
La Path
anterior es la ubicación del archivo que causó el volcado. Ese camino es la bandera roja que mencioné.
Permítame hacer una copia de seguridad un poco y explicarle lo que aprendí acerca de Windows XP SP3
e IE8
que puede aplicar aquí, o puede saltar a la línea con el texto en negrita.
Trabajé en un proyecto de página web que usaba un complemento de lightbox llamado Shadowbox
. Ese proyecto no estaba en un servidor local, solo en una subcarpeta de una subcarpeta . Funciona bien en Firefox y Chrome, pero IE se atragantó y no procesó ningún CSS de la hoja de estilo de los complementos. Como estaba muy familiarizado con Shadowbox, estaba 100% convencido de que no era el complemento . Así que comencé a pensar fuera de la caja y, a través de pruebas y tribulaciones, ¡descubrí que el culpable era el camino real !
Creé una subcarpeta para el proyecto que usó /test(v1)/
en la Path
y eso es lo que rompió IE8
. Una vez que quité los paréntesis , el CSS se cargó correctamente. Esta misma solución también fue la causa de un problema de CSS para un miembro del foro que usó Vista and IE9
, por lo que es posible que estos problemas también se encuentren en Wine .
¿Qué problema es ese? Está usando caracteres ilegales , los paréntesis , en el nombre de la ruta. Me detendré brevemente y diré el nombre de la URL solo porque es la ruta del archivo que lleva al archivo index.html
( y solo se usaron las rutas relativas en la codificación (no se pudieron escapar los paréntesis) y la etiqueta base falló ).
Firefox y Chrome perdonaban, pero no IE. Aunque es posible que no esté utilizando IE, es posible que este problema se extienda más allá de eso.
Mi solución es no usar parentheses
o whitespaces
en whitespaces
en ninguna parte de su ruta de archivo. Si bien esto puede no resolver este error en particular, al menos no tendrá problemas con el Sandbox Wine para cuando la file path
convierta en una URL path
para cualquier requisito ( por ejemplo, acceder a un objeto SWF para usarlo como reproductor de video ). Si los navegadores IE no perdonan, también lo pueden hacer otros navegadores integrados o módulos de programación.
Recomendado:
Z: / inicio / andy.wine / drive_c / Samsung / Samsung_TV SDK_3.5.2 / Emulator / Emulator2012_v3.5 / bin / Emulator2.exe
Tenga en cuenta que lo anterior no utiliza la carpeta Program Files (x86)
ya que no se puede cambiar según los requisitos del sistema operativo. Tener este camino seguramente reducirá, si no elimina, cualquier error imprevisto. ¡Aclamaciones!
He tenido una cantidad razonable de éxito al configurar un entorno de desarrollo en mi máquina Ubuntu y me gustaría compartir mis métodos aquí para cualquiera que busque hacer lo mismo. Esta respuesta pretende ser independiente de la plataforma, por lo que el mismo consejo debería funcionar en cualquier sistema operativo de pleno derecho.
Introducción
En primer lugar, los supuestos de la pregunta con respecto a la estructura de la aplicación son correctos. Una aplicación de JavaScript consta de los siguientes elementos:
- config.xml , un archivo de configuración simple que define varias configuraciones e información de implementación. Consulte Cómo escribir el archivo config.xml en el sitio oficial para desarrolladores.
- widget.info , un archivo muy pequeño con unas pocas líneas que se usa para definir la opacidad del cuerpo de la aplicación. Esto puede no ser necesario para aplicaciones de pantalla completa.
- index.html , el archivo HTML principal para su aplicación.
- Imágenes, sonidos y otros recursos .
Puedes escribir estos archivos usando tu editor favorito. Estoy felizmente usando vim con complementos de linting para mi JS y CSS.
Pruebas
A partir de la versión 4.0 del SDK, ya está disponible una versión de Linux del emulador. Esto le permite probar sus aplicaciones como aparecerían en los televisores 2011-2013. Para televisores más antiguos, puede ejecutar el emulador del SDK 1.5 en Wine, pero los emuladores que pertenezcan al SDK 2.0 y más nuevos no se ejecutarán .
Es posible ejecutar los emuladores en una máquina virtual de Windows y, con un poco de trucos, puede hacer que los emuladores usen su propia carpeta de aplicaciones para buscar aplicaciones. Esto implica compartir sus carpetas de desarrollo con su máquina virtual, luego crear un enlace simbólico a esas carpetas, reemplazando la carpeta de "aplicaciones" dentro del directorio de instalación del SDK. Un resumen rápido de este proceso está disponible en un artículo titulado: ¿ Su IDE de Windows apesta? ¡Reemplázalo con tu editor favorito en la Mac!
Despliegue
Los televisores inteligentes Samsung tienen una cuenta de desarrollador integrada que le permite enviar una aplicación desde su computadora para realizar pruebas en vivo en el propio televisor. Usted ingresa la dirección IP de su servidor de implementación y el televisor buscará un archivo llamado widgetlist.xml en ese servidor. Un ejemplo del formato es el siguiente:
<?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>
Después de eso, descargará cada aplicación enumerada usando la URL en la etiqueta <download>
. Todo lo que tiene que hacer es comprimir los archivos, modificar el widgetlist.xml en consecuencia y asegurarse de que ambos archivos estén alojados en un servidor web que se ejecuta en su máquina. Puedes usar Apache, lighttpd o cualquier cosa. Tengo una pequeña aplicación node.js / connect que construirá el widgetlist.xml dinámicamente en función de los archivos zip que tengo en un directorio etiquetado como implementado .
Así que ahí lo tienen. El desarrollo de las aplicaciones de Samsung Smart TV no es imposible sin Windows. De hecho, hay bastantes opciones disponibles. ¡Hurra!
Para las personas que les gusta hacer todo con la línea de comandos, smarttvjs ( http://smarttvjs.org ) lo ha hecho muy fácil:
- $ smarttvjs init #create proyecto de muestra
- ... hacer algo de desarrollo (IDE no es requerido)
- $ smarttvjs build samsung (crear un paquete para samsung)
- $ smarttvjs run samsung #launch simulator
Sé que es una pregunta antigua, pero como estoy profundizando en el proceso, pensé en compartir algunos enlaces. ¡Disfrutar!
Guía de inicio rápido decente para el desarrollo de la plataforma de Smart TV: http://www.samsungdforum.com/Guide/c02/index.html .
Estos son los requisitos mínimos del proyecto y algunos archivos de ejemplo: http://www.samsungdforum.com/Guide/art00011/index.html .
Una sugerencia que no he visto mencionada en ninguna de las respuestas es que el televisor intentará abrir una conexión de socket en el puerto 45634 de la máquina desde donde se descargó la aplicación (la que tiene el widgetlistlist.xml).
Toda la depuración (alertas () llamadas), se enviará a través de este puerto, permitiendo la depuración remota.
Utilizo NetCat para abrir un puerto y volcar todos los registros, así:
nc -l 45634