《WebKit 技术内幕》学习之十五(5):Web前端的未来

5 Crosswalk项目

        Crosswalk项目是由英特尔公司发起的一个开源项目,该项目基于WebKit(Blink)和Chromium等开源项目打造,其目的是提供一个跨不同操作系统的Web运行环境,包括Android、Tizen、Linux、Windows、MacOS等众多平台,目前主要支持Android、Tizen和Linux等。如前面描述,Crosswalk是该Web运行环境中能够作为操作系统的一个独立模块或者说是本地应用,而Crosswalk本身不是一个操作系统,具体请读者查看“https://www.crosswalk-project.org/”。不同于Cordova项目,Crosswalk不仅仅提供一些Web接口的扩展,也不是简单的基于系统默认的嵌入式应用接口,如Android WebView,而是使用新Blink和Chromium的能力,加强对HTML5能力的支持,同时加入了Web作为一个运行平台的各种能力,从功能上看,它对Web应用的支持和规范的支持更加完整,图15-5描述了Web应用在Crosswalk上的基本工作过程。

        图15-5中可以看到在Android系统和Tizen系统上两者是有些不一样的,这是因为Tizen系统本身是一个直接支持Web应用的操作系统,所以它支持将Web应用(XPK格式)安装到系统中而不需要额外的处理。当用户需要启动Web应用的时候,由Crosswalk加载Web应用的设置并使用运行环境来启动该Web应用。

                                图15-5 Crosswalk支持Web应用的示意图

        在Android系统上,那就是不同的故事了,因为Android系统只是支持本地应用,为此需要特殊的工具将Web应用转换成Android系统的APK。这一工具当然需要满足Android上的特别需求,这里有两个目的。

  • 因为Web应用中有名称、图标、加载入口等信息,这些信息需要设置到Android的AndroidManifest.xml中,因此,当用户安装该APK的时候,名称和图标等信息就会显示在应用的列表中,跟其他本地应用看起来一样。
  • 满足Android系统只能从Application和Activity类来启动,而不是Web应用。为此,Crosswalk项目提供了一些代码来让Android系统启动Crosswalk运行平台,而该运行平台根据Web应用的设置来启动Web应用。

        下面以Android平台上的实现为例说明Crosswalk项目的架构和特性。目前,项目还在不断地发展中,首先理解一下Crosswalk在Android平台上的设计结构,图15-6是Crosswalk在Android系统上的层次结构图。

                                图15-6 Crosswalk在Android系统上的层次结构图

        图15-6中灰色部分完全是Crosswalk提供的新部分,而Content和Blink主要来源于Chromium开源项目,当然也包括一些不同的地方,如性能优化。在这之上即是Crosswalk中的RuntimeCore层和Runtime层。RuntimeCore层使用Content层的桥接层并提供简单易用的Java接口。而Runtime层则包括扩展Web接口的扩展机制、各种Web运行平台的新Web接口(如双屏幕实现的支持等),也包括跟Android系统集成的部分,如对话框、文件选择器等。在这之上就是调用Runtime层的封装层,用来加载Web应用,同时也是为了符合Android系统的需要,包括Activity和Application等具体实现。

