flutter ios(新建一个flutter项目,可以在ios上运行,四步搞定!)
本文目录
- 新建一个flutter项目,可以在ios上运行,四步搞定!
- Flutter iOS端 白屏的解决方案
- Flutter 连接IOS真机调试
- Flutter工程化之iOS混编集成
- 2022-04-22iOS项目混编flutter,iOS真机debug模式下打不开flutter页面
新建一个flutter项目,可以在ios上运行,四步搞定!
1. 建立一个flutter项目的命令
2. 在ios文件夹下,生成pods文件夹
3. Xcode环境签名设置;
把错误的版本删除再添加,可解决签名错误问题;必须先删除再添加,直接修改可能不起作用。团队开发,必须使用团队的签名。
4.运行创建的flutter项目; 选择真机、模拟机,点击运行按钮,或使用命令运行:
下面两步是赠送的: 5.新加一款插件,所涉及的命令;
ios 端所涉及的命令
6. 刚更新的插件和已有的插件有冲突怎么办? 可以试一试以下步骤:
Flutter iOS端 白屏的解决方案
之前试过 flutter doctor , 看看有哪些配置上的原因, 发现没有任何问题, 很完美 然后又试了 flutter clean , 发现还是不奏效. 于是在网上用 flutter白屏 作为关键字查询, 发现很多文章都没什么用, 但是还是被我找到了解决方案: 先在安卓Studio中调出终端, 然后输入命令: flutter run --enable-software-rendering 此时, 再点击 Run , 在iOS端就不会白屏了!
Flutter 连接IOS真机调试
首先你的环境没有问题 至少 flutter doctor没有问题 ***隐藏网址*** 2.打开终端并运行如下这些命令: cd /Users/XXX/XXX/zhilincommunity/ios 切换到你的ios目录 执行 如果因为网络导致第三方支持不成功 尝试 等待完成
Flutter工程化之iOS混编集成
在flutter官网上推荐了iOS项目中两种混编方式:
笔者在采用两种集成方式的过程中,因为iOS项目结构设计导致这两种简单的集成方式都有些麻烦,所以在实践中更改和优化了集成方式,使之在笔者的项目中能够更加简单和快速的集成。
问题:在不更改flutter tool中相关脚本的前提下,添加的Script Phase中的脚本相对路径错误,如果只是开发,手动更改下路径就可以了,但是在考虑到CI中不能每次在pod install之后都去更改,所以在开发调试中采用该集成方式,结合flutter attach的方式去调试。
通过编译相关的 xcframework + Cocoapods私有库的集成方式在CI中集成,这样QA的CI不需要配置flutter的相关依赖
根据flutter编译工具的提示: 上面的编译命令是打包flutter工程项目和插件的产物,在实际开发过程中可以发现是否引入了依赖Native的插件会导致贬义编译产物的不同。
根据上面的对比:
第一部分:基础的 Flutter Engine + Flutter App 编译后的产物 Flutter.xcframwork -- Flutter引擎的包 App.xcframework -- 工程项目对应的AOT的编译产物 第二部分:三方插件的注册中心 FlutterPluginRegistrant.xcframework -- 第三方插件的注册中心,其实是Native + iOS通信的集合 第三部分:依赖iOS Native的原生 FMDB . xcframwork path_provider_ios.xcframework sqflite.xcframework -- cached_network_image依赖的原生实现
根据上面的编译产物可以知道Flutter和App是编译后必有的包,后面的两个部分完全是服务于三方插件的,到这可以解答第二个问题:笔者App的混编过程中混编插件失效是因为笔者在NativeApp中重写了Flutter的容器,使用了FlutterEngineGroup动态创建多引擎去对应进入不同的功能模块,混合插件是因为重写过程中没有通过GeneratedPluginRegistrant注册插件,所以需要在Native的Flutter容器中注册插件,使之生效。
在这为什么使用commit的hash作为flutter-libs的依赖,因为pod install的时候会有缓存,除了版本好,commit hash也能保证每次CI编译通过 pod install 来更新flutter-libs依赖产物
完成!!!
2022-04-22iOS项目混编flutter,iOS真机debug模式下打不开flutter页面
最近项目中要集成flutter来进行混编,但是在集成后,突然遇到一个很神奇的问题,在debug模式下,用数据线连接真机打包可以打开flutter页面,但是一旦拔掉数据线,再打开flutter页面就不行了,开始以为是因为flutterSDK的原因,但是一查资料才发现,原来是因为debug模式下flutter实现了热重载,默认的编译方式是JIV,但是iOS14+之后的系统限制了JIV这种编译方式,所以连接Xcode重新run一个release包就可以了,因为flutter在release模式下的编译方式是AOT,iOS14+的系统是支持这种编译方式的,具体解决方案如下图再运行就可以了。 当然还有另外一种解决方案,就是修改flutter的编译配置,强制设为release
更多文章:
我想在《中国财经报》上投稿,怎么联系他们呢?中国会计报是核心期刊吗
2024年5月14日 06:58
暗黑破坏神2修改器下载(暗黑破坏神2用什么修改器能得到好装备,具体步骤,以及下载地址)
2024年7月17日 17:26
公共DNS 哪个好(速度快、稳定)?如何搭建一个公共DNS服务器
2024年6月3日 14:44
电信宽媒翼讯是个什么业务?安卓手机如何用校园翼讯wifi上网
2024年7月14日 17:19
未知的网络服务器(我的电信手机网络连接不上,显示“未知的网络服务器”,该怎么弄啊求解)
2024年5月6日 06:39
智学网查成绩登录入口(智学网怎么查分数 智学网怎么登录查成绩)
2024年10月8日 02:10