42 votes

Comment construire et déployer une application Samsung SmartTV sans l'IDE (par exemple, sur Linux)

Problème :

Je voudrais essayer de construire une application de preuve de concept en utilisant le Samsung SmartTV SDK 2.5 (j'ai un téléviseur modèle 2011 - UA55D8000).

Malheureusement, le SDK existe en deux versions qui semblent uniquement fonctionner sous Microsoft Windows. C'est étrange car il n'y a aucune raison que ce soit le cas : les télévisions elles-mêmes fonctionnent sous Linux et les applications sont écrites en JavaScript.

Cela pose deux problèmes :

  1. Comme je n'ai pas Windows à la maison, je ne peux pas utiliser l'environnement de construction (ni l'émulateur de TV) fourni avec le SDK. (Les fichiers du SDK sont simplement en 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ès aux outils de construction traditionnels (par exemple : Make, Ant, Autotools, etc)

Comment puis-je construire des applications Samsung Smart TV sur Linux ? (c'est-à-dire sans utiliser les outils de construction basés sur Windows fournis avec le SDK)


Ce que j'ai compris jusqu'à présent :

D'après ce que j'ai pu rassembler, une application en mode JavaScript est simplement un fichier zip contenant un fichier de configuration XML, un ou plusieurs fichiers JavaScript (y compris des 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 de manifeste XML sur un serveur web accessible en réseau par la TV, de se connecter en tant que 'develop' sur la TV et de 'synchroniser' l'application avec les applications installées sur la TV.


Quelqu'un pourrait-il me diriger vers une source pour les exigences complètes de déploiement et les exigences du bundle d'application ? Ou même juste un exemple fonctionnel ?

59voto

Andy E Points 132925

J'ai eu un succès raisonnable en configurant un environnement de développement sur ma machine Ubuntu et je voudrais partager mes méthodes ici pour ceux qui souhaitent faire la même chose. Cette réponse est censée être indépendante de la plate-forme, donc les mêmes conseils devraient fonctionner sur tout système d'exploitation complet.

Introduction

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

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

Vous pouvez écrire ces fichiers avec votre éditeur préféré. J'utilise avec joie vim avec des plugins de vérification pour mon JS et mon CSS.

Test

À partir de la version 4.0 du SDK, une version Linux de l'émulateur est maintenant disponible. Cela vous permet de tester vos applications telles qu'elles apparaîtraient sur les téléviseurs de 2011 à 2013. Pour les anciens téléviseurs, vous pouvez exécuter l'émulateur du SDK 1.5 sous Wine, mais les émulateurs appartenant au SDK 2.0 et plus récent 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" à l'intérieur du répertoire d'installation du SDK. Un aperçu rapide de ce processus est disponible dans un article intitulé Your Windows IDE sucks? Replace it with Your Favorite Editor on the Mac!

Déploiement

Les Smart TV de Samsung disposent d'un compte de développement intégré qui vous permet d'envoyer une application depuis votre ordinateur pour un test en direct sur le téléviseur lui-même. Vous saisissez l'adresse IP de votre serveur de déploiement et la télévision recherchera un fichier appelé widgetlist.xml sur ce serveur. Un exemple du format est le suivant :

      MyTVApp

      Une application de base pour les téléviseurs Samsung
      http://192.168.1.83/Widget/MyTVApp_0.1_America_20120709.zip

Ensuite, il téléchargera chaque application répertoriée en utilisant l'URL dans la balise . Il vous suffit de zipper les fichiers, de modifier le widgetlist.xml en conséquence et de vous assurer 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 générera dynamiquement le widgetlist.xml en fonction des fichiers zip que j'ai dans un répertoire étiqueté deploy.

Voilà. Le développement d'applications pour les Smart TV de Samsung n'est pas impossible sans Windows. En fait, il existe plusieurs options disponibles. Hourra !

8voto

yelmu Points 71

Ils ont maintenant sorti le Smart TV SDK 4.0 qui inclut le support pour 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 qui est exécutée dans l'outil de virtualisation Virtual Box."

■ Caractéristiques pour la plate-forme 2013 sur Linux (Première version)

  • Cadre d'applications
  • Moteur d'application / WebKit
  • UniPlayer
  • SEF (Service Extension Framework)

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

7voto

Steve Points 4289

Un conseil que je n'ai pas vu mentionné dans aucune des réponses, c'est que la télévision tentera d'ouvrir une connexion de 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 (appels alerts()), seront envoyés via ce port, permettant le débogage à distance.

Je utilise NetCat pour ouvrir un port et déverser tous les logs, comme ceci :

nc -l 45634

4voto

arttronics Points 8520

J'ai créé cette réponse pour un sujet que je ne connais pas du tout, mais j'ai quand même repéré quelque chose qui a attiré mon attention... prime ou pas.

Tout d'abord, j'ai regardé votre Rapport de bug WineHQ pour voir si ce problème avait été résolu, mais il est encore en attente à l'heure où j'écris ces lignes. J'ai remarqué que le rapport de bug contenait un lien de référence vers la discussion que j'ai cliqué et suivie.

En regardant le dump d'erreur généré par le code machine dans cette discussion s'est révélé 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 Chemin ci-dessus est l'emplacement du fichier qui a causé le dump. Ce chemin est le point d'interrogation que j'ai mentionné.

Permettez-moi de reculer un peu et d'expliquer ce que j'ai appris sur Windows XP SP3 et IE8 qui pourrait très bien s'appliquer ici, ou vous pouvez sauter à la ligne 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. Ça marchait bien dans Firefox et Chrome mais IE a coincé et n'a pas rendu de CSS à partir de la feuille de style du plugin. Comme j'étais très familier avec Shadowbox, j'étais convaincu à 100% que ce n'é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 Chemin et c'est ce qui a cassé IE8. Une fois que j'ai enlevé les parenthèses, le CSS était chargé correctement. Cette même solution a également été la cause d'un problème CSS pour un membre du forum qui utilisait Vista et IE9, donc il est concevable que ces problèmes se trouvent également dans Wine.

Quel est ce problème ? C'est l'utilisation de caractères non valides, les parenthèses, dans le nom du chemin. Je vais m'arrêter là et dire le nom de l'URL uniquement parce que c'est le chemin d'accès au fichier index.html (et seuls des chemins relatifs ont été utilisés dans le codage - les parenthèses ne pouvaient pas ê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 dépasse cela.

Ma solution est de ne pas utiliser de parenthèses ou espaces dans une partie quelconque de votre chemin d'accès aux fichiers. Bien que cela ne résolve pas ce bug particulier, au moins vous n'aurez pas de problèmes de sandbox Wine lorsque ce chemin d'accès au fichier deviendra un chemin d'accès URL pour n'importe quel besoin (par exemple, accéder à un objet SWF à utiliser comme lecteur vidéo). Si les navigateurs IE ne pardonnessent pas, il en va de même pour d'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

Remarquez que ce qui précède n'utilise pas le dossier Program Files (x86) car cela ne peut pas être changé selon les exigences du système d'exploitation. Avoir un tel chemin réduira sûrement, voire éliminera, toute erreur imprévue. Santé !

4voto

Zachary Nicoll Points 126

Je sais que c'est une vieille question, mais comme je me plonge dans le processus, j'ai pensé partager quelques liens. Profitez-en!

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

Voici les exigences minimales du projet et quelques fichiers d'exemple : http://www.samsungdforum.com/Guide/art00011/index.html.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X