43

问题:

我想尝试使用三星 SmartTV SDK 2.5 构建一个概念验证应用程序(我有一台 2011 年型号的电视 - UA55D8000)。

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

这提出了两个问题:

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

  2. 即使我可以访问 Windows,如果不使用传统的构建工具(例如:Make、Ant、Autotools 等),也很难自动构建和测试应用程序

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


到目前为止,我发现了什么:

据我所知,JavaScript 模式应用程序只是一个 zip 文件,其中包含一个 XML 配置文件、一个或多个 JavaScript 文件(包括为平台 SDK 功能提供的 JavaScript 接口库)以及任何所需的资产(HTML、图像等)。

此外,据我所知,部署涉及将 zip 文件和 XML 清单文件放在电视可访问的 Web 服务器网络上,在电视上以“开发”身份登录,并将应用程序“同步”到已安装的应用程序电视。


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

4

6 回答 6

60

我在我的 Ubuntu 机器上设置开发环境取得了相当大的成功,我想在这里分享我的方法给任何想要做同样事情的人。此答案旨在独立于平台,因此相同的建议应适用于任何成熟的操作系统。

介绍

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

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

您可以使用您喜欢的编辑器编写这些文件。我很乐意为我的 JS 和 CSS 使用带有 linting 插件的 vim 。

测试

从 SDK 4.0 版开始,现在可以使用 Linux 版本的模拟器。这允许您测试您的应用程序,因为它们会出现在 2011-2013 年的电视上。对于较旧的电视,您可以在 Wine 中运行 SDK 1.5 的模拟器,但属于 SDK 2.0 和更新版本的模拟器将无法运行

可以在 Windows 虚拟机运行模拟器,并且通过一些技巧,您可以让模拟器使用您自己的应用程序文件夹来查找应用程序。这包括与您的虚拟机共享您的开发文件夹,然后创建指向这些文件夹的符号链接,替换 SDK 安装目录中的“apps”文件夹。标题为“您的 Windows IDE 很糟糕? ”的文章对此过程进行了快速概述。在 Mac 上用您最喜欢的编辑器替换它!

部署

三星智能电视有一个内置的开发者帐户,允许您从计算机发送应用程序,以便在电视本身上进行实时测试。您输入部署服务器的 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并确保这两个文件都托管在您机器上运行的 Web 服务器中。你可以使用 Apache、lighttpd 或任何东西。我有一个小型 node.js/connect 应用程序,它将根据我在标记为deploy的目录中的 zip 文件动态构建widgetlist.xml

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

于 2012-12-12T13:33:18.410 回答
8

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

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

■ Linux 上 2013 平台的功能(第一版)

  • 应用程序框架
  • 应用引擎/WebKit
  • UniPlayer
  • SEF(服务扩展框架)

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

于 2013-01-16T15:32:17.137 回答
8

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

所有调试(alerts() 调用)都将通过此端口发送,从而允许远程调试。

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

nc -l 45634
于 2013-11-04T13:42:06.953 回答
4

我已经为一个我一无所知的主题创建了这个答案,但尽管如此,我确实发现了一些向我的方向投掷红旗的东西......与否。

首先,我查看了您的WineHQ 错误报告以查看此问题是否已解决,但在撰写本文时仍处于未决状态。我注意到错误报告有一个指向我点击并关注的讨论的参考链接。

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. 该项目不在本地服务器上,只是在subfolder 的子文件夹中。它在 Firefox 和 Chrome 中运行良好,但 IE 阻塞并且没有从插件样式表中呈现任何 CSS。因为我对 Shadowbox 非常熟悉,所以我 100% 确信它不是插件。于是我开始跳出思维势,历尽千辛万苦才发现,罪魁祸首就是真正的路径

我为在 中使用的项目创建了一个子文件,这就是破坏。一旦我删除了括号,CSS 就被正确加载了。同样的解决方案也是导致使用 的论坛成员出现 CSS 问题的原因,因此可以想象这些问题也与 Wine 有关/test(v1)/PathIE8Vista and IE9

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

Firefox 和 Chrome 是宽容的,但不是 IE。即使您可能没有使用 IE,这个问题也可能超出此范围。

我的解决方案是不要使用parentheseswhitespaces在文件路径的任何部分中使用。虽然这可能无法解决这个特定的错误,但至少您不会遇到 Wine 沙盒问题,因为这file path会成为URL path任何要求(例如,访问 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)文件夹,因为无法根据操作系统要求更改该文件夹。拥有这样的路径肯定会减少(如果不能消除)任何不可预见的错误。干杯!

于 2012-12-22T11:59:03.323 回答
4

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

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

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

于 2014-01-21T20:15:14.810 回答
1

对于喜欢用命令行做任何事情的人,smarttvjs ( http://smarttvjs.org ) 让它变得非常简单:

  • $smarttvjs init #创建示例项目
  • ... 做一些开发(IDE 也不是必需的)
  • $smarttvjs build samsung(为三星创建包)
  • $smarttvjs 运行三星#launch 模拟器
于 2015-04-25T03:41:56.773 回答