TV快应用系列——1.ExtScreen框架快速入门

news2024/9/24 9:19:52

系列文章目录

TV快应用系列——1.ExtScreen框架快速入门

ExtScreen框架快速入门

  • 系列文章目录
  • 前言
  • 一、ExtScreen简介
    • 整体结构
    • 扩展屏和应用的区别
  • 二、安装和环境配置
    • 1.安装编辑工具
    • 2.安装Vue开发环境
      • 1.1.1安装 Node
      • 1.1.2安装配置 npm
        • 下载安装npm
        • npm 设置淘宝镜像
        • 安装 vue-cli(非必须)
    • 3.安装Android开发环境
      • 1.安装 Android Studio
      • 2.配置 PATH 环境变量
      • 3.配置 Android 设备
        • 真机
        • 模拟器(初学推荐)
    • 4.安装扩展屏运行环境(重要)
      • 下载扩展屏运行环境
      • 配置扩展屏运行环境
  • 二、运行Hello World
    • 1. 创建应用
    • 2.运行应用
    • 3.热重载 (Hot Reload)
  • 三、本地调试
  • 四、问题解答
  • 总结


前言

本文是TV快应用系列第一讲,主要介绍ExtScreen框架及优点,并通过官网的教程,结合实际实战的一些注意点,为大家提供一个step by step教程以及一个问题解答的区域。将零散的知识进行整合,方便初学者更好的融会贯通。

一、ExtScreen简介

和手机相比,智能电视端的生态一直令人诟病:

  • 电视芯片运算能力差,配置普遍不如手机;
  • 电视交互基于遥控器,完全不同于触摸屏操作的手机;
  • 电视的生态比较封闭,兼容性问题多,测试、部署、上架都比移动端成本更高。

为了解决上述问题,智能大屏的快应用引擎——扩展屏。由此而生。
简单讲,扩展屏就是类似微信小程序的开发框架,运行在智能电视上,支持遥控器操作,前端工程师用js(VUE)即可上手开发大屏应用。

下面是ExtScreen官网教程地址 传送门

小编通过一周左右的实践,整体的使用下来,觉得对于前端工程师的上手还是比较友好的,无论是焦点的封装、分辨率的自适应配置,都极大的提高了开发效率,唯一不足可能大部分的API功能需要通过自己跑官方代码,摸索具体的使用。而本系列的价值也是为了服务初学者,更好的理解、上手、并开发出有价值的应用。

整体结构

扩展屏服务包括三部分:

  • 扩展屏引擎(接收端):运行在大屏设备端,以SDK形式嵌入系统或以单独APP形式存在,服务须保活
  • 扩展屏应用:运行在扩展屏引擎上的第三方应用,用js编写,以es为后缀,可与遥控器交互
  • 发送端(可选):嵌入在移动端的SDK(Android、iOS)或按照开放协议(支持微信小程序等)编写的代码
    -在这里插入图片描述
    这里我们主要讲解拓展屏应用的开发。

扩展屏和应用的区别

扩展屏是针对智能大屏设备的高性能的跨终端开发框架,它能帮助开发者快速构建电视端服务能力。扩展屏引擎由合作方植入智能电视系统。相比直接在智能电视上安装运行原生APP,扩展屏有以下特点:

  • 无须下载安装等繁琐、耗时的操作:想用即用
  • 无碎片化:每次运行均是最新版本
  • 类投屏操作:用户可以用熟悉的投屏式的操作,在大屏上实现传统投屏不支持的交互操作
  • 大小屏用户账户同步:支持移动端登录后大屏也自动登录,告别扫码或者遥控器输入等低效登录过程
  • 接近原生的体验:Core架构使用C++开发,模块里直接插入JS引擎进行JS- 代码解析,反射到Native层进行渲染,直接共享JS和C++运行环境和数据,提高了JS和终端通讯性能,实现高性能自绘,提供更强的性能和更好的用户体验
  • 开发便捷:扩展屏引擎内置了大量大屏UI组件,开发快、代码量低
  • 兼容性好:扩展屏引擎已适配市面上大部分型号的智能电视、盒子、智能投影等,可免除开发者大量的适配工作

