Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 –...

69
Embedded Software Lab. @ SKKU 69 1 Tizen v2.3 Web框架

Transcript of Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 –...

Page 1: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!1

Tizen v2.3 Web框架

Page 2: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!2

• Web Runtime – 内部块 – 特点和⽣生命周期

• Tizen Web API • Web 设备API, Tizen API, 应⽤用程序API, 通信API, 内容

API, 输⼊入输出 API, 社交API, 系统API, ⽤用户交互API

内容

Page 3: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!3

• Web 应⽤用程序 – 使⽤用基于web的技术 – 读取本地设备/平台资源 – 可以安装在设备上

Web 应⽤用程序

Source: Ming Jin , Tizen Web Runtime. Tizen Developer Conference 2012.

Page 4: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!4

• Web 框架 – 整合了Web Runtime和W3C API,设备API以及包含从jQuery Mobile中提取的组件的⼀一套UI框架

Web 框架上得Web应⽤用程序

Source: Jaesik Chang , Tizen Webkit For Wearable Devices. Tizen Developer Conference 2014.

Page 5: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!5

• 提供: – 浏览器和打包Web应⽤用上最好的Web体验

• 注重功能性(HTML5), 性能(UI响应, 2D/3D 加速, JS 引擎), 标准合规(W3C) • 通过Tizen Device API可以访问到更多地设备特性 • 基于jQuery Mobile的Tizen Web UI框架使得Web应⽤用开发更简单

• 组成: – Web Runtime: 打包Web应⽤用程序的执⾏行环境 – WebView (WebKit2/EFL): JavaScriptCore, WebCore(HTML5/W3C API

implementation), WebKit API

Web 框架

Source: Sunil Saxena , Tizen Architecture. Tizen Developer Conference 2012.

Page 6: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!6Web UI框架启动流程

Page 7: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!7Web UI框架启动流程

Page 8: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!8

Web Runtime:内部块

Page 9: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!9

• Web Runtime – Tizen中的所有Web应⽤用程序都运⾏行在此环境中 – 包管理 (安装,更新等) – 执⾏行和⽣生命周期 (启动,暂停,继续等) – 运⾏行时安全(API/⽹网络连接, 沙箱, etc.) – 设备和平台整合(读写本地设备和平台资源)

Web Runtime on Tizen v2.3

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 10: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!10Tizen Web Runtime 内部块

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 11: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!11Web Runtimeweb

wrt-installer

wrt-common

wrt-security

wrt src

api_new

view view_module.cpp

web-client

web-launcher

web-launchpad-

daemon

runnable_widget_object.cpp

webkit Injected-bundle Injected-bundle.cpp

view_logic.cpp

core_module.cpp

wrt-client.cpp

launchpad_src launchpad.c

__real_launch()__normal_fork_exec()__fake_launch_app()__prepare_exec()

WrtClient::WrtClient(), OnStop(), OnCreate(), OnReset()

CoreModule::Init(), Terminate()

Show(), Hide(), Suspend(), Resume(), Prepareview()

ViewLogic(), createWebView(), prepareView(), showWidget(), hideWidget()

Load libraries to Webprocess dynamically

IVewModule class pointing to ViewLogic

wrt-launcher.cpp Display_widget_info(), AttachDB()

wrt-security ace._client.cpp checkFunctionCall()

Page 12: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!12

• WRT安装器 – 下载完毕后,将资源安装到合适的⽬目录下 – 向WRT数据库中注册app – 从打包⽂文件中提取内容 – 检查配置⽂文件 – ⽣生成与原⽣生应⽤用交互的清单⽂文件 – 根据请求特权更新SMACK(Simplified Mandatory Access Control Kernel)政策

Tizen Web Runtime 内部块

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 13: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!13

• WRT 客户端 – ⽣生命周期相关回调(启动,继续,暂停,结束) – 当新的web应⽤用程序启动时,系统⽣生成两个进程

• UI 进程; 管理app的⽣生命周期 • Web 进程;负责渲染web内容

Tizen Web Runtime内部块

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 14: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!14

• WRT 内核 – 核⼼心模块

• 初始化数据库,准备启动信息,检测⽹网络连接 – 视图模块

• 创建/检测包含⼀一个web应⽤用程序内容的web视图 • 控制视图层,包括展⽰示、隐藏和暂停的性能 • 在视图层使⽤用WebKit 和EFL Evas canvas 库

