如何在没有IDE的情况下构build和部署三星智能电视应用程序(例如:在Linux上)

问题:

我想尝试使用三星SmartTV SDK 2.5(我有一个2011型号电视 – UA55D8000)build立一个概念validation的应用程序。

不幸的是,SDK有两种,只能在Microsoft Windows上运行。 这很奇怪,因为没有理由应该是这样的:电视本身运行Linux,应用程序是用JavaScript编写的。

这提出了两个问题:

  1. 由于我家里没有Microsoft Windows,我无法使用SDK附带的编译环境(也不是电视模拟器)。 (SDK文件本身就是JavaScript)

  2. 即使我有权访问Windows,也很难自动构build和testing应用程序,而无需访问传统的构build工具(例如:Make,Ant,Autotools等)

我如何在Linux上构build三星智能电视应用程序? (即:不使用SDK附带的基于Windows的构build工具)


到目前为止我已经弄清楚了:

从我能收集到的信息来看,一个JavaScript模式应用程序只是一个包含XMLconfiguration文件,一个或多个JavaScript文件(包括为平台SDK函数提供的JavaScript接口库)以及任何所需资产(HTML,图像等)的zip文件。

另外,从我收集的内容来看,部署包括将压缩文件和XML清单文件放置在电视可访问的networking服务器networking上,在电视上以“开发”formslogin,并将应用程序“同步”到电视。


有人可以指向我的源的完整部署要求和应用程序捆绑要求? 甚至只是一个工作样本?

我已经在我的Ubuntu机器上设置了一个开发环境的合理数量,我想在这里分享我的方法给任何想要做同样的事情的人。 这个答案是为了平台独立,所以同样的build议应该适用于任何完全成熟的操作系统。

介绍

首先,这个问题关于应用程序结构的假设是正确的。 一个JavaScript应用程序由以下项目组成:

  • config.xml ,一个定义各种设置和部署信息的简单configuration文件。 请参阅在官方开发人员网站上编写config.xml文件
  • widget.info ,一个非常小的文件,用于定义应用程序正文的不透明度。 对于全屏应用程序,这可能不是必需的。
  • index.html ,您的应用程序的主要HTML文件。
  • 图像,声音和其他资源

你可以用你最喜欢的编辑器来编写这些文件。 我很高兴为我的JS和CSS使用vim和linting插件。

testing

从SDK版本4.0开始,模拟器的Linux版本现在可用。 这可以让你testing你的应用程序,因为它们会出现在2011-2013电视上。 对于较老的电视机,您可以在Wine中运行SDK 1.5的模拟器,但属于SDK 2.0及更高版本的模拟器将无法运行 。

可以在Windows虚拟机中运行模拟器,并且有一些小小的诡计,您可以使模拟器使用您自己的应用程序文件夹来查找应用程序。 这涉及到与虚拟机共享您的开发文件夹,然后创build一个到这些文件夹的符号链接,replaceSDK安装目录中的“apps”文件夹。 这个过程的快速概述可以在标题为“ 您的Windows IDE很糟糕 ”的文章中find 在Mac上用您最喜爱的编辑器replace它!

部署

三星智能电视有一个内置的开发者帐户,允许您从电脑发送一个应用程序,在电视本身进行实时testing。 您input部署服务器的IP地址,电视将在该服务器上查找名为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 ,并确保这两个文件托pipe在你的机器上运行的Web服务器。 你可以使用Apache,lighttpd或其他东西。 我有一个小的node.js / connect应用程序,它将根据我在标记为deploy的目录中的zip文件dynamic地构buildwidgetlist.xml

所以你有它。 三星智能电视应用程序的开发没有Windows没有不可能的。 事实上,有很多选项可用。 万岁!

他们现在发布了Smart TV SDK 4.0,其中包括对Linux和Mac OS X的支持: http : //www.samsungdforum.com/SamsungDForum/NewsView?newsID=27

“除了基于Eclipse的应用程序编辑器之外,一个新的基于Linux的模拟器已经发布。
该仿真器在Virtual Box虚拟化工具中运行的Ubuntu虚拟机中执行。“

■2013年Linux平台上的function(第一版)

  • 应用框架
  • App Engine / WebKit
  • UniPlayer
  • 海基会(服务扩展框架)

你需要注册到三星D论坛,然后你可以从https://www.samsungdforum.com/Devtools/SdkDownload下载SDK

我没有看到任何答案中提到的一个技巧是,电视将尝试打开一个套接字连接的应用程序被下载的机器的端口45634(与widgetlist.xml)。

所有debugging(alerts()调用)将通过此端口发送,以允许远程debugging。

我使用NetCat打开一个端口并转储所有日志,如下所示:

 nc -l 45634 

我已经为一个我一无所知的主题创build了这个答案,但是我确实发现了一些在我的方向上投掷红旗的东西…… 赏金与否。

首先,我看了一下你的WineHQ Bug Report ,看看这个问题是否已经解决了,但是在写这篇文章的时候还没有完成。 我注意到bug报告有一个参考链接,我点击并遵循的讨论

在讨论中machine-code generated dump-errorcertificate是有益的。

参考:

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的lightbox插件的网页项目上工作。 该项目不在本地服务器上,只在子文件夹的子文件夹中 。 它在Firefox和Chrome中运行良好,但IE浏览器阻塞, 并没有从插件样式表中呈现任何CSS 。 因为我对Shadowbox非常熟悉,所以我百分之百地相信这不是插件 。 所以我开始在箱子外面思考,经过考验和磨难,我发现罪魁祸首就是真正的道路

我已经为在Path中使用/test(v1)/的项目创build了一个子文件夹 ,这就是破坏IE8 。 一旦我删除括号 ,CSS正确加载。 对于使用Vista and IE9的论坛会员来说,同样的解决scheme也是一个CSS问题的原因,所以可以想象的是,这些问题也与Wine有关

这是什么问题? 它在path名中使用非法字符括号 。 我会停下来说,只是因为它是通向index.html文件的文件path( 并且在编码中只使用了相对path – 圆括号不能被转义 – 而基本标签失败 ),所以说URL的名称。

Firefox和Chrome是原谅的,但不是IE浏览器。 即使你可能不使用IE浏览器,这个问题可能会延伸到这个范围之外。

我的解决scheme是不要在文件path的任何部分使用parentheseswhitespaces 。 虽然这可能无法解决这个特定的错误,但至less当file path成为任何需求的URL path例如,访问用作video播放器的SWF对象)时,您将不会遇到沙盒Wine问题。 如果IE浏览器不可宽恕,其他embedded式浏览器或编程模块也是如此。

推荐的:

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

请注意,上述内容不使用Program Files (x86)文件夹,因为不能根据操作系统的要求进行更改。 有了这样的path,一定会减less,如果不是消除,任何无法预料的错误。 干杯!

我知道这是一个老问题,但是由于我正在钻研这个过程,我想我会分享一些链接。 请享用!

有关智能电视平台开发的体面快速入门指南: http : //www.samsungdforum.com/Guide/c02/index.html 。

这些是最低的项目要求和一些示例文件: http : //www.samsungdforum.com/Guide/art00011/index.html 。

对于喜欢用命令行做所有事情的人来说,smarttvjs( http://smarttvjs.org )已经变得非常简单:

  • $ smarttvjs init#创build示例项目
  • …做一些发展(IDE也不是必需的)
  • $ smarttvjs构build三星(为三星创build一个包)
  • $ smarttvjs运行三星#launch模拟器