it-swarm.com.de

Erstellen und Bereitstellen einer Samsung Smart TV-App ohne IDE (z. B .: unter Linux)

Problem:

Ich möchte versuchen, eine Proof-of-Concept-App mit dem Samsung SmartTV SDK 2.5 zu erstellen (ich habe ein TV-Modell von 2011 - UA55D8000).

Leider gibt es das SDK in zwei Varianten, die anscheinend nur unter Microsoft Windows funktionieren. Es ist seltsam, weil es keinen Grund gibt, warum es so sein sollte: Auf den Fernsehgeräten wird Linux ausgeführt, und die Anwendungen sind in JavaScript geschrieben.

Dies wirft zwei Probleme auf:

  1. Da ich zu Hause kein Microsoft Windows habe, kann ich weder die mit dem SDK gelieferte Build-Umgebung (noch den TV-Emulator) verwenden. (Die SDK-Dateien selbst sind nur JavaScript)

  2. Selbst wenn ich Zugriff auf Windows hatte, ist es sehr schwierig, das Erstellen und Testen von Apps ohne Zugriff auf herkömmliche Build-Tools (z. B. Make, Ant, Autotools usw.) zu automatisieren.

Wie kann ich Samsung Smart TV-Anwendungen unter Linux erstellen? (d. h. ohne Verwendung der Windows-basierten Build-Tools, die mit dem SDK geliefert werden)


Was ich bisher herausgefunden habe:

Soweit ich weiß, handelt es sich bei einer Anwendung im JavaScript-Modus um eine Zip-Datei, die eine XML-Konfigurationsdatei, eine oder mehrere JavaScript-Dateien (einschließlich der mitgelieferten JavaScript-Schnittstellenbibliotheken für Plattform-SDK-Funktionen) und alle erforderlichen Elemente (HTML, Bilder usw.) enthält.

Soweit ich weiß, umfasst die Bereitstellung auch das Platzieren der Zip-Datei und einer XML-Manifestdatei in einem Webservernetzwerk, auf das der Fernseher zugreifen kann, das Anmelden als "Entwickeln" auf dem Fernseher und das "Synchronisieren" der Anwendung mit den installierten Anwendungen auf dem Fernseher FERNSEHER.


Könnte mich jemand auf eine Quelle für die vollständigen Bereitstellungs- und App-Bundle-Anforderungen hinweisen? Oder nur eine Arbeitsprobe?

42
David-SkyMesh

Ich hatte einigermaßen Erfolg beim Einrichten einer Entwicklungsumgebung auf meinem Ubuntu-Rechner und möchte meine Methoden hier allen mitteilen, die das Gleiche tun möchten. Diese Antwort soll plattformunabhängig sein, daher sollte der gleiche Rat auf jedem vollwertigen Betriebssystem gelten.

Einführung

Zunächst einmal sind die Annahmen der Frage bezüglich der App-Struktur korrekt. Eine JavaScript-Anwendung besteht aus folgenden Elementen:

  • config.xml , eine einfache Konfigurationsdatei, die verschiedene Einstellungen und Bereitstellungsinformationen definiert. Siehe Schreiben der config.xml-Datei auf der offiziellen Entwicklerseite.
  • widget.info , eine sehr kleine Datei mit einigen Zeilen, mit denen die Deckkraft des Hauptteils der Anwendung definiert wird. Dies ist für Vollbildanwendungen möglicherweise nicht erforderlich.
  • index.html , die Haupt-HTML-Datei für Ihre Anwendung.
  • Bilder, Töne und andere Ressourcen .

Sie können diese Dateien mit Ihrem bevorzugten Editor schreiben. Ich benutze gerne vim mit fusselnden Plugins für mein JS und CSS.

Testen

Ab Version 4.0 des SDK ist jetzt eine Linux-Version des Emulators verfügbar. Auf diese Weise können Sie Ihre Apps so testen, wie sie auf Fernsehgeräten 2011-2013 angezeigt werden. Bei älteren Fernsehgeräten können Sie den Emulator von SDK 1.5 in Wine ausführen, jedoch Emulatoren, die zu SDK 2.0 und höher gehören wird nicht ausgeführt .

