web-dev-qa-db-ja.com

IDEなしでSamsung Smart TVアプリをビルドおよびデプロイする方法(例:Linuxの場合)

問題:

Samsung SmartTV SDK 2.5(2011年モデルのテレビ-UA55D8000を使用)を使用して、概念実証アプリを構築してみたいと思います。

残念ながら、SDKには2つの種類があり、Microsoft Windowsでのみ動作するようです。理由はないからです。テレビ自体がLinuxを実行し、アプリケーションがJavaScriptで記述されているためです。

これには2つの問題があります。

  1. 私は自宅にMicrosoft Windowsを持っていないため、SDKに付属のビルド環境(またはTVエミュレーター)を使用できません。 (SDKファイル自体は単なるJavaScriptです)

  2. Windowsにアクセスできたとしても、従来のビルドツール(例:Make、Ant、Autotoolsなど)にアクセスせずに、アプリのビルドとテストを自動化することは非常に困難です

LinuxでSamsung Smart TVアプリケーションを構築するにはどうすればよいですか? (つまり、SDKに付属のWindowsベースのビルドツールを使用せずに)


私がこれまでに理解したこと:

私が収集できるものから、JavaScriptモードアプリケーションは、XML構成ファイル、1つ以上のJavaScriptファイル(プラットフォームSDK機能用に提供されたJavaScriptインターフェイスライブラリを含む)、および必要なアセット(HTML、画像など)を含む単なるZipファイルです。

また、私が収集したものから、展開には、ZipファイルとXMLマニフェストファイルをテレビにアクセス可能なWebサーバーネットワークに配置し、テレビで「開発」としてログインし、インストールされているアプリケーションにアプリケーションを「同期」することが含まれますテレビ。


誰かが私に完全な展開要件とアプリバンドル要件のソースを教えてもらえますか?それとも、実際に動作するサンプルですか?

42
David-SkyMesh

私はUbuntuマシンで開発環境を設定するのにかなりの成功を収めました。同じことをしたい人のためにここで私の方法を共有したいと思います。この答えはプラットフォームに依存しないことを意図しているため、同じアドバイスが本格的なオペレーティングシステムでも機能するはずです。

前書き

まず、アプリの構造に関する質問の仮定は正しいです。 JavaScriptアプリケーションは、次のアイテムで構成されています。

  • config.xml、さまざまな設定と展開情報を定義する単純な構成ファイル。公式開発者サイトの config.xmlファイルの作成 を参照してください。
  • widget.info、アプリケーション本体の不透明度を定義するために使用される数行の非常に小さなファイル。これは、フルスクリーンアプリケーションでは必要ない場合があります。
  • index.html、アプリケーションのメインHTMLファイル。
  • 画像、音声、その他のリソース

これらのファイルは、お気に入りのエディターを使用して作成できます。私は喜んでvimをJSとCSSのリンティングプラグインで使用しています。

テスト中

SDKのバージョン4.0の時点で、Linuxバージョンのエミュレーターが利用可能になりました。これにより、2011〜2013年のテレビに表示されるアプリをテストできます。古いテレビの場合、WineでSDK 1.5のエミュレーターを実行できますが、SDK 2.0以降に属するエミュレーターは 実行しない です。

is Windows仮想マシンでエミュレーターを実行することができます。少しだけ巧妙に、エミュレーターが独自のアプリケーションフォルダーを使用してアプリを検索できるようにします。これには、開発フォルダーを仮想マシンと共有し、それらのフォルダーへのシンボリックリンクを作成して、SDKのインストールディレクトリ内の「apps」フォルダーを置き換えることが含まれます。 Your Windows IDE sucks?Replace on Your Favorite Editor on the Mac! というタイトルの記事で、このプロセスの概要を確認できます。 =

展開

Samsung Smart TVには組み込みの開発者アカウントがあり、コンピューターからアプリケーションを送信して、テレビ自体でライブテストを行うことができます。展開サーバーのIPアドレスを入力すると、TVはそのサーバーでwidgetlist.xmlというファイルを探します。形式の例は次のとおりです。

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

その後、<download>タグのURLを使用してリストされた各アプリをダウンロードします。必要なことは、ファイルを圧縮してwidgetlist.xmlを修正し、両方のファイルがマシンで実行されているWebサーバーでホストされていることを確認することだけです。 Apache、lighttpdなどを使用できます。 deployというラベルのディレクトリにあるZipファイルに基づいてwidgetlist.xmlを動的に構築する小さなnode.js/connectアプリがあります。

だからあなたはそれを持っています。 Samsung Smart TVアプリの開発は、Windowsなしでは不可能ではありません。実際、利用可能なオプションはかなりあります。やった!

59
Andy E