二、安装和环境配置

1.安装编辑工具

官网推荐了三款编辑器,VS Code 、 WebStorm 或者、编辑器。
个人可以根据喜好、和习惯去选择编辑工具,本文推荐使用VS Code。更轻量、并且对于Vue代码编写比较友好。VS Code下载传送门

2.安装Vue开发环境

ExtScreen的语法是类vue的,有uniapp相关开发经验的同学可以比较好的理解ExtScreen的框架形态,这里第一步我们先配置Vue环境。前端同学可以跳过该部分内容。

1.1.1安装 Node

在这里插入图片描述

下载安装Node, 绿色传送门
这里建议不要下载最新版本,编辑本文时最新版本为20.3。在实际开发中,建议使用14-16版本的,以更好兼容其他项目(过高版本的node和一些三方项目的依赖会产生冲突)。或者使用npx工具进行多版本的node管理。

1.1.2安装配置 npm

下载安装npm

新版的Node.js已经集成了npm,所以安装Node的同时也安装好了npm。

  • 检查npm是否安装成功
    在这里插入图片描述

在cmd里执行npm -v查看npm版本信息:

npm -v

npm 设置淘宝镜像

这里官网没有提及,但是有前端经验的朋友应该都改过淘宝镜像。这里修改淘宝镜像的目的是为了后续改造demo的时候可能会用到一些三方库。我们这里提前先配置好

  • 查看当前镜像源
npm config get registry
  • 配置 npm 为淘宝镜像
npm config set registry https://registry.npm.taobao.org
  • 报错处理
    1.系统禁止脚本运行 说明 powerShell 没有管理权限 需要设置管理员权限
    1.1搜索powershell窗口 以管理员身份运行
    1.2输入指令set-ExecutionPolicy RemoteSigned 回车
    1.3输入 A 回车

    2.安装完成如果使用的时候报错 说明下载被拦截 关闭 电脑管家防火墙

安装 vue-cli(非必须)

Vue CLI是一个官方发布 vue.js 项目脚手架 使用 vue-cli 可以快速搭建Vue开发环境以及对应的webpack配置.使用官方demo新建项目可以非必须安装。
在命令行中运行命令 npm install -g vue-cli ,然后等待安装完成。

3.安装Android开发环境

1.安装 Android Studio

  1. 下载并安装Android Studio。

  2. 运行Android Studio并进入Android Studio Setup Wizard,这会安装最新的Android SDK, Android SDK Platform-Tools 以及Android SDK Build-Tools,这些都是在开发扩展屏快应用时所需要的。

这里可以自行百度,如果有配置问题我也可以后续再更新该部分内容

2.配置 PATH 环境变量

  • 右击我的电脑→属性→高级系统设置→环境变量。

在这里插入图片描述

新建系统变量ANDROID_HOME,路径(根据自己安装的SDK位置自行更改)。
在这里插入图片描述
系统变量下编辑Path,新建环境变量

%ANDROID_HOME%\platform-tools //使用ADB命令配置 
%ANDROID_HOME%\tools
%ANDROID_HOME%\build-tools\33.0.2​​​​​​ //使用aapt,xl 等工具

在这里插入图片描述

adb命令测试,win+R,输入cmd,命令行窗口输入adb verison,显示版本等信息表示配置成功。
如果出现:‘adb’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。请检查环境变量配置

3.配置 Android 设备

真机

在 Android 设备上运行或测试扩展屏快应用之前,你需要一个运行 Android 4.1(API 版本 16) 或者更高的Android系统电视或者机顶盒设备。

  1. 在设备上打开 Developer options 和 USB debugging 选项,你可以在 Android documentation 上查看更详细的方法介绍。

  2. 通过 adb connect 设备ip地址 连接设备和电脑,如果在设备上弹出需要授权弹窗,允许授权以便让电脑能够访问你的开发设备。

