flutter 开发2- 储备知识

本文详细介绍了GPU的工作原理,包括其在显卡中的作用、功耗特性以及与CPU的集成方式。同时,深入探讨了GPU如何与屏幕刷新率协调工作,避免图像显示问题。此外,文章对比了Flutter与React Native的性能差异,分析了Flutter的绘图原理,以及Dart语言在跨平台开发中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

显卡 GPU
  • GPU就是图像处理芯片,GPU是显卡的核心,
  • 显卡是由GPU、显存、电路板,还有BIOS固件组成的
  • GPU因并行计算任务较重,所以功耗较大,只能焊接在显卡的电路板上使用
  • 集成显卡,一般GPU就和CPU集成在一起,这时候它和CPU共用一个风扇和缓存
  • GPU开发厂家只有2个,一个是AMD(ATI),一个是NVIDIA英伟达
图是如何显示的
  • 我们看到计算机的画面都是图像
  • fps 每秒多少个画面
  • 刷新率,显示器的频率iphone 60hz 每秒刷新60次
  • GPU绘制图像,放到buffer缓存
  • 屏幕刷新取得缓存图片
  • 理想是帧率和刷新率一样,每次绘制一帧,显示一帧
  • 帧率绘制图像是,是从上向下覆盖,如果帧率快于刷新率,又可能下一图像是上下各一半显示
  • 如果没有锁,容易出现问题 ,锁是消耗性能的
  • 解决问题,就是双层缓存(back buffer、frame buffer) Vsync 垂直同步信号
  • GPU写数据到back buffer,屏幕是取 frame buffer
  • Vsync 负责调度从back buffer到 frame buffer的复制操作
  • 复制完图像之后,通知GPU去绘制下一个画面
  • 双层缓存缺陷-当GPU绘制图像时间过长,会产生jank,产生空白
  • 三重缓存 减少 双层缓存缺陷
跨平台演变
  • webview/UIwebview 嵌入网页
  • react-native
  • flutter
flutter vs RN
  • flutter 速度比RN快很多
  • flutter需要一门新语言dart
  • RN是使用jsvm 调用原生接口
Native -> RN -> Flutter
  • 原生 java代码 -> 安卓框架 -> Skia (绘图性能)-> CPU&GPU
  • RN RN代码 -> 安卓框架 -> Skia -> CPU&GPU
  • Flutter Flutter(DART) -> Skia -> CPU&GPU
  • 以ios开发 oc语言为例,react-native 要 js代码 -> js bridge -> oc bridge -> oc module 几个过程,性能不如flutter
flutter 绘图原理
  • GPU同步信号到UI线程
  • UI线程用Dart构建图层树
  • 在GPU线程进行合成
  • 合成之后交给Skia
  • Skia渲染后交给GPU绘制
渲染引擎 skia

是flutter向GPU提供数据的途径,c++写的 2d的图形库,skia公司开发,后来被谷歌收购 ,flutter 安卓 sdk默认支持,对于IOS需要引入,所以打包体积把安卓大

dart

dart语法和js差不多,很简单

APK

Android应用程序包(英语:Android application package,APK)是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。 一个APK文件内包含被编译的代码文件(.dex 文件),文件资源(resources), assets,证书(certificates),和清单文件(manifest file)

flutter 常用命令
  • flutter --version
  • flutter --help
  • flutter doctor 显示安装工具的信息
  • flutter upgrade 升级你的flutter副本
  • flutter create 创建一个新的项目
  • flutter run 在设备上运行你的flutter程序
  • flutter build 构建命令
  • flutter install 在附加设备安装flutter应用程序
  • flutter clean 删除构建项目
  • flutter devices 列出所以连接设备
  • flutter analyze 分析dart代码
  • flutter logs 运行的日志信息
  • fluter packages 管理flutter包
  • flutter channel 列表或者开关flutter通道
Note
  • Android 4.4及其以上版本Google 采用了 Chromium(http://www.chromium.org/) 作为系统WebView的底层内核,而不是WebKit
  • 安卓模拟器 推荐夜神模拟器,而不用官方自带
  • 调试
    flutter run之后
    R键 是热加载
    P键 显示布局网格
    O键 切换 ios和android显示样式
  • ios默认项目目录没有权限,要 chmod -R 777 *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值