【问题标题】:How to build & deploy a Samsung SmartTV app without the IDE (e.g: on Linux)如何在没有 IDE 的情况下构建和部署三星 SmartTV 应用程序(例如:在 Linux 上)
【发布时间】:2012-10-07 06:30:05
【问题描述】:

问题:

我想尝试使用三星 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 服务器网络上,在电视上以“开发”身份登录并将应用程序“同步”到已安装的电视上的应用程序。


有人能给我指出完整部署要求和应用程序包要求的来源吗?或者只是一个工作样本?

【问题讨论】:

  • 真的,太狭隘了:所有不使用 Windows 的智能电视开发人员?如果有帮助,这个问题将独立于 smarttv sdk 版本和电视型号 - 仅在影响部署要求的情况下提及
  • @Jim Garrison 和其他版主。你不应该结束这个问题,因为它很合理。三星 SDK 仅适用于 Windows,但实际上没有它也可以进行开发。当您拥有 linux 或 Mac 时,您别无选择。回到主题……是的,您需要在 LAN 中显示清单文件(例如:192.168.0.1/widgetlist.xml),并且在内部您需要有指向您的应用程序 ZIP 文件的有效 URL。您可以在此处下载工作示例:samsungdforum.com/Guide/art00021/downloads/…
  • @Dobiatowski。感谢您的应用示例!我还找到了 BrightCove 示例,以及 SmartMythTV (sourceforge.net/projects/smartmythtv/files)。所有这些示例应该足以确定各种 App 捆绑包的可能性。我能够使用 Wireshark 以及 SmartMythTV 的可公开访问的部署(详细信息:sourceforge.net/p/smartmythtv/wiki/Home)来获取示例清单文件。两者的完整规格都会很方便:-)
  • @Dobiatowski 没有主持人参与关闭此问题。它已被具有投票关闭权限的普通用户关闭。
  • 您能否编辑您的问题并解释为什么拥有 Microsoft Windows 操作系统很重要?

标签: javascript linux samsung-smart-tv


【解决方案1】:

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

简介

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

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

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

测试

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

可以在 Windows 虚拟机中运行模拟器,并且通过一些技巧,您可以让模拟器使用您自己的应用程序文件夹来查找应用程序。这包括与您的虚拟机共享您的开发文件夹,然后创建指向这些文件夹的符号链接,替换 SDK 安装目录中的“apps”文件夹。标题为Your Windows IDE sucks? Replace it with Your Favorite Editor on the 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>

之后,它将下载使用&lt;download&gt; 标记中的 URL 列出的每个应用程序。您所要做的就是压缩文件,相应地修改 widgetlist.xml 并确保这两个文件都托管在您机器上运行的 Web 服务器中。你可以使用 Apache、lighttpd 或任何东西。我有一个小型 node.js/connect 应用程序,它将根据我在标记为 deploy 的目录中的 zip 文件动态构建 widgetlist.xml

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

【讨论】:

  • 我最终从 smartmythtv 应用程序中获得了一些示例部署文件。感谢您的精彩文章!
  • @David-SkyMesh 您是否打算将这个“hello world”示例作为 OSS 上传到 github 上的某个地方?
  • 它不是一个“hello world”应用程序。正如我在 cmets 中提到的问题本身,它是一个真正的应用程序(在“野外”)。与大多数应用程序不同,SmartMythTV 不是由三星托管,而是您使用“开发”帐户登录,以便您可以直接从 SmartMythTV 的部署存储库安装它。我不确定确切的许可证(因为我没有派生它的代码 - 我不在乎),但是代码本身也托管在 Sourceforce 上:sourceforge.net/projects/smartmythtv/files
  • @Andy E,请注意 .NET Framework 2.0 是三星 SmartTV SDK 的要求,这表明您可能想要使用名为 @ 的 Linux 变体987654325@.
  • @arttronics:谢谢。 Mono 从 1.5.6 开始就包含在 wine 中,并在需要时自动安装,所以我认为这不是问题。但是,我确实尝试安装它,但仍然没有运气:-(
【解决方案2】:

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

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

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

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

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

【讨论】:

【解决方案3】:

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

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

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

nc -l 45634

【讨论】:

【解决方案4】:

我为一个我一无所知的话题创建了这个答案,但我确实发现了一些向我的方向投掷危险信号的东西...... 与否。 p>

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

查看讨论中的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 的灯箱插件。该项目不在本地服务器上,只是在子文件夹的子文件夹中。它在 Firefox 和 Chrome 中运行良好,但 IE 阻塞并且 没有从插件样式表中呈现任何 CSS。因为我对 Shadowbox 非常熟悉,所以我 100% 确信它不是插件。于是我开始跳出框框思考,通过考验和磨难我发现罪魁祸首只是实际路径

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

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

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

我的解决方案是不要在文件路径的任何部分使用 parentheseswhitespaces。虽然这可能无法解决这个特定的错误,但至少当 file path 因任何要求(例如,访问要用作视频的 SWF 对象)变为 URL path 时,您不会遇到 Wine 沙盒问题播放器)。如果 IE 浏览器是无情的,那么其他嵌入式浏览器或编程模块也是如此。

推荐:

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

请注意,以上内容不使用 Program Files (x86) 文件夹,因为无法根据操作系统要求进行更改。拥有这样的路径肯定会减少(如果不能消除)任何不可预见的错误。干杯!

【讨论】:

  • 感谢您跳出框框思考,但不幸的是,没有运气。
  • @AndyE,我很高兴提出您的赏金问题注意。干杯!
【解决方案5】:

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

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

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

【讨论】:

    【解决方案6】:

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

    • $smarttvjs init #create 示例项目
    • ...做一些开发(IDE 也不是必需的)
    • $smarttvjs build samsung(为 三星)
    • $smarttvjs 运行三星#launch 模拟器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-03
      • 2014-07-11
      • 1970-01-01
      • 2021-03-29
      • 2011-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多