web-dev-qa-db-fra.com

Comment créer et déployer une application Samsung Smart TV sans le IDE (par exemple: sous Linux)

Problème:

J'aimerais essayer de créer une application de preuve de concept à l'aide du Samsung SmartTV SDK 2.5 (j'ai un téléviseur modèle 2011 - UA55D8000).

Malheureusement, le SDK est disponible en deux variétés qui ne semblent fonctionner que sur Microsoft Windows. C'est bizarre car il n'y a aucune raison que ce soit le cas: les téléviseurs eux-mêmes tournent sous Linux et les applications sont écrites en JavaScript.

Cela pose deux problèmes:

  1. Comme je n'ai pas Microsoft Windows à la maison, je ne peux pas utiliser l'environnement de construction (ni l'émulateur TV) fourni avec le SDK. (Les fichiers SDK eux-mêmes sont juste JavaScript)

  2. Même si j'avais accès à Windows, il est très difficile d'automatiser la construction et le test des applications sans accéder aux outils de construction traditionnels (par exemple: Make, Ant, Autotools, etc.)

Comment créer des applications Samsung Smart TV sous Linux? (c'est-à-dire: sans utiliser les outils de construction Windows fournis avec le SDK)


Ce que j'ai découvert jusqu'à présent:

D'après ce que je peux comprendre, une application en mode JavaScript est simplement un fichier Zip contenant un fichier de configuration XML, un ou plusieurs fichiers JavaScript (y compris les bibliothèques d'interface JavaScript fournies pour les fonctions SDK de la plate-forme), et tous les actifs requis (HTML, images, etc.).

De plus, d'après ce que je comprends, le déploiement implique de placer le fichier Zip et un fichier manifeste XML sur un réseau de serveur Web accessible au téléviseur, de se connecter en tant que "développement" sur le téléviseur et de "synchroniser" l'application avec les applications installées sur le LA TÉLÉ.


Quelqu'un pourrait-il m'indiquer une source pour les exigences de déploiement complètes et les exigences de bundle d'applications? Ou même juste un échantillon de travail?

42
David-SkyMesh

J'ai eu un succès raisonnable en installant un environnement de développement sur ma machine Ubuntu et j'aimerais partager mes méthodes ici pour quiconque cherche à faire de même. Cette réponse est destinée à être indépendante de la plateforme, donc les mêmes conseils devraient fonctionner sur n'importe quel système d'exploitation à part entière.

Introduction

Tout d'abord, les hypothèses de la question concernant la structure de l'application sont correctes. Une application JavaScript comprend les éléments suivants:

  • config.xml , un fichier de configuration simple définissant divers paramètres et informations de déploiement. Voir Écriture du fichier config.xml sur le site officiel des développeurs.
  • widget.info , un très petit fichier de quelques lignes utilisé pour définir l'opacité du corps de l'application. Cela peut ne pas être nécessaire pour les applications plein écran.
  • index.html , le fichier HTML principal de votre application.
  • Images, sons et autres ressources .

Vous pouvez écrire ces fichiers en utilisant votre éditeur préféré. J'utilise avec plaisir vim avec des plugins linting pour mon JS et CSS.

Essai

Depuis la version 4.0 du SDK, une version Linux de l'émulateur est désormais disponible. Cela vous permet de tester vos applications telles qu'elles apparaissent sur les téléviseurs 2011-2013. Pour les téléviseurs plus anciens, vous pouvez exécuter l'émulateur du SDK 1.5 dans Wine, mais les émulateurs appartenant au SDK 2.0 et aux versions plus récentes ne fonctionneront pas .

Il est possible d'exécuter les émulateurs dans une machine virtuelle Windows, et, avec un peu de ruse, vous pouvez faire en sorte que les émulateurs utilisent votre propre dossier d'application pour rechercher des applications. Cela implique de partager vos dossiers de développement avec votre machine virtuelle, puis de créer un lien symbolique vers ces dossiers, en remplaçant le dossier "apps" dans le répertoire d'installation du SDK. Un aperçu rapide de ce processus est disponible dans un article intitulé, Votre Windows IDE est nul? Remplacez-le par votre éditeur préféré sur le Mac !

Déploiement

Les téléviseurs intelligents Samsung ont un compte de développeur intégré qui vous permet d'envoyer une application depuis votre ordinateur pour des tests en direct sur le téléviseur lui-même. Vous entrez l'adresse IP de votre serveur de déploiement et le téléviseur recherchera un fichier appelé widgetlist.xml sur ce serveur. Un exemple de format est le suivant:

<?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>

Après cela, il téléchargera chaque application répertoriée à l'aide de l'URL dans le <download> tag. Tout ce que vous avez à faire est de compresser les fichiers, modifiez le widgetlist.xml en conséquence et assurez-vous que les deux fichiers sont hébergés sur un serveur Web fonctionnant sur votre machine. Vous pouvez utiliser Apache, lighttpd ou n'importe quoi. J'ai une petite application node.js/connect qui va construire dynamiquement le widgetlist.xml basé sur les fichiers Zip que j'ai dans un répertoire nommé deploy.

Alors voilà. Le développement d'applications Samsung Smart TV n'est pas impossible sans Windows. En fait, plusieurs options sont disponibles. Hourra!

59
Andy E

Ils ont maintenant publié Smart TV SDK 4.0 qui prend en charge Linux et Mac OS X: http://www.samsungdforum.com/SamsungDForum/NewsView?newsID=27

"En plus de l'éditeur d'application basé sur Eclipse, un nouvel émulateur basé sur Linux a été publié.
Cet émulateur s'exécute dans une machine virtuelle Ubuntu exécutée dans l'outil de virtualisation Virtual Box. "

■ Fonctionnalités de la plateforme 2013 sur Linux (première version)

  • Framework d'applications
  • App Engine/WebKit
  • UniPlayer
  • SEF (Service Extension Framework)

Vous devez vous inscrire au forum Samsung D, puis vous pouvez télécharger le SDK à partir de https://www.samsungdforum.com/Devtools/SdkDownload

8
yelmu

Une astuce que je n'ai pas vue mentionnée dans aucune des réponses, est que le téléviseur tentera d'ouvrir une connexion socket sur le port 45634 de la machine à partir de laquelle l'application a été téléchargée (celle avec le widgetlist.xml).

Tous les débogages (alertes () appels) seront envoyés sur ce port, permettant un débogage à distance.

J'utilise NetCat pour ouvrir un port et vider tous les journaux, comme ceci:

nc -l 45634
7
Steve

Je sais que c'est une vieille question, mais depuis que je plonge dans le processus, je me suis dit que je partagerais quelques liens. Prendre plaisir!

Guide de démarrage rapide décent sur le développement de la plate-forme Smart TV: http://www.samsungdforum.com/Guide/c02/index.html .

Ce sont les exigences minimales du projet et quelques exemples de fichiers: http://www.samsungdforum.com/Guide/art00011/index.html .

4
Zach Nicoll

J'ai créé cette réponse pour un sujet que je ne connais pas, mais j'ai quand même repéré quelque chose qui a jeté un drapeau rouge dans ma direction ... bounty ou pas.

Tout d'abord, j'ai regardé votre Rapport de bogue WineHQ pour voir si ce problème a été résolu, mais il est toujours en attente au moment de la rédaction de cet article . J'ai remarqué que le rapport de bogue avait un lien de référence vers la discussion sur laquelle j'ai cliqué et suivi.

Regarder le machine-code generated dump-error Dans cette discussion s'est avéré instructif.

Référence:

Z:\home\andy.wine\drive_c\Program Files (x86)\Samsung\Samsung TV SDK (3.5.2)\Emulator\Emulator2012_v3.5\bin\Emulator2.exe

Le Path ci-dessus est l'emplacement du fichier à l'origine du vidage. Ce chemin est le drapeau rouge que j'ai mentionné.

Permettez-moi de revenir un peu en arrière et d'expliquer ce que j'ai appris sur Windows XP SP3 Et IE8 Qui peuvent très bien s'appliquer ici, ou vous pouvez descendre jusqu'à la ligne avec le texte en gras.

J'ai travaillé sur un projet de page Web qui utilisait un plugin lightbox appelé Shadowbox. Ce projet n'était pas sur un serveur local, juste dans un sous-dossier d'un sous-dossier. Cela fonctionne très bien dans Firefox et Chrome mais IE étranglé et n'a pas rendu de CSS à partir de la feuille de style des plugins. Parce que j'étais très familier avec Shadowbox, j'étais 100% convaincu que c'était pas le plugin. J'ai donc commencé à penser hors des sentiers battus, et à travers des épreuves et des tribulations j'ai découvert que le coupable était juste le chemin réel !

J'avais créé un sous-dossier pour le projet qui utilisait /test(v1)/ dans le Path et c'est ce qui a cassé IE8. Une fois que j'ai supprimé les parenthèses , le CSS a été chargé correctement. Cette même solution a également été à l'origine d'un problème CSS pour un membre du forum qui a utilisé Vista and IE9, Donc il est concevable que ces problèmes soient également liés à Wine.

Quel problème est-ce? Il utilise des caractères illégaux , les parenthèses, dans le nom du chemin. Je vais m'arrêter brièvement et dire le nom de l'URL uniquement parce que c'est le chemin d'accès au fichier index.html ( et seuls les chemins relatifs ont été utilisés dans le codage - les parenthèses n'ont pas pu être échappées - et la balise de base a échoué).

Firefox et Chrome étaient indulgents, mais pas IE. Même si vous n'utilisez pas IE, il est possible que ce problème se prolonge en dehors de cela.

Ma solution est de ne pas utiliser parentheses ou whitespaces dans n'importe quelle partie de votre chemin de fichier. Bien que cela ne puisse pas résoudre ce bogue particulier, au moins vous n'aurez pas de problèmes de sandbox Wine lorsque file path Deviendra un URL path Pour n'importe quelle exigence ( par exemple, accéder à un SWF objet à utiliser comme lecteur vidéo). Si IE les navigateurs sont impitoyables, il en va de même pour les autres navigateurs intégrés ou modules de programmation.

Recommandé:

Z:\home\andy.wine\drive_c\Samsung\Samsung_TV SDK_3.5.2\Emulator\Emulator2012_v3.5\bin\Emulator2.exe

Notez que ce qui précède n'utilise pas le dossier Program Files (x86) car cela ne peut pas être modifié selon les exigences du système d'exploitation. Avoir un tel chemin réduira sûrement, sinon éliminera, les erreurs imprévues. À votre santé!

4
arttronics

Pour les gens qui aiment tout faire avec la ligne de commande, smarttvjs ( http://smarttvjs.org ) a rendu les choses très faciles:

  • $ smarttvjs init #create exemple de projet
  • ... faire du développement (l'IDE n'est ni requis)
  • $ smarttvjs build samsung (créer un package pour samsung)
  • $ smarttvjs exécute le simulateur samsung #launch
1
yawl