– 资源加载,新的web视图的创建 • 向WebKit视图中添加⾃自定义JS对象来读取Tizen device APIs

Tizen Web Runtime内部块

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 15: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!15

• RunnableWidgetObject – 在窗⼜⼝口中处理或者启动web应⽤用 – 每个状态变化时调⽤用合适的⽅方法 – IRunnableWidgetObject接⼜⼝口定义

• web/wrt/src/api_new/i_runnable_widget_object.h – RunnableWidgetObject接⼜⼝口实现

• web/wrt/src/api_new/runnable_widget_object.cpp

• ViewLogic – 可以使⽤用Webkit 和Evas 库,地理定位,通知,插件功能

Web 内核

Page 16: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!16

• IViewModule

Web 内核

Page 17: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!17

• ViewLogic

Web内核

Page 18: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!18

• createWebView()

Web内核

Page 19: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!19

• Injected Bundle – 在WebKit API 层内部构建⼀一个进程管理机制 – 通过像插件⼀一样在启动时动态加载类库,在Web进程中⽀支持附加⽅方法 – 与插件不同的时,只有共享类库可以被加载

Tizen Web Runtime 内部块

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 20: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!20

• WRT 安全 – 提供沙箱环境 – 执⾏行SMACK规则

• 不能读取其他应⽤用的⽂文件,系统⽂文件或者特征,除⾮非获得授权允许

Tizen Web Runtime 内部块

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 21: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!21

• WRT 启动 – Preload 预加载WebKit 和 WRT 库(例如:libewebkit2.so, wrt-client) – 产⽣生⼀一个新的进程 (UI 进程)

Tizen Web Runtime 内部块

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 22: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!22

• TIZEN中产⽣生新进程(app)的两个关键守护进程 – AMD (应⽤用管理守护进程)和启动(launchpad)守护进程.

– AMD 收到启动请求然后转发给启动进程

(launchpad_preloading_preinitializing_daemon) – 启动进程是所有TIZEN apps的⽗父进程.

• 有三个启动守护进程 – launchpad, wrt_launchpad and debug_launchpad – AMD 根据启动请求选择合适的启动守护进程.

– debug_launchpad会在调试时由 sdbd (sdb daemon)启动

启动

Page 23: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!23

Web Runtime: 特性和⽣生命周期

Page 24: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!24

• 从Tizen 2.0开始 – Hosted web app support – Installation / Update flow improvement – WebKit2/EFL – Improvement of launching – Resources encryption / decryption – Web dynamic box support – Support system language change – Privilege-based API security – Process sandboxing

Web Runtime on Tizen

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 25: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!25

• Hosted web app – 所有资源都位于远程服务器端的⼀一个web app – 现在,它需要和最⼩小的资源打包在⼀一起: config.xml,

signature(s) • 限制

– 开始页应该在<tizen:content>扩展中具体说明 – 所有已经渲染的页⾯面都是远程页⾯面 – 远程页⾯面只允许W3C/HTML APIs – 创建的浏览内容跟远程服务器有相同的源

Hosted Web App Support

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 26: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!26

• 安装流程 – 新的验证步骤介绍

• ⾼高级权限声明是不允许的 • ⽆无效的签名是不允许的

– 新安装步骤介绍 • 资源加密(如果有需要的话) • Smack rules population

• 更新流程 – 更新标准

• 必须有相同的Tizen app ID • 必须有相同的作者签名

– 更新触发点 • 在安装请求时间,如果该请求满⾜足“更新标准”

– 更新结果 • Web应⽤用程序的数据(设置,cookie,本地存储等)必须被保存

安装/更新流程改进

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 27: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!27安装更新流程

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 28: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!28

• Web应⽤用程序进程模型 – 每个Web应⽤用程序有⼀一个UI进程和⼀一个Web进程

• UI 进程管理⽣生命周期,Web进程负责渲染 – NPAPI插件(如果有)将在不同的进程中运⾏行

基于WebKit2/EFL

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 29: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!29

• wrt-launchpad – 预加载WebKit 和WRT 库

启动程序

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Ewk: EFL Webkit

Page 30: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!30WRT – ⽣生命周期

Source: Ming Jin , Tizen Web Runtime. Tizen Developer Conference 2012.

Page 31: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!31

