当前位置: 首页 > news >正文

Android TV跨平台开发心得

这半年来陆陆续续做了一堆poc,刚开始是flutter,结果领导叫停了,说有其他部门做一样的事,真不巧;后来是react native,开发了个demo,上报上去了已经;现在又要做android native+webview PWA,也做的差不多了。一直忙到现在,终于喘口气。前两天领导让我出一个flutter培训,惊奇的发现,才放下不久的flutter已经忘的差不多了,估计react native也快了,再不总结一下,半年就白干了

纯主观感受,没有一点客观

Flutter最大的一个特点就是它的skia引擎,让给我的感觉就像一块画布,skia在上面画,这个画布不管铺到ios,安卓,还是什么其他的(据说还能用来开发桌面端和web,真的有人这么干吗),都是一样的,带来相同的体验

React Native的是用的原生的组件,不过我觉得吧,一个view,你width height设置好了,bgcolor shadow全填了,那还能显示的不一样?不过确实,针对不同平台不同写法的情况是有的,比如<video>,react-native-video,一堆选项ios专用,这就是由于底层安卓用的是exoplayer,ios用的avplayer,exoplayer和avplayer的feature不同导致的。但是这个,flutter的video就没有吗,也不见得吧,flutter 也是 embad 到这俩player的

然后flutter还有一个,就是它的引擎,巨大无比,装在apk包里,apk包巨大,装在tpk包里,tpk包巨大。这个其实要是装app还好,装得上去就行,但如果是想做web页面,这个首屏加载速度简直感人,给大家放一个flutter demo感受一下:
https://flutter.github.io/samples/web/material_3_demo/

所以我觉得总体上Flutter好像相对React Native没看出什么特别的优势,而且它是dart写的,很多人一看到dart就害怕了,要新学,就算了

dart其实不难,有点像java,就是很面向对象,还有关键字啥的。反正我当时学会了StatelessWidget和StatefulWidget就上手写了,不会的现查,也写的挺顺利的

倒是开发react native,js,老本行啊,我当时可有信心了,感觉这不是容易的很,但是,奉劝大家,手里已经有一个写好的react项目的,千万不要觉得迁移到react native非常方便!一点都不方便!不止是div要换成View的问题,webapp用的那些包,什么sass,className,都要找react native版本的替代,能替代的,配置配一个下午,替代不了的,等着重写吧,比如关于页面跳转的,web和android app的逻辑都不一样,只能用react navigator重写

还有样式,没想到样式表从scss拉过来放到js里面这么长,这怎么不算一种css-in-js呢(x),甚至还不支持嵌套!这一个从json create的StyleSheet,不支持这个json嵌套!还有那个动画,只能说幸好我写过flutter,有一点底子,要不然直接从css动画过渡过去,肯定满脸懵

可能是开发用的电视棒的比较低端,同样的代码,在webapp里很快,开发react的时候也很少useMemo啥的,react native可好了,响应速度感人,没做优化前四五百毫秒都是有的,优化后200ms以内,喜欢顺手写onFocus={() => {setFocus(true); focusCb();}}的人有难了,必须提出来用useCallback包一下,要不然这个cb对象会重新生成,它生成不要紧,下面的所有自元素接到命令都要重新生成。。。

其他的下次再写吧,该下班了

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • DataExcelServer局域网文件共享服务器增加两个函数
  • 【Android高级UI】计算不规则图形面积
  • 【人工智能】-- 法律与伦理
  • 对数据采集、数据存储和数据处理流程
  • 字节码编程javassist之增加异常捕获
  • 如何安全隐藏IP地址,防止网络攻击?
  • Open3D 从体素网格构建八叉树
  • 权力之望怎么注册账号创建角色 权利之网角色账号注册教程
  • vue配置sql规则
  • Zabbix自动发现
  • 白骑士的C++教学基础篇 1.1 C++简介
  • 非参数检测5——双输入检测系统
  • 群体优化算法---文化算法介绍,求解背包问题
  • DNF手游攻略:云手机辅助刷副本!内置辅助工具!
  • springboot中抽离日志
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • $translatePartialLoader加载失败及解决方式
  • 【个人向】《HTTP图解》阅后小结
  • 2017年终总结、随想
  • ES6系列(二)变量的解构赋值
  • express如何解决request entity too large问题
  • Java 多线程编程之:notify 和 wait 用法
  • jquery cookie
  • JS+CSS实现数字滚动
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Mocha测试初探
  • Python学习笔记 字符串拼接
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 聚簇索引和非聚簇索引
  • 前嗅ForeSpider教程:创建模板
  • 写给高年级小学生看的《Bash 指南》
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 你对linux中grep命令知道多少?
  • PostgreSQL 快速给指定表每个字段创建索引 - 1
  • ​总结MySQL 的一些知识点:MySQL 选择数据库​
  • #Datawhale AI夏令营第4期#AIGC文生图方向复盘
  • #FPGA(基础知识)
  • #if等命令的学习
  • #NOIP 2014# day.1 T2 联合权值
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • $.each()与$(selector).each()
  • (42)STM32——LCD显示屏实验笔记
  • (C语言)深入理解指针2之野指针与传值与传址与assert断言
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)ssm基于web技术的医务志愿者管理系统 毕业设计 100910
  • (六)c52学习之旅-独立按键
  • (四) 虚拟摄像头vivi体验
  • (四)Linux Shell编程——输入输出重定向
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • 、写入Shellcode到注册表上线
  • .bat批处理(一):@echo off
  • .java 9 找不到符号_java找不到符号