Es ist is möglich, die Emulatoren in einer virtuellen Windows-Maschine auszuführen, und mit ein wenig Trick können Sie die Emulatoren dazu bringen, Ihren eigenen Anwendungsordner zu verwenden, um nach Apps zu suchen. Dazu müssen Sie Ihre Entwicklungsordner für Ihre virtuelle Maschine freigeben und anschließend eine symbolische Verknüpfung zu diesen Ordnern erstellen. Dabei wird der Ordner "apps" im Installationsverzeichnis des SDK ersetzt. Eine kurze Übersicht über diesen Vorgang finden Sie in einem Artikel mit dem Titel: Ihr Windows IDE saugt? Ersetzen Sie ihn auf dem Mac durch Ihren bevorzugten Editor !

Einsatz

Samsung Smart TVs verfügen über ein integriertes Entwicklerkonto, mit dem Sie eine Anwendung von Ihrem Computer aus senden können, um sie live auf dem Fernseher selbst zu testen. Geben Sie die IP-Adresse Ihres Bereitstellungsservers ein, und das Fernsehgerät sucht auf diesem Server nach einer Datei mit dem Namen widgetlist.xml. Ein Beispiel für das Format lautet wie folgt:

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

Danach wird jede App heruntergeladen, die unter Verwendung der URL im <download> Etikett. Sie müssen lediglich die Dateien komprimieren, widgetlist.xml entsprechend ändern und sicherstellen, dass beide Dateien auf einem auf Ihrem Computer ausgeführten Webserver gehostet werden. Sie können Apache, lighttpd oder alles verwenden. Ich habe eine kleine node.js/connect-App, die widgetlist.xml dynamisch basierend auf den Zip-Dateien erstellt, die ich in einem Verzeichnis mit der Bezeichnung deploy habe.

Also da hast du es. Die Entwicklung von Samsung Smart TV-Apps ist ohne Windows nicht unmöglich. In der Tat gibt es eine ganze Reihe von Optionen. Hurra!

59
Andy E

Sie haben jetzt das Smart TV SDK 4.0 veröffentlicht, das Unterstützung für Linux und Mac OS X enthält: http://www.samsungdforum.com/SamsungDForum/NewsView?newsID=27

"Zusätzlich zum Eclipse-basierten App Editor wurde ein neuer Linux-basierter Emulator veröffentlicht.
Dieser Emulator wird auf einer virtuellen Ubuntu-Maschine ausgeführt, die im Virtual Box-Virtualisierungstool ausgeführt wird. "

■ Funktionen für 2013 Platform unter Linux (erste Version)

  • Apps Framework
  • App Engine/WebKit
  • UniPlayer
  • SEF (Service Extension Framework)

Sie müssen sich im Samsung D-Forum registrieren und können dann das SDK von https://www.samsungdforum.com/Devtools/SdkDownload herunterladen

8
yelmu

Ein Tipp, den ich in keiner der Antworten gesehen habe, ist, dass der Fernseher versucht, eine Socket-Verbindung an Port 45634 des Computers herzustellen, von dem die App heruntergeladen wurde (der mit der widgetlist.xml).

Alle Debugging (alerts () -Aufrufe) werden über diesen Port gesendet, sodass ein Remote-Debugging möglich ist.

Ich benutze NetCat, um einen Port zu öffnen und alle Protokolle zu sichern:

nc -l 45634
7
Steve

Ich weiß, dass es eine alte Frage ist, aber da ich mich mit dem Prozess befasse, habe ich mir gedacht, dass ich einige Links teilen würde. Genießen!

Anständige Kurzanleitung zur Entwicklung für die Smart TV-Plattform: http://www.samsungdforum.com/Guide/c02/index.html .

Dies sind die minimalen Projektanforderungen und einige Beispieldateien: http://www.samsungdforum.com/Guide/art00011/index.html .

4
Zach Nicoll

