当前位置:首页 » 编程软件 » iosflutter编译

iosflutter编译

发布时间: 2025-03-01 18:59:05

⑴ Flutter-自定义引擎流程(iOS)

当你发现Flutter Engine的bug并成功定位到crash的调用堆栈后,你可能需要自己重新编译Flutter引擎。堆栈还原基本命令可以参考官方地址。

首先,确保安装了depot_tools,并准备好CLion作为IDE,它对于Xcode友好,便于代码跳转。同时,使用V...P...N和FanQiang,并将其设置为全局模式以加速下载。了解gclient、gn、ninja的作用,阅读官方文档以获取更多详细信息。

配置gclient终端,创建.gclient文件,并指定你使用的引擎版本,如Flutter2.5.1。执行gclient sync命令,等待大约14G的文件下载,直到src/flutter成为引擎的git仓库。

编译过程分为几个步骤。在解决m1的mac无法编译的问题后,使用特定的解决办法,成功在intel i5的电脑上编译。在src目录下,执行gn生成Xcode项目,用于debug时使用引擎源代码,并确保编译dart-sdk。

gn脚本参数如--goma和--no-goma、--no-dart-version-git-info等可帮助你根据需要调整编译过程。遇到错误时,定位问题并更新buildroot或修改find_sdk.py中的正则判断。执行ninja -C out/host_debug_unopt以编译。

编译完成后,使用python脚本工具src/flutter/sky/tools下的create_ios_framework.py和create_macos_gen_snapshots.py创建Flutter.xcframework和gen_snapshots。最终产物包大小优化实践提供了关于gen_snapshot文件的详细信息。

在需要debug的项目中,执行命令以更新Generated.xcconfig文件,然后在Xcode工程中拖入src/out/ios_debug_unopt下的flutter_engine.xcodeproj,实现debug。

在debug时注意,不能在异步线程向flutter回调FlutterResult和FlutterEventSink。确保OC回调Flutter时通过传过来的block参数,遵循正确的方式。

成功解决crash问题后,可以拉取特定git提交节点(如Flutter2.5.1版本)的分支提交自己的代码。解决的crash问题包括后台渲染问题,crash率显着下降。在github仓库中分享了解决方案,包括修复内存泄露和其他优化提交。

绕过dart-sdk的版本校验可以通过修改flutter/tools/gn命令参数和src/third_party/dart/sdk_args.gni配置项,确保flutter_patched_sdk不带有git_short_hash,从而避免前端编译时的dart内核版本校验。具体校验逻辑位于flutter_frontend_server中的代码中。

了解这些步骤和技巧后,你将能够解决或优化Flutter Engine中的问题,并确保应用程序的稳定性和性能。

⑵ 【Android开发学Flutter】Xcode编译问题汇总

Xcode编译经常遇到各种问题,处理起来费时费力,挺打击学习积极性的。记录下这些问题,方便自己也帮助后来人。

编译的时候遇到:

网上有很多解决方法,我是用这个方法解决的:

编译的时候遇到:

解决办法:
Project -> User-Defined -> FLUTTER_ROOT 改成本地 flutter SDK路径

感谢 issues 上的小哥,给你个🚀

在项目目录下执行 flutter run 可以正常运行到手机,但是在Xcode build 还是有问题。

这时需要手动添加 FLUTTER_ROOT User-Defined

添加之后:

就可以正常在Xcode build 安装到手机了。

flutter build ios 后出现:

pod install 后出现:

解决办法:
这是因为terminal没有走代理的流量,
使用 git config --global http.proxy "localhost:port" ,设置代理。
port是端口号,根据不同的vpn不一样,我的端口是10080。
执行 git config --global http.proxy "localhost:10080"

Xcode build 的时候出现:

解决办法:打开 ios/Podflie 文件:

关于 bitcode 的问题,我检查了下用到的第三方SDK,应该是网络地图的问题,我引入了个第三方插件(吐槽下没官方插件),网络地图有支持和不支持 bitcode 的两个SDK,我取消这个插件就没有报这个错了,奇怪的是,再次引入同一个插件,也可以正常打包,所以说这个问题还没有完全解决。
大家可以试下这个处理方法:

TARGETS -> Build Seettings 搜 arm ,试一下把其他删除,只留下armv7跟armv7s或者只留下armv7

解决办法:
https://www.jianshu.com/p/201df7e9a52f

我是clean Xcode之后就可以了

解决办法:
用的是P12证书,改成手动签名:

热点内容
安卓盒子可以用什么手柄 发布:2025-03-01 21:58:03 浏览:243
服务器禁用是什么 发布:2025-03-01 21:47:56 浏览:780
广发证券交易密码忘记怎么办 发布:2025-03-01 21:46:28 浏览:820
安卓喜马拉雅记忆卡在哪里 发布:2025-03-01 21:35:00 浏览:519
怎么改行李箱的密码 发布:2025-03-01 21:34:57 浏览:651
没有重置按钮的安卓平板怎么重置 发布:2025-03-01 21:34:11 浏览:239
怎样给宽带加密 发布:2025-03-01 21:19:15 浏览:938
湖南省电子凭证服务器ip地址 发布:2025-03-01 21:14:59 浏览:957
拉格朗日插值c语言 发布:2025-03-01 20:57:30 浏览:592
so文件能反编译吗 发布:2025-03-01 20:53:07 浏览:126