问题:

我想try 使用三星智能电视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模式的应用程序只是包含一个XML配置文件、一个或多个JavaScript文件(包括为平台SDK函数提供的JavaScript接口库)和任何必需assets资源 (HTML、图像等)的zip文件.

此外,据我所知,部署包括将zip文件和XML list 文件放在电视可访问的web服务器网络上,在电视上以"开发"身份登录,并将应用程序与电视上安装的应用程序"同步".


有人能给我指一下全面部署要求的来源吗&应用包要求?甚至只是一个工作样本?

推荐答案

我在我的Ubuntu机器上建立了一个开发环境,取得了相当大的成功,我想在这里分享我的方法,供任何希望这样做的人使用.这个答案是独立于平台的,所以同样的建议应该适用于任何成熟的操作系统.

介绍

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

  • config.xml,一个定义各种设置和部署信息的简单配置文件.参见官方开发者网站上的Writing the config.xml File.
  • widget.info是一个非常小的文件,其中有几行用于定义应用程序主体的不透明度.对于全屏应用程序,这可能不是必需的.
  • index.html,应用程序的主HTML文件.
  • Images, sounds and other resources

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

测试

从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!"的文章中,可以快速概述这个过程

部署

三星智能电视(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或任何东西.我有一个小 node .js/connect应用程序,将根据我在标记为deploy的目录中的zip文件动态构建widgetlist.xml.

好了.没有Windows,三星智能电视应用的开发并非不可能.事实上,有很多 Select .好极了

Linux相关问答推荐

为什么Read()和cin.get()对输出缓冲区的影响不同?

列出Linux上特定目录和子目录名称的bash命令

删除一行和它之前的一行

linux shell 脚本获取文件夹中

linux shell获取多文件交集

根据其他列的值创建一个新列

什么是`quote`命令?

仅显示 tcsh 或 bash 中作为符号链接的文件和文件夹

MessageBox 的 GTK 实现

是否可以使用 shell 脚本递归地创建文件夹?

Git为每次推送输入长密码

Linux 上的 C++ 开发 - 我从哪里开始?

将以前忽略的目录添加到 Git 存储库

如何删除 Mercurial 存储库

zsh/bash 上不区分大小写的 Glob

比较linux中两个未排序的列表,列出第二个文件中的唯一性

如何显示正在运行的进程列表 Python?

GNU Octave 方法对矩阵中的每个项目进行操作.octave arrayfun(...)示例

如何通过进程名获取PID?

Linux 中合理数量的 inotify 监视是多少?