• 暂停/ 继续 – 默认情况下,当Web应⽤用程序在后台运⾏行时,Web视图将会被WRT暂停,除⾮非开发者明确设置启⽤用<tizen:setting> • 中⽌止活动包括: JavaScript的执⾏行,定时器,动画 • 即使⼀一个WebView在后台没有暂停,绘画操作也不会在后台操作,并且后备存储器将被清除

– 当切换到前台,暂停的视图会被恢复

WRT – ⽣生命周期

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 32: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!32

• 基于⽂文件夹的本地化 – Web应⽤用程序的内容可以定位在⽂文件单元根据W3C Widget P & C规范

– 本地化需要页⾯面重载,并且本地化的内容只会在下⼀一次启动时反映 • 基于元素的本地化

– 配置⽂文档可以使⽤用xml:lang 属性本地化 • 基于内容的本地化

– 系统区域设置更改事件可以被Tizen System Info API监听到 – 本地化程序需要被现场改变事件处理程序实现

⽀支持系统语⾔言变化

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 33: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!33

• 在安装/更新时资源进⾏行加密 – 启⽤用需配置config.xml中<tizen:setting encryption=“enable”/

> – ⽹网络应⽤用程序⽬目录递归扫描 – 只有预定义的扩展资源(HTML / CSS / JS)是加密的 – 信息加密的资源存储在WRT数据库

• 资源在运⾏行时进⾏行解密 – UI进程通知Bundle(WebProcess)解密的必要性 – 资源被解密成base64字符串,由WebKit读取

资源加密/解密

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 34: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!34

• 在安装/更新时对资源进⾏行加密

资源加密/解密

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 35: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!35

• 资源在加载时解密

资源加密/解密

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 36: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!36

• 当WRT的应⽤用程序安装时,WRT会同时安装WDB(WDB资源与其应⽤用程序打包在⼀一起)

• 卸载阶段,WDB资源会随应⽤用程序⼀一起删除 – ⽀支持⼤大⼩小: 1x1, 2x1, 2x2 – ⽀支持定期更新

Web动态箱⽀支持

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.https://developer.tizen.org/ko/documentation/ux-guide/basic-interactions/dynamic-box

Page 37: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!37

• 应⽤用程序(UI/Web 进程) 沙箱 – UID: “app” – GUID: “app” – Process smack label: {PkgID} – Resource smack label: {PkgID} – Smack 规则: 基本应⽤用规则+特权特定规则

• Web应⽤用程序的私有数据(例如,存储,索引数据库,Cookie,等等)是由系统沙盒化后剩余的部分保护

进程沙箱

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

[subjectLabel] [objectLabel] [access(rwxa)]

Page 38: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!38

• 权限 – 分配给应⽤用程序的⼀一个预定义的特权接⼜⼝口集合,可以调⽤用特权API – Ex. http://tizen.org/privilege/account.read

• 权限等级 – 基于它们的影响为API定义的访问级别 – 公开的

• 闹钟、应⽤用、蓝⽛牙、⽇日历、呼叫历史、联系⼈人、⽂文件系统、邮件端⼜⼝口、通讯、电源、推送、设置、系统等。

– 伙伴 • 应⽤用程序管理器,安全元件,系统管理器等

– 平台 • 蓝⽛牙管理器,锁管理器,包管理器,设置管理器等

基于权限的API安全

Source: Ming Jin , Tizen Web Runtime Update. Tizen Developer Conference 2013.

Page 39: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!39权限

Page 40: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!40

• 访问控制的实现 – Tizen WRT⽀支持Tizen Web应⽤用程序和多个API:W3C APIs,和⾮非W3CAPI例如WebGL和Tizen Web API

– WRT具有多进程模型 • 基于WebKit • 部件实例在单独的进程中被执⾏行 • 提供运⾏行时隔离,并允许系统在每个实例上强制执⾏行⾃自定义进程级别控制(沙箱)

– 两级访问控制的实施 • WRT Access Control Engine(ACE): 对JS APIs的细粒度的访问控制

• 通过SMACK建⽴立应⽤用程序沙箱: 内核在系统调⽤用过程中的进程级别遏制

基于权限的API安全

Source: Onur Aciicmez , Understanding the Permission and Access Control Model for Tizen Application Sandboxing. Tizen Developer Conference 2012.

