Flutter在iOS中一些点
1. ios对Flutter有如下依赖
- Flutter.framework: Flutter engine等;
- APP.framework:业务代码, 由dart代码生成。App.framework也包含了kDartVmSnapshotData,kDartVmSnapshotInstructions,kDartIsolateSnapshotData,kDartIsolateSnapshotInstructions四个部分 ;
- Flutter Plugin: plugin相关;
- flutter_assets: Flutter依赖的静态资源,如字体,图片等。
2. iOS工程是怎么路由到dart的?
(1)ios初始化flutterVC
FlutterViewController* flutterViewController = [[FlutterViewController alloc] initWithProject:nil nibName:nil bundle:nil];
[flutterViewController setInitialRoute:@"myApp"];
(2)dart项目的main函数启动并由window.defaultRouteName拿到route
void main() {
runApp(_buildWidget());
}
Widget _buildWidget() {
String route = window.defaultRouteName;
....
return widget;
}
(3)Flutter.framework渲染页面
3. kernel_blob.bin文件的作用是什么?为什么模拟器运行需要此文件,真机运行不需要此文件?
kernel_blob.bin是业务代码的产物 Dart kernel bytecode ,在debug调试的时候,Dart的代码有改动,则 kernel_blob.bin也会有相应的改变。release模式(AOT模式)下,dart编译器会用Dart kernel bytecode编译成二进制的arm集成代码。
也就是说,模拟器运行是Debug模式(JIT模式),业务代码的来源是需要两个文件,一个是APP.framework里的App二进制代码一个是kernel_blob.bin。而真机运行是release模式(AOT模式),直接可以运行APP.framework里的App二进制代码。所以模拟器需要kernel_blob.bin文件,真机不需要kernel_blob.bin文件。
4. Flutter项目里构建iOS包的常用命令
4.1 flutter build
(1)flutter build ios
lipo -info .ios/Flutter/App.framework/APP 查看结果是armv7 arm64
题外话:pod package打包iOS framework命令
pod package hummer_container.podspec.json --spec-sources='git@gitlab.alipay-inc.com:ifoundation-ios/Specs.git' --no-mangle --force
(2)flutter build ios --debug
lipo -info .ios/Flutter/engine/Flutter.framework/Flutter 查看结果是x86_64 armv7 arm64
(3) flutter build ios --simulator
lipo -info .ios/Flutter/App.framework/APP 查看结果是 x86_64
4.2 flutter packages
(1)flutter packages get
当你在添加一个包后首次运行(IntelliJ中的’Packages Get’)
flutter packages get
,Flutter将找到包的版本保存在pubspec.lock。这确保了如果您或您的团队中的其他开发人员运行flutter packages get
后回获取相同版本的包。
(2)flutter packages upgrade
根据pubspec.yaml中指定的版本约束下载所允许的最高可用版本。
最新文章
- IP报头
- python学习之迭代器与生成器
- 构建最小的docker容器
- SEO优化小技巧
- node基础01:简要介绍
- docker中安装ssh服务
- C# 程序间通信的各种途径及解析
- 小米2在Eclipse 调试,要注意下列步骤。
- EM 算法
- Javascript 汉字转拼音
- android widget 开发实例 : 桌面便签程序的实现具体解释和源代码 (上)
- css实现下拉菜单
- 脚本语言:Xmas(二)
- popupwindow和listview
- Android Studio 问题
- Python与设计模式之创建型模式及实战
- 前端 HTML body标签相关内容 常用标签 超链接标签 a标签
- Xampp单独升级某个软件
- 配置B类内网 和 配置A类内网
- Map集合遍历
热门文章
- java NIO原理和代码实践
- 软件工程日报二——gradle的安装与环境配置
- 来自StateOfJS调查:2022年JavaScript生态圈趋势报告(前端早读课)
- 商城登录/三方登录OAUTH2/单点登录
- SAP 附件功能 PRD环境无法删除 VIEW_ATTA
- CAD梦想画图中的“绘图工具——多线段”
- linux 创建 挂载 ntfs分区
- debian11命令行安装字体
- AWS RedShift实战应用SQL大全及经验分享[持续更新]
- Win10下VM虚拟机桥接模式无法上网的相关问题?