adb connect XXX(将XXX替换为您的设备IP)

在命令行中,使用 adb devices 命令来确保能够识别出你所连接的 Android 设备。

adb devices

模拟器(初学推荐)

请注意,模拟器不能完全使用拓展屏框架的API,它只能协助你实现大多数的UI功能,对于初学者来说,这是一个了解学习框架比较平滑的途径,但在实际开发中,模拟器无法完全模拟设备现象。
这里可以使用Android Studio里的模拟器,或者下载三方游戏模拟器如:(夜神)等。可以满足最基本的demo使用。

4.安装扩展屏运行环境(重要)

下载扩展屏运行环境

如果把扩展屏应用理解成网站,则runtime就是运行网站所需要的浏览器.
可根据实际需求下载安装runtime来进行开发调试.

注意: release版本不输出log,调试查看log时务必安装debug版本
官方地址:传送门

这里我们直接下载debug版本应用,拖拽到模拟器中。将自动安装
在这里插入图片描述

配置扩展屏运行环境

打开扩展屏运行环境。
这里的教程与官网稍有不同,上面有一串黄色的错误,表明我们并没有正确链接。由于分辨率的影响,下面命令中的–es实际上为两个-组成。

adb shell am broadcast -a  com.extscreen.runtime.ACTION_CHANGE_DEBUG_SERVER --es ip 192.168.xx.xx(电脑IP地址)

>代码如下(示例):
提示服务可用

如果设置完地址后,还是提示服务不可用,可以排查下:

电脑能否ping通电视IP
npm run debug 的终端有没有关闭或停止运行
注意:扩展屏调试APP显示“电脑调试地址:192.168.x.x,并toast提示服务可用,则配置成功。这样每次打开运行环境的时候都会检测配置的电脑 地址是否可用,并给出响应的提示。

二、运行Hello World

这里我们根据官网的教程运行一个Hello World程序

1. 创建应用

  1. 以模板项目创建应用
git clone https://github.com/hanliang-tech/es-vue-template-2.0.git
  1. 安装依赖库
    进入es-vue-template 项目根目录下面执行如下命令:
npm install

进入es-vue-template 项目根目录下面执行如下命令:
打开两个cmd窗口分别执行
在这里插入图片描述

注意:这里先运行npm run dev后,在新窗口在执行npm run debug。它的作用是一个将项目运行起来,一个通过一个简易node服务,与到扩展屏运行环境建立链接。并且建立了一个websocket服务,将应用的日志输出到谷歌中。

npm run dev
npm run debug

2.运行应用

打开扩展屏运行环境查看模板应用
点击屏幕的右侧的圆形(加载测试代码)按钮。(如果上面有黄色提醒,就说明环境仍然没有连接,请返回重新配置)
在这里插入图片描述

注:如点击后,一直显示加载中,执行 adb shell ping 192.168.x.x(电脑ip) 命令来判断电视端是否可以访问到电脑端。此步要确保电视端能访问到电脑端。
而使用模拟器不会出现这种情况。本机vscode和模拟器的网络大部分情况是通的
在这里插入图片描述

3.热重载 (Hot Reload)

热重载是指在不停机状态下,实时更新。这里我们也简单体验一下。

修改项目路径下es-vue-template-2.0/src/views/index.vue文件, 把 Hello World! 修改为 第一个扩展屏快应用。
源文件:

export default {
    name: 'index',
    mixins: [ESPage],
    data() {
        return {
            text: 'Hello World!'
        };
    },
};

修改后的文件:

export default {
    name: 'index',
    mixins: [ESPage],
    data() {
        return {
            text: '第一个扩展屏快应用'
        };
    },
};


保存代码查看效果:
在这里插入图片描述

三、本地调试

在实际开发过程中,查看日志是排查问题的重要手段,调试的方案和一些跨端方案相似,使用的chrome代理。