Page 41: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!41

• 访问控制模型 – Tizen⽀支持的⼀一个JavaScript APIs⼦子集被限制

• 限制是指任何可以访问设备如位置,联系⼈人,⽇日历的私⼈人数据的JS功能,等等

– 部件需要授权来调⽤用受限的APIs – 许可声明和授权:

• 清单⽂文件中的声明: – <feature> element for device APIs – <access> element for network resources

– 授权: • 提⽰示类型决定根据WRT ACE策略⽤用户确认

基于权限的API安全

Source: Onur Aciicmez , Understanding the Permission and Access Control Model for Tizen Application Sandboxing. Tizen Developer Conference 2012.

Page 42: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!42

• 访问控制引擎 – 负责Tizen策略管理的组件 – 对每个单独请求的评估策略 – 管理策略和即时决定缓存

基于权限的API安全

Source: Ming Jin , Tizen Web Runtime. Tizen Developer Conference 2012.

<feature name=http://tizen.org/api/filesystem required=“true”/>

Page 43: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!43

• ACE 策略评估

PEP (Policy Enforcement Point) : ACE interface for WRT PIP (Policy Information Point): Responsible for obtaining attribute values from WRT, Resource Information and OS PDP (Policy Decision Point): evaluates policies; Interacts with the user if necessary Policy Translator: Parses policies (XML) Verdict Manager: Responsible for caching the verdicts

访问控制的实现

Source: Onur Aciicmez , Understanding the Permission and Access Control Model for Tizen Application Sandboxing. Tizen Developer Conference 2012.

Page 44: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!44

• 通过SMACK运⾏行沙箱 – 的策略⽂文件的更新遵循适当的规则,在安装,更新,或卸载操作,以及在运⾏行时

– 规则是基于设备的功能(清单⽂文件),⽤用户确认,安全⽂文件(标签,每个特征的权限)

访问控制的实现

Source: Onur Aciicmez , Understanding the Permission and Access Control Model for Tizen Application Sandboxing. Tizen Developer Conference 2012.

Widget requests access to a device feature

ACE System

Return result to WRT

Access is made to a device feature

Linux Kernel SMACK LSM

Check access rights in the SMACK Policy File

Page 45: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!45

Tizen Web API

Page 46: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!46

• W3C API – 实现了Web标准的DOM,风格,设备,图形,媒体,通信,存储,安全,⽤用户界⾯面,性能,位置,和部件

• The Device API – 提供先进的逻辑使⽤用传感器,⽂文件I/O,捕获,电话,收⾳音机,语⾳音识别,HDMI输出等等

Web API ⽀支持

Source: Tizen Overview and Architecture, Seokjae Jeong, Korea Linux Forum 2012.

Page 47: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!47

• 标准规格的限制 – 它们中的⼤大多数仍处于⼯工作草案 – 对于Tizen的特点没有充分的⽀支持

• Tizen Web device APIs – Device APIs 使得Tizen 平台更具特⾊色 – Device APIs 更新迅速

为什么选择Tizen Web Device APIs?

Source: Tizen – Universal Device Platform, Wonseok Lee, Samsung Electronics.

Page 48: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!48

• 遵循W3C规范API⻛风格 – 避免使⽤用字符串枚举数值常数 – ⼤大多数⽅方法是异步的 – 成功和错误回调,并使⽤用构造函数

• 基于标准技术 – Tizen的Web device API规格都写在WebIDL – 实施遵循ECMAScript 5.1和推荐的W3C WebIDL基本规则(例如,类型转换)

• Tizen命名空间定义 – 所有的Tizen设备API存在于Tizen命名空间 – 所有的Tizen设备API都绑定在Tizen全局对象上

Tizen Web Device APIs 设计

Source: Tizen – Universal Device Platform, Wonseok Lee, Samsung Electronics.

Page 49: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!49

• Defined tizen namespace

Tizen Web Device APIs 设计

Source: Tizen – Universal Device Platform, Wonseok Lee, Samsung Electronics.

Page 50: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!50Tizen Web Device API 模块

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

https://developer.tizen.org/dev-guide/2.3.0/org.tizen.web.apireference/html/web_api_reference.htm

Page 51: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!51

• Tizen – 提供了Tizen的常⽤用功能

• 包含在其他模块中常⽤用的对象接⼜⼝口

