【2023最新】超详细图文保姆级教程:App开发新手入门(5)

article/2025/10/2 13:06:14

上文回顾,我们已经完成了一个应用的真机调试,本章我们来了解一下如何引入YonBuilder移动开发的(原生)移动插件, 并利用移动插件完成一个简单的视频播放器。

8. 「移动插件」的使用

8.1 什么是 「移动插件」?

用通俗的话来解释,YonBuilder移动开发内的「移动插件」,是指使用原生语言(android,Object-C)封装好的具备特定功能的SDK程序, 在YonBuilder移动开发引擎的支持下,可以让开发者在JavaScript的编程环境内直接调用使用。开发者无需关心移动插件的内部实现,只需简单的函数调用,即可完成各种复杂原生功能的开发。因为移动插件内部是使用原生语言开发的,所以在运行性能上同原生应用一致,不存在运行性能上的差异,YonBuilder移动开发的「移动插件」是打破混合应用性能瓶颈的绝佳利器。

当前YonBuilder移动开发官网已上线1400+的各种功能的「移动插件」供开发者使用,有兴趣的同学可以访问官方开发者中心 -> 资源市场 -> 移动插件,进行查看 (本方式无需登录)

快速传送门

在这里插入图片描述

可以登录横向的功能分类导航条 或 点击右侧的搜索按钮输入关键词的方式,去查找对应功能的移动插件

8.1.1 移动插件详情页的简单介绍

点击页面列表中的任意一个移动插件图标,即可进入移动插件详情介绍页,查看该插件的具体功能介绍。

在这里插入图片描述

8.1.2 搜索查找需要的功能移动插件,比如我们在搜索框输入”播放器“,就可以显示出和播放器相关的功能移动插件

在这里插入图片描述

8.2. 如何使用移动插件

上面介绍了未登录状态下,查看移动插件的方式,当真正想要使用移动插件时,还是需要在登录状态下进行。当前官方提供两种添加移动插件的方式,下面以集成一个 moviePlayer 为例(这个是官方封装的免费的视频播放器移动插件),详细讲述下如何使用YonBuilder移动开发的移动插件。

8.2.1 添加移动插件

8.2.1.1 方式一:资源市场添加方式

即在登录状态下,按上面 8.1 介绍的方式,访问资源市场 ,搜索栏输入关键词 moviePlayer,找到对应的插件,点击打开插件详情页,然后点击「立即使用」按钮,在弹出的弹窗上选择对应的租户和应用,即可完成插件的添加。

在这里插入图片描述

8.2.1.2 方式二:在应用管理页面内添加(常用推荐)

首先我们先进入云端的应用管理页。

页面访问路径:

  • 登录用友开发者中心网站:developer.yonyou.com - 点击左侧菜单栏中的「移动开发」(或 点击左上角「大风车」图标,选择 云平台-低代码开发平台-移动APP开发)

    在这里插入图片描述

  • 列表页选择对应的应用,点击即可进入应用的管理界面 - 切换导航到「移动插件」- 二级导航切换到「移动插件库」- 搜索栏输入关键词 moviePlayer - 找到对应的插件,点击 + 按钮,完成插件的添加

    在这里插入图片描述

    PS1: 如果想查看插件的功能介绍或者使用文档,可以点击对应的插件左侧的图片,即可弹出详情介绍弹窗;

    在这里插入图片描述

    PS2: 此处「移动插件库」页面的搜索栏,默认是支持全类别搜索的。

    在这里插入图片描述

8.2.2 查看已添加的移动插件

切换导航到「已添加插件」,可查看当前应用已添加的所有移动插件。

在这里插入图片描述

8.2.3 重新编译应用安装包(重要)