用 chrome 浏览器打开chrome://inspect/ 勾选 Discover network targets 点击 Configre… 按钮,配置中加入192.168.x.x:38989(必须为localIp,不能是127.0.0.1或者是localhost)
在这里插入图片描述
在新发现的设备下点击 inspect 查看log调试
在这里插入图片描述

实际开发过程中,我发现,log在生命周期等一些特殊异常事件时,会崩溃。或者不显示日志输出,目前的方案是重新npm run debug 启动debug服务,具体原因还有待排查。我会后续更新该问题的解决。

四、问题解答

这里我会持续更新,配置中可能遇到的问题,如果大家在配置中遇到了文章外的问题出现, 请在评论区反馈,我会第一时间给大家解决,并且补充到问题解答中。

总结

本文我们完成了基础环境的搭建,并运行了一个Hello World程序,在下文中,我将以API 演示项目用几篇博文为大家介绍焦点、基础组件、生命周期等API的实战使用。

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

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

相关文章

图像分割的大变革:从SAM(分割一切)到FastSAM、MobileSAM

前言 SAM就是一类处理图像分割任务的通用模型。与以往只能处理某种特定类型图片的图像分割模型不同,SAM可以处理所有类型的图像。 在SAM出现前,基本上所有的图像分割模型都是专有模型。比如,在医学领域,有专门分割核磁图像的人工…

『DotNetBrowser』在.Net中的浏览器嵌入组件,该选择DotNetBrowser 还是 CefSharp?

📣读完这篇文章里你能收获到 全方位对比DotNetBrowser 和 CefSharp的优缺点 文章目录 一、引言二、引擎三、架构1. CefSharp架构2. DotNetBrowser架构 四、对比1. 稳定性和内存使用2. 应用程序域3. AnyCPU4. H.264, AAC5. 安全6. Visual Studio设计器7. 嵌入应用程…

八、c++学习(加餐4:深入分析new和delete)

经过了两篇的类和对象分析,我们这一篇再次加餐,对new和malloc的分析,malloc的源码不在这篇介绍,会放到linux篇的内存池专题,所以我们这篇只要分析new。 这篇的主要目的就是,对象是怎么new出来的&#xff0…

技术干货——Selenium Python使用技巧(三)

目录 处理不同情况的等待 网页中的滚动操作 使用Selenium放大和缩小 查找元素的大小 获取元素的X和Y坐标 使用自定义配置文件禁用JavaScript 设置手动代理设置 总结: 处理不同情况的等待 在Selenium自动化测试中网页可能需要花费一些时间来加载,…

MybatisPlus从入门到精通-基础篇

文章目录 一、概述二、快速入门2.1 数据库准备2.2 创建springboot工程2.3 实体类准备2.4 测试MybatisPlus 三、MP常用配置3.1 设置表映射规则3.2 设置主键生成策略3.3 设置字段映射关系3.4 设置字段和列名的驼峰映射3.5 日志 四、基本使用4.1 增加(插入)…

TF卡/U盘扩容

1. 问题 在使用大于镜像、对TF卡/U盘烧录镜像以后,TF卡/U盘会出现一部分的空闲内存无法被使用,导致出现使用空间不足的报错,或运行大型项目不成功。 注意:本教程仅针对自行烧录镜像的用户,TF卡/U盘内如有出厂镜像则可…

【数据挖掘】时间序列教程【四】

3.3 划分变体 我们可以对上述 的主模型采用方差分析方法,并将中的总变异分解为 为残差平方和和可归因于各种频率的变化。 第二行是可能的,因为平方的所有交叉项都等于零,即对于所有 ,

基于JavaSwing的五子棋游戏设计

点击以下链接获取源码: https://download.csdn.net/download/qq_64505944/87987074?spm1001.2014.3001.5503 运行截图:

4.22. 卷积定理

1. 时域: 我们知道卷积运算是为了求系统的零状态响应的,即,如果输入给系统的信号是f(t),系统函数是h(t),那系统的输出是什么? 就是按照上述方式卷积得到 那上述的卷积在频率域是什么呢? 2. 卷积…