– Tizen的对象是最⾼高层对象,为访问Tizen设备功能提供了基础

Tizen APIs (1/2)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 52: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!52

• Tizen的常⽤用对象的接⼝口 – 通⽤用异步回调处理

• 不需要返回值的⽅方法的成功回调 • 需要⼀一个错误作为输⼊入参数的⽅方法的错误回调

• ⼀一般错误和异常处理 – Tizen APIs 抛出⼀一个 WebAPIException 对象并且通过错误回调返回⼀一个 WebAPIError 对象

– 这些遵循dom4规格风格和错误类型。 • 过滤器和排序模式

– 过滤器是⽤用来限制查询结果,并组成复杂的查询 – ⼀一般来说,过滤器中与find()⽅方法在的⽇日历,调⽤用历史,联系,内容,和通讯模块使⽤用

Tizen APIs (2/2)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

// Create an attribute filter based on first name: "First name should contain 'Chris' (case insensitive)" var filter = new tizen.AttributeFilter("name.firstName", "CONTAINS", "Chris"); // Sort by first name, ascending var sortMode = new tizen.SortMode("name.firstName", "ASC"); // Send request on contact address book. tizen.contact.getDefaultAddressBook().find(successCallback, errorCallback, filter, sortMode);

Page 53: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!53

• 闹钟 – 计划在特定时间启动的应⽤用程序

• 应⽤用程序 – 管理当前应⽤用程序(此应⽤用程序) – 管理其他应⽤用程序

• 检索应⽤用程序的信息 – 推出其他应⽤用程序

• 应⽤用控制

Application APIs (1/2)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

/* Alarm is triggered at 8:00 on April 4, 2012 */ var date = new Date(2012, 3, 4, 8, 0); var alarm1 = new tizen.AlarmAbsolute(date); /* Alarm is triggered in 3 hours */ var alarm2 = new tizen.AlarmRelative(3 * tizen.alarm.PERIOD_HOUR);

var appControl = new tizen.ApplicationControl("http://tizen.org/appcontrol/operation/pick", null, "image/*", null, null); tizen.application.launchAppControl(appControl, null, successCb, errCb, null);

Page 54: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!54

• 包 – 检索已安装包的信息 – 检查安装包列表的更新 – 安装或卸载软件包 – 伙伴特权

• 数据控制 – 与数据控制提供程序应⽤用程序交换特定数据

• 数据控制提供程序可以作为本地应⽤用程序实现 – 数据控制类型:

• SqlDataControl– SQL-类型的数据控制 – 数据由⾏行和列组成

• MapDataControl– key-value 类型数据控制

– 伙伴特权

Application APIs (2/2)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 55: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!55

• 蓝⽛牙 – 管理蓝⽛牙设备 – 发现附近的设备, 并且连接或与发现设备配对 – 连接设备与它们交换数据

• NFC – 管理NFC设备 – 检测到的NFC标签和同伴 – 交换NDEF数据

• 消息 – 发送或者接收SMS, MMS, or email 消息 – 检索邮件存储

Communication APIs (1/2)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

var nfcAdapter = tizen.nfc.getDefaultAdapter(); nfcAdapter.setPowered(true, onPowerOn, onPowerOnFails);

Page 56: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!56

• ⺴⽹网络承载选择 – 设置特定的地址或域名的⽹网络承载者 – 伙伴特权

• 安全元件 – 提供⼏几个安全元件的应⽤用与交流的功能,如UICC SIM,嵌⼊入式安全元件,或安全SD卡

– 伙伴特权

• 推送 – 从Tizen推送服务器接收推送通知

通信APIs (2/2)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 57: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!57

• 内容 – 发现并管理图像、视频、⾳音乐和其他⽂文件 – 扫描设备中的内容或⽬目录元数据并更新内容数据库 – 从内容数据库中检索内容,使⽤用过滤器 – 通过浏览内容列表内容⽬目录 – 视图和编辑内容项⽬目细节

内容APIs (1/2)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 58: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!58

• 下载 – 从特定的⽹网址下载⽂文件 – 允许应⽤用程序来管理下载操作细节

• 设置下载⽂文件的存储位置 • 设置⽹网络类型:蜂窝,Wi-Fi,或默认 • 获得操作状态:当前接收⼤大⼩小和事件 • 获取⽂文件的MIME类型

