flutter 开发2- 储备知识

显卡 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 *

猜你喜欢

转载自blog.csdn.net/qq_29334605/article/details/105595589