添加微信群,试用软件
复制微信号
关键词:颤振,颤振插件,平台通道,方法通道,颤振包,颤振插件
Flatter是谷歌使用gallop语言开发的移动应用程序开发框架。它不同于其他开发框架:
(1)由于颤振使用aot预编译代码作为机器代码,因此其运行效率更高。
(2)浮动用户界面控件不使用底层本机控件,而是由skia渲染引擎绘制。由于它不依赖于底层控件,因此具有良好的多终端一致性。
(3)颤振也是非常可扩展的。开发人员可以通过插件与他们的出生地进行通信。
在发展颤振的过程中,游鱼往往需要各种发源地的能力,如获取设备信息和使用基础网络库等。此时,插件将用于桥接。本文将详细介绍该插件,希望能对Flitter开发者有所帮助。
本文首先介绍了颤振插件及其原理,然后解释了插件所依赖的平台通道,然后对“获取剩余功率的插件”进行分解,最后与您分享您之前踩过的坑。
在介绍插件之前,让我们简要了解一下颤振:
颤振框架包括:框架和发动机,它们在各自的平台上运行。
该框架由gallop语言开发,包括材质设计风格的小部件、c u p e r t i n o(ios风格)风格的小部件、文本、图片、按钮和其他基本小部件,以及渲染、动画、绘图、手势和其他基本功能。
该引擎用c语言实现,包括skia(二维图形库);d a r t虚拟机(d a r t运行时);文本(文本呈现)等。
实际上,较高的颤振能力是由发动机提供的。颤振是平滑每个平台差异的引擎。我们今天要讨论的插件是通过引擎提供的平台通道实现的通信。
从上图中,我们可以看到Flatter应用程序是由插件创建的平台通道调用的本机api
平台频道:
颤振应用程序(客户端)通过方法通道类向平台发送调用消息;android平台(主机)通过方法通道类接收调用消息;IO平台(主机)通过颤振通道类接收呼叫消息。
postscript:消息编解码器是JSON格式的二进制序列化,因此调用方法的参数类型必须是可序列化的。
postscript:对于方法调用,也可以反向发送调用消息。
安卓平台
该活动是android的插件管理器,它记录所有插件并将它们绑定到beauty
i o s站台
代理是internet操作系统的插件管理器,它记录所有插件并将它们绑定到颤振控制器(默认为r o t v i e w c o n t r o l e r)
首先,我们创建一个插件(Flatter plug-in battery level)项目。插件也是项目,但项目类型不同。
(1)在欢迎界面中,单击创建新项目或单击文件>新建>项目
(2)从左侧菜单中选择“颤振”,然后单击“下一步”
(3)输入项目名称、项目位置和项目类型,然后选择“插件”
(4)最后,单击finish
项目类型:
(1)应用,抖动偏振应用
(2)插件泄露了安卓和互联网操作系统的应用编程接口,导致应用程序抖动;
(3)该包封装了一个gallop组件,比如“浏览大图片小部件”
ps:插件由三部分组成:DART、NDROID、IOS和代码。
3.2.1方法通道:颤振应用程序调用本机api
首先,我们给出一个例子,方法通道的名称必须是唯一的,然后调用调用方法()方法。调用方法()有两个参数:
(1)方法名称,不能为空;
(2)调用方法的参数,该参数必须可序列化,并且可以为空。
3.2.2.e v e n t c h a n e l:本地呼叫颤振应用
3.3.1.插件注册
在颤振活动的o n c r e a t e()方法中,注册插件
(1)通道名称:必须与颤振应用的通道名称一致;
(2)初始化方法通道和事件通道时,需要传递注册器,即活动
(3)设置方法通道的h a n d l e r,即方法c a l h a n d l e r
(4)设置事件通道的h a n d l r,即事件通道。s t r e a m h a n l e r
3.3.2 m e t h o d c a l h a n d l r和e v e n t c h a n e l。流线型处理器
m e t h o d c a l h a n d l r实现方法通道的颤振应用程序调用局部a p i
事件频道。streamline processor实现了事件通道发源地的调用颤振应用
m e t h o d c a l h a和l e r:
(1)MET h o d c a l上的公众无效(MET h o d c a l调用、结果);
事件频道。s t r a m h a n d e r:
(1)Pu b l i c o i d o n l i s t n(o b j e c t o b j,e v e n t c h n e l.e v e n t s i n k)
(2)取消后的无效公众(目标o、b、j);
3.4.1.插件注册
互联网操作系统的插件注册过程与android一致。只需向p-p-d-e-l-e-g-a-t-e(p-p-d-e-l-g-a-t-e)注册即可
颤振通道和颤振事件通道绑定到此控制器
3.4.2.处理程序:
现在我们有了插件,但是如何将其加载到颤振应用程序项目中呢?
这是酒吧。bar是gallop语言提供的一种包装管理工具。
说到包裹,它有两种类型:
(1)飞镖包:只包含飞驰代码,如“浏览大图小部件”
(2)插件包:包含的gallop代码可以调用android和互联网操作系统实现的本地AP i,如“获取剩余电量的插件”
(1)通过编辑p u b s p e c。y m l(在应用程序根目录下)来管理依赖关系;
(2)mol/m3摆动包装或标准n t e z-准平衡z-准平衡j点击包装针叶树
(3)导入打包并重新运行应用程序。
有三种管理依赖性方法:托管包、GIT包、PA t h包
如果你想让更多人使用你的呕吐物,你可以把它发布到dartrand酒吧。组织
发布托管包:
加载管理包:
编辑p u b s p e c。亚马尔:
如果你的代码不经常更改,或者你不想让别人更改,你可以使用git来管理你的代码。
让我们先创建它吧?一个插件(Flatter远程包)并将其传输到git,然后标记它
正在加载g i t p a c k a g e s:
编辑p u b s p e c。亚马尔:
注意:引用可以指定提交、分支或标签
ps:如果你的代码不需要特殊的场景,你可以直接把包放在本地,这对开发和调试非常方便。
我们在flatter应用程序项目(flatter application)的根目录中创建一个文件夹(plug-in),然后将插件(flatter plug-in电池级)移动到插件中。
加载路径包:
编辑p u b s p e c。亚马尔:
我们已经在p u b s p e c了。
此时需要执行pod安装(或pod更新)
[s e l f.w i n d o w s e t r o o e w c o l e:[f l a t r v i w c o l e r o l c]
n i b n a m e:n i l b u n d l e:n i l]
[s e l f.w i n d o w s e t b a c g r o n d c o r:[u i c o r w i t c o r]
] ;
[s e l f.w i n d o w m a k e k y d v i s i b e]
;
r t u r n[s u p e r a p l i c a o n:p p l i c a o n d i d f i s h l a u n c h i o n s:l a u n c h o o n s]
}
@终止
默认情况下,[g en e r a t e p l u g i i s t r a n t注册表,注册表:s e l f]注册到您自己的窗口r o o t v i w o l r。
因此,您需要先初始化r o t v i e w c o t r o l e r,然后注册插件
启动颤振应用程序后,出生地调用颤振失败?
这是因为插件通道的初始化大约需要15分钟。秒,这是一个异步过程。虽然显示了颤振页面,但插件通道尚未初始化,因此此时出生地的呼叫颤振没有响应。
idle fish的主页是出生地的页面,因此窗口的r o t v i w t r o l l e r不是控制器,直接注册插件将失败。我们需要将插件注册到指定的控制器
我代表。H
我们需要在一个p-p-d-e-g-a-t-e中重写上述两个方法,并且需要指定方法中的返回。这是控制器
应用层a调用应用层i的能力非常依赖于应用层a的聊天。
在调用插件方法的过程中,可能会遇到传递复杂参数的情况(有时需要传递对象),但插件的参数是经过JSO n序列化后的二进制数据,因此参数必须是可序列化的。我认为应该有一个对象映射层来支持对象的传输。
当涉及到插件参数传输时,插件具有非常强大的传输纹理(纹理)的能力。空闲鱼的颤振视频播放实际上使用其出生地的播放器,然后将纹理(纹理)传递给颤振应用程序
没有供应的闲置鱼类的做法是什么?如何做到这一点?游手好闲的鱼没有货源。闲置市场规模超过万亿。二手电子商务迎来了循环经济的红利。“校园圈”真的能成为游鱼生长的第二个引擎吗?如果闲置的鱼被恶意退回怎么办?开店时如何提高闲置鱼的暴露率?