内容APIs (2/2)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 59: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!59

• ⽂文件系统 – 访问⽂文件系统虚拟根位置

• Documents, downloads, images, music, videos, ringtones, ⽂文件,下载,图⽚片,⾳音乐,视频,铃声,出包,wgt-package, wgt-private, 和 wgt-private-tmp

– 管理⽂文件存储 • 内部与外部 • 安装,删除,或不可挂载

– 访问⽂文件和⽬目录 – 创建、读取、编辑或删除⽂文件和⽬目录

输⼊入输出 APIs

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 60: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!60

• 消息端⼝口 – 与其他应⽤用程序进⾏行通信:IPC基于应⽤用程序ID

输⼊入输出 APIs

Page 61: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!61

• 联系⼈人 – 管理设备通讯簿中的联系⼈人

• 包括添加、查找、更新和删除

– 管理联系⼈人 • 联系⼈人是同⼀一个⼈人的信息的⼀一个或多个联系⼈人的聚集

– ⽀支持vCard 3.0

社交APIs (1/3)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 62: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!62

• ⽇日历 – 管理事件和任务

• 包括添加、查找、更新和删除 • 每⼀一个事件或任务都有⼀一系列的属性,如⽬目的、开始时间和持续时间等

– 监视事件和任务的变化– ⽀支持iCalendar v2.0, 基于RFC 5545

• 呼叫记录 – 浏览设备的通话记录 – 删除调⽤用历史记录项 – 监视变化

社交APIs (2/3)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 63: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!63

• 书签– 管理书签和书签⽂文件夹 – 浏览书签⽂文件夹 – 平台特权

• 数据同步– 向服务器同步设备的数据使⽤用OMA DS(数据同步)1.2协议 • 联系数据或⽇日历数据

– OMS DS的档案管理 • Tizen平台在⽀支持的⽂文件数量上设置了限制 • Adds, updates and removes profiles

社交APIs (3/3)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 64: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!64

• 时间 – 提供TZDate型,扩展型ECMAScript的⽇日期

• 它包含时区信息以及时间信息 – 提供管理系统时间和持续时间的实⽤用函数

• 获得本地时间或时区的⽅方法 • 计算持续时间的⽅方法

• 系统信息 – 允许访问系统的各种特性

• 蓝⽛牙,Wi-Fi,NFC,前/后摄像头,闪光灯,GPS,传感器,平台和API版本,USB主机/配件

– 监控系统信息的变化

系统APIs (1/2)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 65: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!65

• 系统设置 – 设置或获取系统设置值

• HOME_SCREEN: 主屏幕背景图像 • LOCK_SCREEN:锁定屏幕背景图像锁定屏幕背景图像 • INCOMING_CALL:来电铃声 • NOTIFICATION_EMAIL: 通知提⽰示⾳音

• 电量 – 管理屏幕资源的电源状态

• 设置或获取屏幕的状态:关闭、暗淡、正常或明亮 • 监视屏幕状态的变化

– 设置CPU不休息

系统APIs (2/2)

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 66: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!66

• 通知 – 关于应⽤用程序事件的⽤用户界⾯面通知

⽤用户接⼝口 APIs

Source: Kisub Song , Tizen Web Device API. Tizen Developer Conference 2013.

Page 67: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!67

• 新的⺴⽹网络运⾏行库(tizen 3.0) – ⽹网络,多媒体,设备APIs

• https://crosswalk-project.org/ • 开源,BSD许可证下发布。 – 由英特尔的开源技术中⼼心成⽴立。

• 眨眼渲染和布局引擎 • 同时为Tizen和Android设计 • 与Tizen 2.x WRT向后兼容 • Cordova Device APIs

Crosswalk

Page 68: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!68Crosswalk Architecture – 模块

Page 69: Tizen v2.3 Web · Embedded Software Lab. @ SKKU 69!2 • Web Runtime – 内部块 – 特点和命周期 • Tizen Web API • Web 设备API, Tizen API, 应程序 API, 通信API,

Embedded Software Lab. @ SKKU

69

!69

• 共享过程模型 • BP和所有应⽤用程序共享 • WebApp 包含EP 和 RP • RP是沙箱,不能做系统调⽤用 • RP通过IPC代表OS调⽤用BP • EP不是沙箱,可以进⾏行系统调⽤用

Crosswalk Architecture - Runtime