windows系统下的nvm环境安装

1、下载 https://github.com/coreybutler/nvm-windows/releases 直接下载zip包 并安装 2、安装 注意:尽量按照默认路径安装 否则可能出现 nvm 安装完成 后面下载使用node的时候有问题 3、安装完成检测 打开cmd命令 输入 nvm -v出现版本号 则安装成功 4、se…

FullGC调优100倍,掌握这3招,吊打JVM调优

前言: 在40岁老架构师尼恩的读者社区(50)中,很多小伙伴拿不到offer,或者拿不到好的offer。 尼恩经常给大家 优化项目,优化简历,挖掘技术亮点。 在指导简历的过程中, 线上问题排查…

【实用教程】教你一招 IDE 中比较骚的操作技巧!

我靠,这是个高手!这真是个高手! IDEA 有个很牛逼的功能,那就是后缀补全(不是自动补全),很多人竟然不知道这个操作,还在手动敲代码。 这个功能可以使用代码补全来模板式地补全语句&…

02_04_02实时调度类_线程优先级代码实战

知识回忆 基础知识 Linux内核当中有3种调度策略: . SCHED_ OTHER分时调度策略;(普通进程) SCHED_ FIFO 实时调度策略,先到先服务; SCHED RR实时调度策略,时间片轮转。 备注:如果有相同优先级的实时进程(根据优先级计算的调度权值是一样的)已经准备好,FI…

vim和vimplus安装详细步骤

1、vim安装 sudo apt update sudo apt install vim依次执行以上命令,安装好vim编辑器,安装好之后,直接使用vim hello.c进行测试,如果可以进入就没有问题。 2、vimplus安装 2.1 检查vim版本 vim --version vim --version | gre…

微信小程序入门教程

微信小程序入门教程 1、前言1. 相关介绍2. 开发工具 2、微信小程序注册3、 构建第一个微信小程序3.1 微信开发者工具3.1.1 小程序创建3.1.2 小程序项目结构目录介绍 3.2 Hbuilder 4、小程序的发布 1、前言 1. 相关介绍 要学习制作微信小程序,首先要先了解微信公众…

【数据库工具】 图文版介绍Xampp工具的使用实战

前言 有时候懒得安装数据库,就可以使用一些集成工具,比如XAMPP就是一个流行的软件包,便于搭建本地web环境,使用里面的mysql也是相当方便,今天我们就一起来看一下。 🏠个人主页:我是沐风晓月 &…

使用 Keil 环境来写 EK TM4C123G 代码

EK TM4C123G 处理器介绍 就这么一个红板子,上边有两个处理器芯片: 靠上边的芯片,用作仿真/调试器,可以先忽略; 我们重点关注的芯片,位于板子下侧中间。 从丝印上,可以看出芯片的型号为&#…

软件UI工程师的职责模板

软件UI工程师的职责模板1 职责: 1.负责产品的UI视觉设计(手机软件界面 网站界面 图标设计产品广告及 企业文化的创意设计等); 2.负责公司各种客户端软件客户端的UI界面及相关图标制作; 3.设定产品界面的整体视觉风格; 4.为开发工程师创建详细的界面说明文档&…

网联V2X跟踪式微波雷达使用说明书

1 设备简介 网联 V2X跟踪式微波雷达跟踪式微波雷达传感器, 主要应用于高速公路、城市道普通公路等场景, 通过发射 FMCW调频连续波信号调频连续波信号 ,接收路面目标物的回波信号获取目标物的距离、速度和角信息。 传感器通过 以太网或者光纤 …

Linux MQTT环境搭建详细步骤

关于MQTT的安装之前写过一次,但是不够详细,这里重新补充一下,以后用到的时候更方便。 1. 安装MQTT服务器 上网搜索apache activemq,找到它的官网https://activemq.apache.org/。 下载Linux版本。写文档时版本为ActiveMQ 5.18.1 …