每当有新的移动插件添加到应用中时,为了使移动插件在代码中生效,我们需要重新进行一次移动打包编译(自定义Loader或者「移动打包」页的[ 正式版|测试版 ]。其内在原理是 所有的原生移动插件代码源码都存储在官网服务器上,当某个应用需要使用某个移动插件时,服务器需要通过「移动打包」的编译功能动态的将移动插件对应的代码注入到具体的应用中,这样新添加的移动插件才可以在这个应用中生效。

本次教程使用的是自定义Loader进行演示,我们切换导航到「Loader调试」

在这里插入图片描述

编译成功后,重新下载自定义loader,并安装到手机移动端(或者模拟器上)。

在这里插入图片描述

8.3 [实战示范]:引用移动插件并编写对应代码

打开YonStudio开发工具,按以下描述进行代码修改

8.3.1 修改html/main.html文件

先提供一下修改后的 mian.html 文件的完整代码(可以直接复制替换原有的 mian.html 内代码)

<!DOCTYPE HTML>
<html>
<head><meta charset="utf-8"><meta name="viewport" content="maximum-scale=1.0, minimum-scale=1.0, user-scalable=0, initial-scale=1.0, width=device-width" /><meta name="format-detection" content="telephone=no, email=no, date=no, address=no"><title>Hello APP</title><link rel="stylesheet" type="text/css" href="../css/apiutil.css" /><style>label {margin: 10px;font-size: 24px;color: red;}ul {margin-bottom: 10px;}ul li {margin: 5px 10px;padding: 5px;color: #000;word-wrap: break-word;}.video-wrap {width: 100%;height: 300px;}</style>
</head><body><div id="wrap" class="video-wrap"></div><label>YonBuilder移动开发 视频播放器</label><div id='sys-info'></div>
</body>
<script type="text/javascript" src="../script/apiutil.js"></script>
<script type="text/javascript">apiready = function() {        // 调用执行初始化播放器initMoviePlayer();};// 定义一个函数,用于初始化 moviePlayer 移动插件对象function initMoviePlayer () {// 初始化 moviePlayer 移动插件对象var moviePlayer = api.require('moviePlayer');// 获取上个页面传递的navH参数值var navH = api.pageParam.navH;// 获取id = wrap dom元素的宽高尺寸var videoRect = $api.offset($api.byId('wrap'));// 启动播放器moviePlayer.open({// 设置播放器的尺寸rect: { x: videoRect.l,y: navH, // 设置播放器具体顶部的距离,用于避免覆盖顶部的NavBarw: videoRect.w,h: videoRect.h},// 设置播放器的外观样式styles: {head: {height: 0},foot: {bg: 'rgba(0,0,0,0.5)',height: 44,currentTimeLabel: {textSize: 14,textColor: "#FFF",textWidth: 43,marginLeft: 5},totalTimeLabel: {textSize: 14,textColor: "#FFF",textWidth: 43,marginRight: 5}}},// 测试的视频资源地址path: 'https://media.w3.org/2010/05/sintel/trailer.mp4',// 设置播放器初始化后,是否自动播放autoPlay: true}, function (ret, err) {// 这里的回调参数当播放器状态改变后,会触发相关回调,可以在这里写一些交互逻辑});};
</script></html>

下面对修改的部分,简单进行一下代码逻辑讲解:

    1. 修改 html 页面内的代码,在 body 标签内加入一个 dom 占位元素<div id="wrap" class="video-wrap"></div>,并修改 label 标签内的文字 <label>YonBuilder移动开发 视频播放器</label>
    <body><div id="wrap" class="video-wrap"></div><label>YonBuilder移动开发 视频播放器</label><div id='sys-info'></div>
    </body>
    

    PS: moviePlayer 移动插件是使用原生语音开发的,并不在html的dom文档流内,所以需要创建一个dom元素去占位,避免 播放器的界面遮挡了原来的dom元素内容。

    1. style标签内添加 步骤3 新增的dom元素需要的样式代码
    <style><!--省略原有代码-->.video-wrap {width: 100%;height: 300px;}
    </style>
    
    1. 在底部的script脚本标签内部,新增定义一个 initMoviePlayer 函数方法,用于初始化 moviePlayer 移动插件
    // 定义一个函数,用于初始化 moviePlayer 移动插件对象
    function initMoviePlayer () {// 初始化 moviePlayer 移动插件对象var moviePlayer = api.require('moviePlayer');// 获取上个页面传递的navH参数值var navH = api.pageParam.navH;// 获取id = wrap dom元素的宽高尺寸var videoRect = $api.offset($api.byId('wrap'));// 启动播放器moviePlayer.open({// 设置播放器的尺寸rect: { x: videoRect.l,y: navH, // 设置播放器具体顶部的距离,用于避免覆盖顶部的NavBarw: videoRect.w,h: videoRect.h},<!--其余代码略,具体参见上面的完整代码-->});
    };
    

    PS1: 语句var navH = api.pageParam.navH;, 使用了一个 api.pageParam api方法,这个是官方提供的api对象的方法,具体作用是 获取上个页面传递过来的参数值。 更多的关于 api 对象方法的介绍,可见 API对象 官方文档

    PS2: 语句 var videoRect = $api.offset($api.byId('wrap'));, 目的是获取 步骤1 添加的 dom占位元素的宽高尺寸,因为 moviePlayer 初始化时,需要给 rect 参数设置播放器的宽高等位置尺寸,这里获取就是为了保持一致。

    PS3: 语句 var videoRect = $api.offset($api.byId('wrap')); 这部分的代码里使用了 两个 $api 对象方法,$api.byId方法是可以根据 id值去获取 页面内的 dom元素, 功能同 document.getElementById, $api.offset 方法是获取dom元素的形状尺寸, 这个 $api 对象是引入的 script/apiutil.js 脚本实现的, apiutil.js 是官方封装的一个前端工具框架,具体可见 YonBuilder移动开发前端框架 官方文档

    <script type="text/javascript" src="../script/apiutil.js"></script>
    
    1. 修改apiready方法,清空原内部的逻辑代码,并加入了调用 步骤1函数的语句。
    apiready = function() {        // 调用执行初始化播放器initMoviePlayer();
    };
    

    PS: apiready 方法是 YonBuilder移动开发中 每一个 html 文件的入口启动函数,官方提供的大量api方法(如 api.openWin 等)都需要等页面加载 api 对象后才可以使用,否则程序会报错。而 apiready 函数方法就是 html 页面加载完 api 对象后,会主动调用执行的函数方法。所以我们可以理解为 apiready 函数就是 html 页面的入口自执行启动函数。

8.3.2 修改index.html文件

在 index.html 页面内的 79 行,为 api.openFrame 增加以下 pageParam 参数, 具体代码如下

pageParam: {navH: headerH // 顶部NavBar的高度值
}

该修改是为了呼应 8.3.1 操作中 第 3 步 中PS3 描述的 获取 api.pageParam 参数值,将页面顶部 NavBar占据的高度值(包括 statusBar 占据的高度) 发给 main.html 页面,供 播放器 设置距离顶部的距离。

在这里插入图片描述

PS: 每次修改文件后,记得保存文件,这样修改才能生效。

8.3.3 同步代码

    1. 启动自定义AppLoader,并与 YonStudio工具进行连接(要保证 自定义AppLoader内的。(具体还不会的同学,可以查看上个大章节(4)的相关介绍 )
    1. 鼠标右键点击 widget 文件夹,并选择 WIFI同步(全量) (或者可以直接使用对应的快捷键)

    在这里插入图片描述

同步后,即可在AppLoader端查看到运行效果,如下图( 是不是很方便 -

在这里插入图片描述

8.4 后话

上面仅仅是简单的示范了一下使用移动插件的方法,为了方便新手理解,并没有深入的扩展。比如上面使用的moviePlayer移动插件就有很多的方法,有兴趣的同学可以查看移动插件对应的开发文档,自行修改查看运行效果。

moviePlayer的开发说明文档地址

另外,官方也提供了「自定义插件」的扩展原生插件机制,支持开发者去根据需要自行封装「移动插件」。

友情提示:「自定义移动插件」这块属于扩展功能,不会也完全不影响正常的应用开发,建议掌握了android开发或iOS开发能力的同学查看,其他人可忽略

更多关于「自定义移动插件」的介绍说明,可查看以下链接

  • 移动原生插件开发设计规范
  • 移动原生插件开发指南-iOS
  • 移动原生插件开发指南-AndroidEclipse
  • 移动原生插件开发指南-AndroidStudio

(未完待续…)


http://chatgpt.dhexx.cn/article/vcTUxjCn.shtml

相关文章

初学者福音——10个最佳APP开发入门在线学习网站

根据Payscale的调查显示&#xff0c;现在的APP开发人员的年薪达到&#xff1a;$66,851。这也是为什么那么多初学的开发都想跻身到APP开发这行业的主要原因之一。每当你打开App Store时候&#xff0c;看着琳琅满目的APP&#xff0c;你肯定会被它们精致的外观和巧妙的设计吸引住。…

【2023最新】超详细图文保姆级教程:App开发新手入门(3)

上文回顾&#xff0c;我们已经完成了一个应用项目创建、导入、代码更新、代码同步和代码提交&#xff0c;本章继续我们的新手开发之旅&#xff0c;讲述一下如何将开发完成的应用进行编译&#xff0c;生成可供他人安装、可上架的应用安装包。 6 应用打包 应用打包&#xff0c;…

一看就懂的Android APP开发入门教程

http://www.android100.org/html/201502/22/122385.html 工作中有做过手机App项目&#xff0c;前端和android或ios程序员配合完成整个项目的开发&#xff0c;开发过程中与ios程序配合基本没什么问题&#xff0c;而android各种机子和rom的问题很多&#xff0c;这也让我产生了学习…

1、Android APP开发基础

1、APP的工程结构 App项目下面有两个分类&#xff1a;app&#xff08;代表app模块&#xff09;、Gradle Scripts。 app下面又有3个子目录&#xff0c;功能说明如下&#xff1a; manifests子目录&#xff0c;存放AndroidManifest.xml&#xff0c;它是App的运行配置文件。 jav…

超详细图文保姆级教程:App开发新手入门(六)

重要&#xff1a; 想学习APP开发的新手同学&#xff0c; 建议访问我发布的最新版本的文章教程 【2023最新】超详细图文保姆级教程&#xff1a;App开发新手入门 设置应用的Logo图标和启动页 上文回顾&#xff0c;我们已经完成了一个简单应用的开发&#xff0c;本章我们简单介绍…

MacOS-APP 开发入门篇

转载自(https://macdev.io/ebook/start.html) 准备工作 Mac电脑 Mac开发准备工作&#xff0c;Mac电脑不必说了 只有用真正的Mac电脑才可以提升&#xff0c;熏陶你的审美&#xff0c;你才可能做出美的有价值的用户产品。如果你使用很普通的磨具想锻造出一把锋利的刀剑&#xff…

【2023最新】超详细图文保姆级教程:App开发新手入门(1)

1. 关于 『YonBuilder移动开发』 PS: 本段内容主要目的是去除官方语音描述&#xff0c;用通俗的语言来简单介绍一下『YonBuilder移动开发』&#xff0c;方便新手开发者判断是否适合自己上手学习。 简介&#xff1a; YonBuilder移动开发平台(官网&#xff1a;https://develope…

Android新手如何学习开发一款app?

毫无疑问&#xff0c;开发一款自己的App对于初学者来说&#xff0c;无论从技术学习&#xff0c;还是找工作&#xff08;或者装x&#xff09;&#xff0c;都是一大利器。那么如何才能快速上手&#xff0c;开发一款属于自己的app。本篇文章仅以自己的一些经验给更多的Android新手…

鸿蒙APP开发入门到进阶 | 入门完整篇。

大家好&#xff0c;我是 码工&#xff0c;一个有十年工作经验的码农&#xff0c;一心追求技术。 先说说我的开发经历&#xff0c;10年毕业&#xff0c;到目前已经十多年开发经验&#xff0c;大学学习了多种语言&#xff0c;Java&#xff0c;Android&#xff0c;c&#xff0c;c&…

超详细图文保姆级教程:App开发新手入门(二)

重要&#xff1a; 想学习APP开发的新手同学&#xff0c; 建议访问我发布的最新版本的文章教程 【2023最新】超详细图文保姆级教程&#xff1a;App开发新手入门 上文我们已经成功的创建了一个项目&#xff0c;接下来我们讲述一下&#xff0c;如何导入、编辑、提交项目代码下面我…

开发一款Android App,从零开始详细讲解

入门篇&#xff1a;第一篇&#xff1a;开发环境篇第二篇&#xff1a;材料设计篇第三篇&#xff1a;规范开发篇第四篇&#xff1a;从项目开发到上架篇&#xff08;篇章调整&#xff0c;最后更新&#xff09; 进阶篇&#xff1a;第五篇&#xff1a;设计模式篇第六篇&#xff1a;…

app后台开发入门

2017/5/1第二次更新 前言&#xff1a; 在我写下这篇文章之前&#xff0c;我头脑中的app后台开发&#xff0c;有且只有一个流程“客户端Cilent向服务器Server请求数据&#xff0c;服务器Server响应客户端请求并返回json数据”。但是&#xff0c;仅仅用语言描述出这个流程&#…

手机app开发(新手教程)

咳咳&#xff5e;好久不见亲们。估计你们已经忘了我的存在了吧。小编表示很伤心&#x1f494;。唉没办法最近事情有点多&#xff08;实则就是太懒&#xff0c;不想跟新&#xff09;。不过今天我先跟大家分享的是我最近研究的新方向。手机app开发。感兴趣的朋友欢迎点赞关注。小…

超详细图文保姆级教程:App开发新手入门(三)

重要&#xff1a; 想学习APP开发的新手同学&#xff0c; 建议访问我发布的最新版本的文章教程 【2023最新】超详细图文保姆级教程&#xff1a;App开发新手入门 上文我们已经完成了一个应用项目的导入、代码更新和代码提交&#xff0c;本章继续讲述一下&#xff0c;如何在开发过…

超详细图文保姆级教程:App开发新手入门(五)

重要&#xff1a; 想学习APP开发的新手同学&#xff0c; 建议访问我发布的最新版本的文章教程 【2023最新】超详细图文保姆级教程&#xff1a;App开发新手入门 上文回顾&#xff0c;我们已经完成了一个应用的版本编译&#xff0c;本章我们来了解一下如何引入APICloud的原生模块…

超详细图文保姆级教程:App开发新手入门(一)

重要&#xff1a; 想学习APP开发的新手同学&#xff0c; 建议访问我发布的最新版本的文章教程 【2023最新】超详细图文保姆级教程&#xff1a;App开发新手入门 1. 关于APICloud PS: 本段内容主要目的是去除官方语音描述&#xff0c;用通俗的语言来简单介绍一下APICloud&#x…

大数据的数据科学与关键技术是什么?

对于大数据想必大家都有所了解了吧&#xff1f;随着信息化的不断发展&#xff0c;大数据也越来越被人们所熟知。我们都知道&#xff0c;现在很多行业都离不开数据分析&#xff0c;在数据分析中我们有听说了大数据&#xff0c;大数据涉及到了很多的行业&#xff0c;一般来说&…

大数据的相关技术

架构、采集、存储、计算处理和可视化等 架构设计技术: Flume、Zookeeper和Kafka采集技术: Python和Scala存储技术&#xff1a;Hbase、Hive、Sqoop计算技术: Mahout、Spark和Storm可视化技术: Echart和Superset 大数据技术是一系列使用非传统的工具来对大量的结构化、半…

大数据分析,主要运用了哪些关键技术?

古代&#xff0c;人们用牛来拉重物&#xff0c;当一头牛拉不动一根圆木时&#xff0c;他们不曾想过培育更大更壮的牛。同样&#xff0c;在面对计算能力不足时&#xff0c;我们也应尝试着结合使用更多的计算机系统。 Hadoop就是基于这样的理念设计。Hadoop是一个由Apache基金会…

巨龙信息大数据集成系统 多元数据汇聚的一站式集成治理

巨龙大数据集成系统以20多年数据治理实践为基础&#xff0c;自主研发&#xff0c;兼容适配信创&#xff0c;为海量异构数据的超大规模数据仓库建设&#xff0c;提供抽取、清洗、整合、入库等一站式集成服务&#xff0c;帮助高效开展数据治理&#xff0c;助力数字化转型。 产品…