LinuxおよびMac OS Xのサポートを含むSmart TV SDK 4.0をリリースしました: http://www.samsungdforum.com/SamsungDForum/NewsView?newsID=27

「EclipseベースのApp Editorに加えて、新しいLinuxベースのエミュレーターがリリースされました。
このエミュレータは、Virtual Box仮想化ツールで実行されるUbuntu仮想マシンで実行されます。」

■Linux上の2013プラットフォームの機能(初回リリース)

  • アプリフレームワーク
  • App Engine/WebKit
  • UniPlayer
  • SEF(サービス拡張フレームワーク)

Samsung Dフォーラムに登録する必要があり、SDKを https://www.samsungdforum.com/Devtools/SdkDownload からダウンロードできます。

8
yelmu

私が答えのどれにも言及していない1つのヒントは、テレビがアプリのダウンロード元のマシン(widgetlist.xmlを持つもの)のポート45634でソケット接続を開こうとすることです。

すべてのデバッグ(alerts()呼び出し)は、このポートを介して送信され、リモートデバッグが可能になります。

NetCatを使用してポートを開き、次のようにすべてのログをダンプします。

nc -l 45634
7
Steve

それは古い質問だと知っていますが、プロセスを詳しく調べているので、いくつかのリンクを共有すると思いました。楽しい!

スマートTVプラットフォーム向けの開発に関するまともなクイックスタートガイド: http://www.samsungdforum.com/Guide/c02/index.html

これらは、プロジェクトの最小要件といくつかのサンプルファイルです: http://www.samsungdforum.com/Guide/art00011/index.html

4
Zach Nicoll

私は何も知らないトピックのためにこの回答を作成しましたが、それでも私の方向に赤い旗を投げた何かを見つけました... bounty or not。

まず、 WineHQ Bug Report を見て、この問題が解決されたかどうかを確認しましたが、この記事の執筆時点ではまだ保留中です。バグレポートには、 ディスカッション への参照リンクがあることに気付きました。

その議論machine-code generated dump-errorを見ると有益であることがわかりました。

参照:

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

上記のPathは、ダンプの原因となったファイルの場所です。 そのパスは私が言及した赤い旗です。

少しバックアップして、Windows XP SP3IE8について学んだことを説明しましょう。これは非常によく当てはまるかもしれませんが、太字のテキストの行までスキップすることもできます。

Shadowboxというライトボックスプラグインを使用するWebページプロジェクトに取り組みました。そのプロジェクトはローカルサーバー上ではなく、サブフォルダーのサブフォルダー内にありました。 Firefoxでは正常に動作し、ChromeがIE chokedで、プラグインスタイルシートからCSSをレンダリングしませんでした。 Shadowboxに非常に精通し、私はそれがプラグインではないであると100%確信していました。だから私は箱の外を考え始め、試練と苦難犯人はただ実際のパスでした!

Path/test(v1)/を使用するプロジェクト用にサブフォルダーを作成しましたが、それがIE8を壊しました。 括弧を削除すると、CSSは正しくロードされました。この同じ解決策は、Vista and IE9を使用したフォーラムメンバーのCSS問題の原因でもあったため、これらの問題がWineにもあると考えられます

それはどんな問題ですか?パス名に違法文字カッコを使用しています。 index.htmlファイルへのファイルパスであるため、短い名前でURL名を言います(および相対パスのみがコーディングで使用されました-括弧をエスケープできませんでした-ベースタグが失敗しました)。

FirefoxとChromeは寛容でしたが、IEはそうではありませんでした。IEを使用していない場合でも、この問題はそれ以外にも及ぶ可能性があります。

私の解決策は、parenthesesまたはwhitespacesファイルパスの任意の部分。これはこの特定のバグを解決しないかもしれませんが、少なくとも、file pathがどんな要件でもURL pathになるときのサンドボックスWineの問題はありません(例えば、ビデオプレーヤーとして使用されるSWFオブジェクトへのアクセス )。 IEブラウザが容赦ない場合、他の組み込みブラウザまたはプログラミングモジュールも同様です。

推奨:

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

上記はProgram Files (x86)フォルダーを使用しないことに注意してください。これはOS要件ごとに変更できないためです。このようなパスを使用すると、予期しないエラーを排除できなくても確実に削減できます。乾杯!

4
arttronics

コマンドラインを使用してすべてを行うのが好きな人のために、smarttvjs( http://smarttvjs.org )によって非常に簡単になりました:

  • $ smarttvjs init #createサンプルプロジェクト
  • ...何らかの開発を行います(IDEは必要ありません)
  • $ smarttvjs build samsung(samsung用のパッケージを作成)
  • $ smarttvjsはsamsung #launchシミュレーターを実行します
1
yawl