iOS Flutter Engine源码调试和修改
iOS Flutter Engine源码调试和修改
- 1. 前提:
- 2. 步骤:
- 3. 参考资料
1. 前提:
- 已将成功安装
deop_tools工具 - 已经通过
gclient命令同步好flutter engine源码
2. 步骤:
进入engine/src目录
-
创建
flutter engine构建文件
真机文件debug模式:
./flutter/tools/gn --no-goma --ios --unoptimized
真机文件release模式:
./flutter/tools/gn --no-goma --ios --runtime-mode=release
模拟器文件debug模式:
./flutter/tools/gn --no-goma --ios --simulator --unoptimized参数说明: --unoptimized debug模式 --runtime-mode=release release模式 --ios iOS平台 --simulator 模拟器 -
生成flutter engine工程文件
按需执行以下所需的版本类型即可。
host_debug_unopt是必须要编译的,否则在执行本地引擎时就会报错host_xxx找不到// 编译host部分,必须要执行 ninja -C out/host_debug_unopt // 编译模拟器debug版本 ninja -C out/ios_debug_sim_unopt // 编译真机debug版本 ninja -C out/ios_debug_unopt // 编译真机release版本 ninja -C out/ios_release如果ninja命令执行,出现错误:
depot_tools/ninja.py: Could not find Ninja in the third_party of the current project, nor in your PATH.
说明ninja工具安装有问题,这时候需要回到depot_tools安装目录,将commit-id回滚到5a0f43aebe00a947546b8dfc966064b8d1a50a6f命令执行完成后,就会在
engine/src/out下产生3个目录,想要调试对应的engine就拉对应的目录下的flutter_engine工程到自己创建的工程内 -
创建
flutter测试工程
在xcode界面中,将要调试模式目录下的flutter_engine工程拖入到测试工程中特别注意:在拖动时,要保证
flutter_engine工程没有在xcode中打开,否则会出现拖进去后,flutter_engine工程无法展开的问题 -
修改
Generated.xcconfig中如下配置- 手动修改
如果没有找到对应的配置项,就手动添加
FLUTTER_FRAMEWORK_DIR=/path/to/engine/src/out/ios_debug_sim_unoptFLUTTER_ENGINE=/path/to/engine/srcLOCAL_ENGINE=ios_debug_sim_unopt- 自动修改
在vscode中的launch.json配置文件中新增如下配置,然后跑一下debug就能同步到Generated.xcconfig文件中{"name": "本地engine调试","type": "dart","request": "launch","program": "example/lib/main.dart","args": ["--local-engine-src-path","/path/to/engine/src","--local-engine","ios_debug_sim_unopt"]},
- 手动修改
-
打开
FlutterViewController.m文件,就可以下断点了 -
修改SDK内的代码,需要重新执行
ninja -C命令去更新产物,然后再重新运行测试工程
3. 参考资料
https://tech.qimao.com/zi-ding-yi-flutter-yin-qing-liu-cheng/
相关文章:
iOS Flutter Engine源码调试和修改
iOS Flutter Engine源码调试和修改 1. 前提:2. 步骤:3. 参考资料 1. 前提: 已将成功安装deop_tools工具已经通过gclient命令同步好flutter engine源码 2. 步骤: 进入engine/src目录 创建flutter engine构建文件 真机文件debug模式: ./flu…...
Java日志系统之Log4j
目录 Log4J Log4j的简单使用 日志级别 Log4j的组件 Loggers Appenders Layout Layout格式 设置配置文件加载 配置文件解析 Log4J 是Apache下开源的日志框架 Log4j的简单使用 Testpublic void testLog4J(){Logger logger Logger.getLogger(Log4jTest.class);logger…...
Windows11系统安装WSL教程
WSL,全称Windows Subsystem for Linux,是微软官方提供的可以在Windows上直接运行的Linux环境,包括大多数命令行工具、程序和应用,由系统底层虚拟机平台支持。 开启相关服务 1、控制面板-启用或关闭Windows功能 2、勾选以下两个…...
总结一下vue中v-bind的常见用法
文章目录 🐕前言:🏨简述一下v-bind命令🧸其它写法1.还是当成字符串🦓其它写法2.当成对象来使用 🐕前言: 本篇博客主要总结一下v-bind命令在vue中的常见用法(看完即懂) …...
全面超越AutoGPT,面壁智能联合清华NLP实验室开源大模型「超级英雄」XAgent
近日,国内领先的人工智能大模型公司面壁智能又放大招,联合清华大学 NLP 实验室共同研发并推出大模型「超级英雄」——XAgent。 通过任务测试,XAgent 在真实复杂任务的处理能力已全面超越 AutoGPT。 现已在 GitHub 正式开源,地址 …...
springBoot--web--http缓存机制测试
springBoot--web--http缓存机制测试 前言1、多端内容适配基于请求头内容协商(默认开启)基于请求参数内容协商(需要开启) 2、默认返回json数据3、设置返回xml数据导入jackson-dataformat-xml包在类文件中添加注解 JacksonXmlRootEl…...
免费活动】11月4日敏捷武林上海站 | Scrum.org CEO 亲临现场
活动介绍 过去的几年里,外界的风云变幻为我们的生活增添了一些不一样的色彩。在VUCA世界的浪潮里,每一个人都成为自己生活里的冒险家。面对每一次的变化,勇于探索未知,迎接挑战,努力追逐更好的自己。 七月࿰…...
VSCode搭建ESP32 ESP-IDF开发环境-Windows
陈拓 2023/10/09-2023/10/14 1. 安装Windows系统下的ESP32 ESP-IDF开发环境 见《Windows系统安装ESP32 ESP-IDF开发环境》 Windows系统安装ESP32 ESP-IDF开发环境-CSDN博客Windows系统安装ESP32 ESP-IDF开发环境。https://blog.csdn.net/chentuo2000/article/details/1339225…...
Java可重入锁(GPT编写)
Java可重入锁是Java并发编程中常用的一种锁机制,它可以允许同一个线程多次获取同一个锁,从而避免死锁和其他并发问题。在本篇博客中,我们将对Java可重入锁的源码进行分析,以便更好地理解它的实现原理和使用方法。 Java可重入锁的…...
京东数据平台:2023年9月京东净水器行业品牌销售排行榜!
鲸参谋监测的京东平台9月份净水器市场销售数据已出炉! 根据鲸参谋平台的数据显示,今年9月份,京东平台净水器的销量为64万,环比下滑约9%,同比下滑约16%;销售额为5.2亿,环比下滑约12%,…...
skiaSharp linux 生成验码字体显示不出来
一、拷贝windows下的字体如:C:\Windows\Fonts 设置字体的地方: var fontPath Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Fonts", "TAHOMA.TTF");最终效果:...
WuThreat身份安全云-TVD每日漏洞情报-2023-10-12
漏洞名称:curl SOCKS5 堆溢出漏洞(CVE-2023-38545) 漏洞级别:高危 漏洞编号:CVE-2023-38545,CNVD-2023-75809 相关涉及:cURL libcurl >7.69.0,<8.3.0 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-25382 漏洞名称:Apache H…...
sobel边缘检测算法
Sobel边缘检测算法是一种常用的图像处理技术,用于检测图像中的边缘和轮廓。该算法基于离散卷积操作,通过对图像进行滤波来寻找图像中灰度值的变化。Sobel算子是一种常用的卷积核,用于检测图像中的垂直边缘和水平边缘。以下是Sobel边缘检测算法…...
Kotlin中抽象类与接口
Kotlin 中的抽象类和接口是面向对象编程中的重要概念,它们提供了一种用于定义和组织代码的方式。在下面的代码示例中,我们将介绍 Kotlin 中的抽象类和接口,并给出相应的示例。 抽象类 抽象类是一种不能被实例化的类,它仅用作其他…...
解决osg绘制场景时因Z冲突导致重影或闪烁等不正常情况
目录 1. 问题的提出 2. Z冲突(z-fighting)简介 2.1. Z冲突(z-fighting)产生的原因 2.2. 如何消除Z冲突(z-fighting) 3. 代码实现 1. 问题的提出 今天绘制了一个棋盘格,鼠标在棋盘格上单击…...
adb 获取 Android 设备中已安装的 apk 文件
前言 今天发现手机上一个应用在应用商店已经搜索不到了,想把其推荐给朋友使用,发现不知道从哪里找原始的 apk 安装文件,记录一下。 如何提取 apk 两种方法 MT管理器导出 可以使用 MT管理器(Android 平台逆向神器),它有个 安装…...
学习记录683@类别不平衡问题解决的基本策略之再缩放的数学解释
什么是类别不平衡问题 分类学习方法都有一个共同的基本假设,即不同类别的训练样例数目相当。如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。例如有998个反例,但正例只有2个…...
2023App测试必掌握的核心测试:UI、功能测试
一、UI测试 UI即User Interface (用户界面)的简称。UI 设计则是指对软件的人机交互、操作逻辑、界面美观的整体设计。好的UI设计不仅是让软件变得有个性有品味,还要让软件的操作变得舒适、简单、自由、充分体现软件的定位和特点。手机APP从启动界面开始, 到运行过程,直至退出,…...
华为荣耀手机,开启开发者选项,hbuilder调试依然找不到
我的手机是华为荣耀50,其他华为手机不知道是不是这个问题哦 解决办法:usb配置,选择音频来源 然后就可以了...
【C++】特殊类实现
一、请设计一个类,不能被拷贝 拷贝只会放生在两个场景中:拷贝构造函数以及赋值运算符重载,因此想要让一个类禁止拷贝, 只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 C98 将拷贝构造函数与赋值运算符重载只声明不定义…...
Python实战:用chinese_calendar精准处理含调休的考勤与排期
1. 为什么需要chinese_calendar处理考勤排期 每到月底核算考勤时,HR最头疼的就是遇到节假日和调休。传统做法是手动维护一个节假日表格,但每年政策都在变,2023年春节调休和2024年就完全不同。我见过有团队用Excel维护了三年调休表,…...
用树莓派Pico和MicroPython打造一个简易数据记录器:从环境传感器到SD卡存储
用树莓派Pico构建环境数据记录器的完整指南 在物联网和嵌入式系统开发中,可靠的数据采集与存储是许多项目的核心需求。想象一下,您需要在温室中持续监测温湿度变化,或者在野外记录气象数据,甚至只是简单地跟踪家中空气质量——这些…...
如何将照片从 iPhone 传输到笔记本电脑?4 种方法搞定
想把 iPhone 里的照片保存到笔记本电脑备份,却不知道怎么传输?别担心,有多种方法可以实现,包括使用iReaShare iPhone Manager、Windows 文件资源管理器、iCloud 照片库,以及电脑自带的 “照片” 应用。(如需…...
SAP采购申请屏幕增强实战:手把手教你为ME51N/ME57添加自定义字段(附完整代码)
SAP采购申请屏幕增强实战:从零构建ME51N自定义字段完整方案 当采购部门的同事第5次拿着Excel表格来找你,要求将"供应商优先级评分"嵌入采购申请流程时,作为ABAP开发者的你意识到:是时候给ME51N来次深度改造了。不同于简…...
Transformer在OCR里怎么玩?拆解SVTR模型设计:从ViT补丁到字符识别的巧妙改造
Transformer在OCR中的革新实践:SVTR模型架构深度解析 1. 视觉Transformer在文本识别领域的范式突破 传统OCR系统长期依赖CNN-RNN混合架构,这种设计在应对复杂场景文本时面临两大根本性挑战:一是卷积神经网络的局部感受野难以捕捉长距离字符依…...
Get cookies.txt LOCALLY:本地Cookie导出工具的终极安全解决方案
Get cookies.txt LOCALLY:本地Cookie导出工具的终极安全解决方案 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 在当今Web开发和自动化…...
终极文档下载解决方案:告别繁琐流程,轻松获取任何可见文档
终极文档下载解决方案:告别繁琐流程,轻松获取任何可见文档 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,…...
分光计实验:从原理到实践,手把手教你测量三棱镜折射率
1. 分光计实验入门:为什么测量三棱镜折射率这么重要? 第一次接触分光计实验时,我和大多数同学一样满头雾水——这个长得像显微镜的金属仪器,怎么会有二十多个调节旋钮?直到亲手完成三棱镜折射率测量,才明白…...
从 ArrayList 到 LinkedList:深入源码,图解 Java subList 的‘视图’魔法与性能影响
从 ArrayList 到 LinkedList:深入源码,图解 Java subList 的‘视图’魔法与性能影响 当你需要在 Java 中处理列表的部分数据时,subList 方法提供了一种看似简单却暗藏玄机的解决方案。不同于创建一个全新的列表副本,subList 生成的…...
国产ARM/RISCV与OpenHarmony物联网项目(一)总体设计说明
本文件讲述采用国产ARM网关国产RISCV采集节点OpenHarmany轻量化操作系统实现一套实时采集温湿度、光照度、气体各类环境数据的的全国产化软硬件物联网管理系统。 重点突出物联网项目中硬件的全国产化,操作系统的全国产化的实现。项目示例代码仅做为示例参考使用。 本…...