根据上面的层次结构图,Crosswalk大致有以下特性。

  • 因为使用了最新的Chromium和Blink代码,所以Crosswalk对于HTML5功能的支持非常好,特别是同之前Android系统上提供的基于WebKit的Android移植实现的WebView对比。
  • 因为不依赖于操作系统的渲染网页的能力,所以Crosswalk提供统一的接口,而不是在不同平台上支持不同的接口,这样在最大程度上提供了统一的编程接口,当然不是所有接口完全一致。
  • Crosswalk中加入了一些特别的优化代码,使得它的性能比较出色,不仅仅是跟WebView对比,而且跟Chromium比较,Crosswalk在某些地方也表现出不一样的性能优势。
  • Crosswalk设计并实现了自己的扩展系统,在Android上,是一套提供Java接口的机制,虽然它的内部实现直接修改了Chromium的代码。该系统能够允许Web开发者在需要的时候使用Java或者C++来扩展Web的能力。
  • Crosswalk实现了众多W3C定义的关于Web应用方面的规范,如平台的运行模型、各种设备接口等,极大地提升了Web运行环境的能力,同时因为遵守规范,对移植性有极大的好处。
  • Crosswalk极好地同Android系统结合起来,小到应用名称、图标,大到应用程序生命周期,各种协议的支持,如电话、用户界面、安全权限等,这一切使Web应用在Android系统之上能够获得跟本地应用类似的体验。
  • Crosswalk引入了对很多新功能的支持,如Miracast的支持,它能够支持多屏显示,对很多应用提供了良好的体验。当然还有很多其他的功能,读者可以慢慢挖掘。

        对于Web应用的开发者来说,实际上可以在完全不了解这些背后故事的同时依然使用Crosswalk,你所要做的仅是使用一个工具,也就是Crosswalk中的打包工具,该工具可以根据Web应用的设置来自动生成APK文件,开发者可以将该文件上传至Google Play Store就可以了,十分方便,具体的步骤可以参考官网上的文档,有比较详细的描述。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/650331.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python使用PaddleOCR实现《命名实体识别项目》OCR(已实现)(ai领域必看,简单易用)

1.简介: PaddleOCR是飞桨(PaddlePaddle)推出的一个端到端的光学字符识别开源工具集,支持中文、英文、数字以及特殊符号等各种类型的文字检测、识别和词语整体识别。该工具集使用PaddlePaddle深度学习框架技术,提供了多…

Likeshop多商户商城源码系统,支持二开

在电商行业高速发展的当下,拥有一套功能强大、易于操作的开源商城系统至关重要。Likeshop多商户商城系统正是这样一款集H5、小程序、独立APP于一体的开源电商解决方案,助力商家实现智能营销。 一、产品简介 Likeshop多商户商城系统为商家提供了丰富的营…

Spring Boot 中 Service 层依赖注入问题

目录 问题描述 产生错误 问题原因 解决方法 手动注入方法 1、使用工具集 hutool,引入 Maven 依赖 2、编写 SpringUtil 工具类 问题描述 Controller 层方法为 static 静态,引入 Service 层时使用 Autowired 注解自动装配,Controller层方…

C#用 DateAndTime.DateAdd方法和DateTime.Add(TimeSpan) 方法分别添加一段时间间隔

目录 一、基本方法 1.用 DateAndTime.DateAdd方法添加一段时间间隔 2.用DateTime.Add方法添加一段时间间隔 二、实例 1.实例1:用 DateAndTime.DateAdd方法 2.实例2:用DateTime.Add方法 一、基本方法 1.用 DateAndTime.DateAdd方法添加一段时间间隔…

Android发展历程及安装

目录 发展历程 下载网址 安装过程 发展历程 安卓基于Linux内核,Linux内核相当于房屋的地基 开源不等于免费,不能商用 安卓一般每半年小更新,一年大更新 对应API相当于别名 现在安卓安全性越来越高,性能越来越快&#xff0c…

2024年预制菜行业市场发展趋势分析(2021-2023年预制菜行业数据分析)

近期,老干妈被称为预制菜、预制菜国标报送稿出炉等事件再次引起大众对于预制菜市场的讨论。随着国家对预制菜审核标准的严格化,预制菜市场未来走向将会如何?鲸参谋带大家从数据角度来了解。 首先来看下预制菜市场的行业发展情况。 根据鲸参…

蓝桥杯备赛 week 4 —— DP 背包问题

目录 🌈前言🌈: 📁 01背包问题 分析: dp数组求解: 优化:滚动数组: 📁 完全背包问题 📁 总结 🌈前言🌈: 这篇文章主…

大数据就业方向-(工作)ETL开发

上一篇文章: 大数据 - 大数据入门第一篇 | 关于大数据你了解多少?-CSDN博客 目录 🐶1.ETL概念 🐶2. ETL的用处 🐶3.ETL实现方式 🐶4. ETL体系结构 🐶5. 什么是ETL技术? &…

MySQL JSON数据类型全解析(JSON datatype and functions)