Ich habe diese Antwort für ein Thema erstellt, von dem ich nichts weiß, aber trotzdem habe ich etwas entdeckt, das eine rote Fahne in meine Richtung geworfen hat ... Kopfgeld oder nicht .

Zuerst habe ich mir Ihren WineHQ Bug Report ​​ angesehen, um zu sehen, ob dieses Problem behoben wurde, es steht jedoch zum jetzigen Zeitpunkt noch aus. Mir ist aufgefallen, dass der Fehlerbericht einen Verweis auf die Diskussion enthält, auf den ich geklickt habe und dem ich gefolgt bin.

Ein Blick auf den machine-code generated dump-error In diese Diskussion hat sich als informativ erwiesen.

Referenz:

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

Das obige Path ist der Speicherort der Datei, die den Speicherauszug verursacht hat. Dieser Pfad ist die rote Flagge, die ich erwähnt habe.

Lassen Sie mich ein wenig zurückgehen und erklären, was ich über Windows XP SP3 Und IE8 Gelernt habe, die hier sehr gut zutreffen können, oder Sie können bis zur Zeile mit dem fett gedruckten Text springen.

Ich habe an einem Webseitenprojekt mit dem Lightbox-Plugin Shadowbox gearbeitet. Dieses Projekt befand sich nicht auf einem lokalen Server, sondern nur in einem nterordner eines Unterordners. Es funktioniert gut in Firefox und Chrome aber IE erstickt und hat kein CSS gerendert aus dem Plugins-Stylesheet Ich war mit Shadowbox sehr vertraut und zu 100% davon überzeugt, dass es sich um nicht um das Plugin handelt. Also fing ich an, außerhalb der Box zu überlegen und entdeckte Prüfungen und Schwierigkeiten Der Täter war nur der tatsächliche Pfad!

Ich hatte einen nterordner für das Projekt erstellt, das /test(v1)/ im Path verwendete, und das hat IE8 Gebrochen. Nachdem ich das Klammern entfernt hatte, wurde das CSS korrekt geladen. Dieselbe Lösung war auch die Ursache für ein CSS-Problem eines Forumsmitglieds, das Vista and IE9 Verwendete, also es ist denkbar, dass diese Probleme auch bei Wine liegen.

Was ist das für ein Problem? Es werden nzulässige Zeichen, die Klammern im Pfadnamen verwendet. Ich halte inne und sage den URL-Namen nur, weil er der Dateipfad ist, der zur Datei index.html Führt. (nd nur relative Pfade wurden beim Codieren verwendet - Klammern konnten nicht maskiert werden - und Basis-Tag schlug fehl).

Firefox und Chrome waren verzeihend, aber nicht IE. Auch wenn Sie IE möglicherweise nicht verwenden, ist es möglich, dass sich dieses Problem darüber hinaus erstreckt.

Meine Lösung besteht darin, in keinem Teil Ihres Dateipfads parentheses oder whitespaces zu verwenden. Obwohl dies diesen bestimmten Fehler möglicherweise nicht behebt, werden Sie zumindest keine Probleme mit Sandbox Wine haben, wenn file path Für eine beliebige Anforderung (z. B. Zugriff auf ein SWF-Objekt) zu URL path Wird als Videoplayer verwenden). Wenn IE Browser nicht nachgiebig sind, können auch andere eingebettete Browser oder Programmiermodule.

Empfohlen:

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

Beachten Sie, dass der oben genannte Ordner den Ordner Program Files (x86) nicht verwendet, da dieser nicht gemäß den Anforderungen des Betriebssystems geändert werden kann. Ein solcher Weg wird sicherlich alle unvorhergesehenen Fehler verringern oder sogar beseitigen. Prost!

4
arttronics

Für Leute, die gerne alles mit der Kommandozeile machen, hat es smarttvjs ( http://smarttvjs.org ) sehr einfach gemacht:

  • $ smarttvjs init #create Beispielprojekt
  • ... etwas Entwicklung machen (IDE ist nicht erforderlich)
  • $ smarttvjs build samsung (erstelle ein Paket für samsung)
  • $ smarttvjs führen den Samsung # Launch Simulator aus
1
yawl