building your first app
这篇教程将带你创建第一个HP WebOS应用,教程将展示一个简单的Button计数器应用来代替一个HelloWorld类的程序。看完该教程后,你将会对stages,scenes,assistants以及其他一些重要的概念熟悉。
before you begin
这篇教程帮你搭建一个简单的WebOS应用来验证你的开发工具工作正常,教程假设你已经对JavaScript和HTML非常的熟悉,如果你刚接触HTML和Javascript的开发,我们将推荐给新开发者一些链接资源,他们获取会对你有用
在你开始你的一个WebOS应用之前,请安装HP WebOS SDK。ADK中安装了一些命令行工具,为你即将些的创建,打包,安装以及Debugging应用程序这些工作有所帮助。这个安装页面里也告诉你怎么样下载 Oracle VirtualBox工具,一个虚拟机环境。SDK将安装在虚拟机上来模拟Desktop下的WebOS环境
请熟悉一下你的模拟环境,确认你知道怎样从模拟设备中开启应用程序(通过点击WebOS主屏幕右下方的箭头图片,你能够使用运行主菜单),模拟设备会想真的Palm设备一样工作,但是你的电脑键盘将会被占用,你的鼠标也会被占用,请使用ESC按键来模拟back操作。
你能够些一个WebOS的应用,使用HP命令行工具或者你喜爱的文本编辑器,或者一些Web开发工具。你可以使用Eclipse的WebOS插件来进行简单的Debugging,packaging,installing,and running webos 应用程序。更多的信息,请查看Eclipse.
the application directory
webos应用程序目录拥有特殊的结构,下面的说明将向你展示怎样去使用webos sdk命令行工具去建立一个应用目录结构并且创建一个应用需求的文件集。
(如果你使用Eclipse WebOS插件,请选择File-new-mojo application,输入HelloWorld作为这个项目的名字和标题,其他Fields接受默认选项即可,点击Finish完成Application Framework)
建立一个应用目录结构
1.开启windows命令行,为应用开发建立一个工作空间
2.在工作空间的目录下,输入下面的命令
palm-generate -p "{title:'Hello World', id:com.mystuff.hello, version:'1.0.0'}" HelloWorld
查看一下HelloWorld文件夹中的内容。
*app folder包含了assistants,models和应用程序的一些view,在随后的教程中,你可以在此目录下添加一些文件
*images folder包含了一些程序需要使用的图片
*stylesheets folder包含了一些CSS文件
*appinfo.json是程序的应用信息文件
*icon.png是在模拟机上运行该程序时显示的程序图标
*index.html是应用程序主要显示的信息
*sources.json是每一屏需要的资源文件列表
更多关于应用目录结构的信息,请查看Application Stucture。
Application information
appinfo.json提供了一些SDK使用包以及运行程序所需要的信息。我们一起来看一下appinfo.json的内容:
{
"id": "com.mystuff.hello",
"version": "1.0.0",
"vendor": "My Company",
"type": "web",
"main": "index.html",
"title": "Hello World",
"icon": "icon.png"
}
注意id和vendor参数,当你在设备上运行一个已经签名的应用时,他们会非常有用。
Setting the stage
stage是你为应用建立用户接口的一个平台。stage通常相当于一个card或者一个应用窗口。大多数简单的应用都会有单独一个stage,它包含了index.html文件。需要用户执行多个action的应用可能会需要多个stage,例如,一个email的应用可能要用一个stage来展示收件箱,同时也需要第二个stage去撰写一个新的Email信息。通知和后台程序根本不需要stages。
看一下下面的index.html的内容
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
<script src="/usr/palm/frameworks/mojo/mojo.js"
type="text/javascript" x-mojo-version="1"></script>
<!-- application stylesheet should come in after the one loaded by the framework -->
<link href="/stylesheets/helloworld.css" media="screen" rel="stylesheet" type="text/css">
</head>
</html>
注意index.html是一个典型的HTML页面,他具有script标签是webos应用sdk架构要求的。尽管它没有那么多,不过是时候你可以在虚拟webos上运行一下你的程序了。
Starting the Emulator
按照下面的操作去做:
*Linux: 在命令行模式下,输入 palm-emulator
*Mac: 在应用文件夹下,双击 Emulator图标
*Windows: 选择 Start-All Programs-Palm-SDK-Emulator
Running Applications on the Emulator
如果你使用Eclipse WebOS插件,你能够运行模拟器通过选择Run -- Run Configurations...,然后选择“Palm Emulator” 作为你的应用名标签,在随后的动作中选择Run -- Run As --Mojo Application。 Eclipse将自动打包,安装,运行这个应用。在Eclipse环境下,每次运行你都不需要卸载该程序。
如果你使用命令行工具,那么通过使用SDK中的WebOS工具你可以运行该应用程序。
把流程做了下面4个部分的划分:
*在虚拟设备上打包安装应用程序
*在命令行下运行应用程序
*在命令行下关闭应用程序
*在模拟器上删除应用程序
注意:
*Hello,World的例子在实际应用中是需要改变的
*工作空间包含了所有的应用目录
*你如果不删除你的前置版本软件,不重新打包重新安装应用的话,在开发和Debugging中你的改变可能不会出现。
*安装新版本应用时,没有移除原任何资源文件,那么改变也不会出现。因此在测试期间,在安装新版本应用时删除旧版本应用显得非常有必要。
在虚拟设备上打包安装应用程序
1.开启模拟器
2.打开window命令行窗口,然后进入workspace工作空间
3.使用palm-package命令作为打包应用程序的命令
palm-package HelloWorld
4.使用palm安装命令安装后最为ipk的文件(注意如果你的模拟器没有运行,但是你有一个WebOS的设备,那么你可以用USB连接你的电脑,如果你的设备选择了开发模式,它将安装这个IPK到你的设备上,你将在你的应用程序菜单中看到这个应用图标,当把设备上的应用程序想在电脑上运行时,请选择设备上的Just Charge选项)
palm-install com.mystuff.hello_1.0.0_all.ipk
在命令行下运行应用程序
1.如果模拟器没有开启,请开启模拟器
2.开启windows命令行窗口,并进入到工作空间目录下
3.使用palm-launch 命令
palm-launch com.mystuff.hello
在命令行下关闭应用
1.如果模拟器没有开启,请开启模拟器
2.开启windows命令行窗口,并进入到工作空间目录下
3.使用palm-launch 命令
palm-launch -c com.mystuff.hello
在模拟器上删除应用程序
1.如果模拟器没有开启,请开启模拟器
2.开启windows命令行窗口,并进入到工作空间目录下
3.使用palm-install 命令
palm-install -r com.mystuff.hello
在你打包安装完HelloWorld应用之后,在命令行中可以运行它,或者在模拟器上选择Launcher -- Hello World(默认是新月图标)下面的屏幕将会打开
【图片不翻译了,这里是一张HelloWorld的HTML页面,空白页面】
更多的信息请查看模拟器。
Creating a Scene
Scene长江是一个呈现信息或者用户任务的有规范格式的屏幕。每个场景拥有一个视图或者一个assistant。视图定义了场景的布局和外貌。assistant定义了行为。有些场景也拥有models,支持数据。
palm-generate命令能够创建场景和行为,它在sources.json中添加了一些内容,使得场景和行为有了关系。在下一步中,我们将使用它去创建一个叫first的场景,它包括以下文件。
* /app/assistants/first-assistant.js —This is the assistant.(行为)
* /app/views/first/first-scene.html —This is the view.(视图)
* sources.json —This file now includes JSON information that binds first-assistant.js to the first scene.(这个文件包含了JSON信息,能够把first-assistant.js绑定到first场景中)
Create and edit the first scene
1.打开命令行窗口,进入到工作空间目录
2.使用palm-generate命令
palm-generate -t new_scene -p "name:first" HelloWorld
命令将创建first-assistant.js和first-scene.html
3.打开first-scene.html用以下的代码来替换其中的内容
<div id="main" class="palm-hasheader">
<div class="palm-header">Header</div>
<div id="count" class="palm-body-text">0</div>
<div id="MyButton" name="MyButton1" x-mojo-element="Button"></div>
</div>
事实上为了能够展示这个场景,你必须告诉stage去push这个场景,在下一节中,你将添加代码到stage assistant.
Stage Assistant
类似一个视图,stage也有一个assistant。在这个简单的应用中,stage assistant的任务是把场景push进去,使它可见。stage assistant是一个叫stage-assistant.js的文件,它在assistants目录下,包含了2个功能。
*StageAssistant()是一个构造器
*setup()在stage运行并把first scene压入时,这个方法被调用
Push the applicatiom scene
1.打开stage-assistant.js
2.编辑StageAssistant.prototype.setup方法如下内容:
StageAssistant.prototype.setup = function() {
this.controller.pushScene("first");
};
这个应用现在拥有了一个stage和一个场景,为了使应用更具有功能性,你需要些一些代码到场景assistant中
Script Writing
最后,是时候让该应用具有生命力了,为了使场景中的button具有功能性,应有应该添加对button的处理。用户每次按button时,新的工作就是去每次更新文本。
Add a button handler function
1.打开first-assistant.js
2.添加下面的代码:
FirstAssistant.prototype.handleButtonPress = function(event){
// increment the total and update the display
this.total++;
this.controller.get("count").update(this.total);
};
当你注册该处理作为该button的监听器之后,这个框架将会在每次button按下时调用这个处理。这个处理一定会被框架响应,我们要将这个Handler和它的情景以及Dom绑定起来。下面的例子告诉我们这2步:
*使用bind()方法,绑定处理器到情景范围
*注册处理作为一个监听器,使用Mojo.Event.listen()
Bind and register the handler
1.打开 first-assistant.js
2.编辑setup功能,用以下的代码
FirstAssistant.prototype.setup = function() {
// set the initial total and display it
this.total = 0;
this.controller.get("count").update(this.total);
// a local object for button attributes
this.buttonAttributes = {};
// a local object for button model
this.buttonModel = {
"label" : "TAP HERE",
"buttonClass" : "",
"disabled" : false
};
// set up the button
this.controller.setupWidget("MyButton", this.buttonAttributes, this.buttonModel);
// bind the button to its handler
Mojo.Event.listen(this.controller.get("MyButton"), Mojo.Event.tap,
this.handleButtonPress.bind(this));
};
Conclusion
现在你已经改变了原文件,创建了第一个场景,你必须重新打包,重新安装这个应用。以查看应用被完成
当你运行应用时,它将会展示你已经按了按钮多少次得数字。如果你没有看到下面的屏幕,你需要修改你的代码。看一看是否有单词拼写累的错误,在修改之后,你可能需要删除原有的应用,重新打包重新安装。
Where to Go from Here
*想要获取更多关于webos应用的信息,请查看应用基础
*想获得更多代码的信息,请查看例子
*想获得webos工具的信息,请查看widgets
分享到:
相关推荐
webos-ports-setup 用于设置LuneOS开发环境的帮助程序脚本有关各种目标的详细LuneOS构建说明以及如何使用webos-ports-setup可以在以下位置找到: HP触摸板(里脊肉): ://webos-ports.org/wiki/Build_for_...
ilib-loctool-webos-qml ilib-webos-loctool-qml是loctool的插件,允许它读取和本地化qml文件。 该插件针对webOS平台进行了优化。发行说明v1.2.0 解析前删除注释行,以使注释中的字符串不会被提取。 v1.1.1 更新了...
Homebridge-Webos-电视LG WebOS电视的HomeKit集成应该如何 homebridge-webos-tv是homebridge的插件,它使您可以从Home应用程序控制LG webOS TV! 它应可与所有支持webOS2及更高版本的电视一起使用。 如果您已经在...
Qt5 QPA webOS插件建造要求Linux PC 掌上SDK如何建立Qt 从下载Qt来源( qt-everywhere-opensource-src-5.9.5.tar.xz )并将其解压缩到某个地方。 mkdir /home/nizovn/webos/qt5/qt5.9tar xvf qt-everywhere-open...
bitmovin-player-webos-demo 该存储库包含一个示例应用程序,该应用程序在LG WebOS上使用了Bitmovin HTML5 Player(版本8) 在WebOS IDE中使用示例应用程序 下载 使用webOS IDE打开示例应用程序 连接电视设备。 本...
webos-ipk-转储 PHP 脚本,它使用您的手掌配置文件为您安装的应用程序下载和 tar IPK。 要求(Windows EXE)### WebOS 访问令牌(* Palm Profile) WebOS 设备 ndUid(* 设备配置文件,**) WebOS 安装的应用程序...
ilib-loctool-webos-appinfo-json ilib-loctool-webos-appinfo-json是loctool的插件,允许它读取和本地化appinfo.json文件。 该插件针对webOS平台进行了优化 发行说明 v1.2.4 已将美国英语翻译数据更改为位于资源...
ilib-loctool-webos-ts-资源ilib-loctool-webos-ts-resource是loctool的插件,允许它读取和本地化ts资源文件。 该插件针对webOS平台进行了优化。发行说明v1.2.2 更新了代码以生成资源,即使源和目标相同。 v1.2.1 ...
lg-webos-client = " 0.1.0 " tokio = { version = " 1.2.0 " , default-features = false , features = [ " full " ] } 然后写代码 use lg_webos_client :: {Command, WebosClient}; use std :: time :: Durati
"Domoticz-LGTV-WebOS-Plugin"正是为了将这两者完美结合而诞生的插件,让您的LG电视成为家庭自动化网络的一部分。 该插件的核心是通过Python编程语言实现与LG电视WebOS 3.0系统的通信。在安装和使用此插件之前,你...
ilib-loctool-webos-json-resource ilib-loctool-webos-json-resource是loctool的插件,允许它读取和本地化JSON资源文件。 该插件针对webOS平台进行了优化。发行说明v1.3.3 已将美国英语翻译数据更改为位于资源根...
webos-自制频道特征独立的 webOS 包存储库Homebrew 发现、安装和更新(root) 根执行服务,webOS 自制程序开发人员可以轻松使用,无需单独的权限提升处理 ( luna://org.webosbrew.hbchannel.service/exec ) (root) ...
【描述】提到"免费的超级基本VM可以访问进行尝试",这暗示Webtop-WebOS-VM可能是一个简化版或基础版的虚拟机镜像,无需用户支付任何费用。用户可以下载并体验这个虚拟机,了解其功能和性能。这种免费提供的资源对于...
【webOS OSE 的 IoTivity 补丁-开源】是一个重要的技术主题,涉及到物联网(IoT)领域中的软件开发和设备互联。webOS OSE,全称为webOS Open Source Edition,是LG电子基于其原有的webOS操作系统开发的一个开源版本。...
webos-sdk-archive 这是HP webOS PDK-SDK页面的Wayback Machine存档的副本,可以在以下位置找到: : : 已对该克隆进行了编辑,以修复下载链接,但保留了页面的归档值。 大多数链接仍转到Wayback Machine存档。 ...
WebOS,全称为Web Operating System,是一种基于Web技术构建的操作系统,它主要通过浏览器提供操作系统级别的功能和服务。这个“webos.rar”压缩包文件显然包含了与WebOS相关的开发或应用内容,可能是某个开发者或者...
) 这个软件有一个客户端和一个服务器部分: 客户端软件安装在 WebOS 设备上(我用 Veer 测试过)。 这是一个使用 JavaScript 的 Palm SDK 应用程序。 服务器软件在 PC 上运行,并通过蓝牙从设备接收向下翻页、向上...
webos-nightmoves Night Moves是在其他OS上沿着f.lux或Night Panel行的实用程序-保存它实际上并没有改变色温,因为webOS中没有用于此的API。 而是根据您设置的时间表更改屏幕亮度和音量(系统和铃声)。 您可以使用...
webos-床头柜 适用于webOS的床头柜配套应用,具有时钟和灯光控制功能。 需要飞利浦Hue桥和照明灯才能实现灯光控制功能。 针对Pre和TouchPad进行了优化。 发行历史 1.0.0-功能性beta,在Pre上进行了完善 1.0.1-常规...