JSON(JavaScript Object Notation)是一种常见的信息交换格式,其简单易读且非常适合程序处理。MySQL从5.7版本开始支持JSON数据类型,本文对MySQL中JSON数据类型的使用进行一个总结。 目录 一、MySQL中的JSON 1.1 JSON数据格式 1.2 …

spring-boot-starter-validation常用注解

文章目录 一、使用二、常用注解三、Valid or Validated ?四、分组校验1. 分组校验的基本概念2. 定义验证组3. 应用分组到模型4. 在控制器中使用分组5. 总结 一、使用 要使用这些注解,首先确保在你的 Spring Boot 应用的 pom.xml 文件中添加了 spring-bo…

探秘Dmail:Web3世界的通讯引领者

摘要:在一个充满潜力并且对创新要求严格的领域中,Dmail作为一种开创性的Web3通讯协议应运而生。 1月24日,OKX Jumpstart宣布上线Dmail,在Web3领域引起了巨大反响,这是一个旨在重新定义数字通讯范式的富有远见的项目&a…

[足式机器人]Part2 Dr. CAN学习笔记- 最优控制Optimal Control Ch07

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记 - 最优控制Optimal Control Ch07-1最优控制问题与性能指标 1. 最优控制问题与性能指标2. 动态规划 Dynamic Programming2.1 基本概念2.2 代码详解2.3 简单一维案例 3. 线性二次型调节器&#xff…

GIt同时存在传入和传出更改修改,无法合并

前言 Git是常用的版本管理工具,之前面试被问到过一次——Git有无遇到过使用错误情况?当时卡壳了没答上来,所以这次遇到,特此记录学习。 问题概述 前一天提交了代码,mt进行了修改。但我忘记拉取最新,就进…

深度解析单片机:历史、发展与您关心的问题

什么是单片机? 定义:单片机是一种集成了中央处理器(CPU)、内存和外设功能的微型计算机系统。与传统计算机相比,单片机通常集成在一个芯片上,用于控制特定的应用。#单片机# 特点: 封装紧凑&…

人工智能:更多有用的 Python 库

目录 前言 推荐 JupyterLab 入门 复杂的矩阵运算 其它人工智能和机器学习的 Python 库 前言 在这篇文章中,我们将了解更多的矩阵操作,同时再介绍几个人工智能 Python 库。 推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂&#x…

再谈Android View绘制流程

一,先思考何时开始绘制 笔者在这里提醒读者,Android的View是UI的高级抽象,我们平时使用的XML文件也好,本质是设计模式中的一种策略模式,其View可以理解为一种底层UI显示的Request。各种VIew的排布,来自于开…

如何使用 dotnet pack 打包 .NET 跨平台程序集?

如何使用 dotnet pack 打包 .NET 跨平台程序集? dotnet pack 介绍官方描述 dotnet pack 命令说明使用示例打包 .net 类库项目生成带注释的 nuget 包构建特定平台的 nuget 包关于 .NET RID 目录 dotnet pack 介绍 dotnet pack 是一个 .NET Core NuGet 包打包程序。 …

Python 数据分析实战——为什么销售额减少?酒卷隆治_案例1

# 为什么黑猫游戏的销售额会减少? # 数据集 DAU : 每天至少来访问一次的用户数据 数据内容 数据类型 字段名 访问时间 string(字符串) log_data 应用名称 string(字符串) app_name 用户 ID int(数值&…

【机组】基于FPGA的32位算术逻辑运算单元的设计(EP2C5扩充选配类)

​🌈个人主页:Sarapines Programmer🔥 系列专栏:《机组 | 模块单元实验》⏰诗赋清音:云生高巅梦远游, 星光点缀碧海愁。 山川深邃情难晤, 剑气凌云志自修。 目录 一、实验目的 二、实验要求 …

acwing 质数 约数 欧拉函数

目录 质数试除法定质数分解质因数筛质数 约数试除法求约数乘积的约数个数最大公约数 欧拉函数筛法求欧拉函数和 质数 试除法定质数 bool is_prime(int num) {if(num < 2)return false;for(int i 2; i < num / i; i)if(num % i 0)return false;return true; }分解质因…