在现有iOS项目中,接入新的Flutter项目或现有的Flutter项目

news/2024/12/31 6:24:46/

文章参考自Flutter官网:进入Flutter官网

目录

一、背景

二、在现有iOS项目中,接入新的Flutter工程

1、创建新的Flutter工程

2、将iOS工程与Flutter工程进行关联

三、在现有iOS项目中,接入现有的Flutter工程

1、修改Flutter工程中的pubspec.yaml

2、将iOS工程与Flutter工程进行关联


一、背景

根据Flutter官网给的方式,将Flutter接入现有的iOS工程中,提供了三种方案

第一种:通过在Podfile文件中指定Flutter工程目录的方式。这种方式相对在已经开发中的iOS项目比较友好,改动较小,而且可以实现在Flutter编码后,直接运行原生工程就可以看到效果。

第二种:将Flutter工程打包为插件,供原生工程引入,这种方式可以做到原生工程与Flutter工程分离,但是对于调试较麻烦,需要每次更新Flutter工程后,都要打包成插件,再替换到原生工程的原依赖插件。

第三种:使用 CocoaPods 在 Xcode 和 Flutter 工程中内嵌应用和插件框架,这种方式也就是使用Android Studio开发工具创建新的Flutter工程时默认的方案,新的Flutter工程创建好后,默认会创建iOS和Android的原生工程,在原生工程内,会有Flutter内嵌进去的包体,这种方案对于已经在开发中的原生工程进行对接较麻烦。

二、在现有iOS项目中,接入新的Flutter工程

1、创建新的Flutter工程

//创建一个名字为my_flutter的Flutter工程
flutter create --template module my_flutter

创建好后的my_flutter工程目录如下:

其中.ios和.android为隐藏文件,文件中的内容为flutter编译相应平台的缓存代码,删掉后会再下次编译时重新生成。

重要:在my_flutter工程中的pubspec.yaml文件中,最下方会有一个module属性的配置。该配置决定了Flutter使用哪种方式与原生工程进行关联,配置了下图中的module属性以及androidPackage和iosBundleIdentifier的包名,.ios和.android目录才会自动生成,不配置的话,Flutter则会采用第三种方案进行编译,即:在Flutter工程内编译android和ios文件夹内的代码,而不是.android或.ios文件内的代码。

#注意不要顶格写  module:androidX: trueandroidPackage: 填写android工程的包名iosBundleIdentifier: 填写iOS工程的包名

2、将iOS工程与Flutter工程进行关联

  • 打开iOS工程中的Podfile文件,在文件中配置Flutter目录,以上面的my_flutter举例,假设my_flutter与iOS工程目录为同一根目录下,则配置如下:
flutter_application_path = '../my_flutter'
load File.join(flutter_application_path, '.ios', 'Flutter', 'podhelper.rb')
  • 在每个需要集成 Flutter 的 Podfile target节点下,加入如下代码:
target 'my_flutter' doinstall_all_flutter_pods(flutter_application_path)
end
  • 在 Podfile 文件的 post_install 部分,添加如下代码:
post_install do |installer|flutter_post_install(installer) if defined?(flutter_post_install)
end
  • 在my_flutter目录下,执行同步命令:
 flutter pub get
  • 然后再在iOS原生工程内执行远程库的安装:
pod install

添加完以上代码,表示着iOS原生工程已经与新创建的my_futter项目进行了关联,Flutter项目中的每次编码,都可以直接在iOS原生工程中运行显示。

三、在现有iOS项目中,接入现有的Flutter工程

1、修改Flutter工程中的pubspec.yaml

使用这种方式只需要修改Flutter工程中的pubspec.yaml文件即可,打开pubspec.yaml文件,在最后添加以下:

#注意不要顶格写  module:androidX: trueandroidPackage: 填写android工程的包名iosBundleIdentifier: 填写iOS工程的包名

之后编译Flutter项目,会在Flutter工程下生成 .ios 文件夹,该 .ios 为隐藏文件。

2、将iOS工程与Flutter工程进行关联

该步骤与上面的【二、在现有iOS项目中,接入新的Flutter工程】——【2、将iOS工程与Flutter工程进行关联】步骤一致,参考上面的步骤即可。


http://www.ppmy.cn/news/81940.html

相关文章

numpy-stl实战3D建模【Python】

想象一下,我们需要用 python 编程语言构建某个物体的三维模型,然后将其可视化,或者准备一个文件以便在 3D 打印机上打印。 有几个库可以解决这些问题。 让我们来看看,如何在 Python 中从点、边和图元构建 3D 模型。 如何执行基本的…

算法——各排序算法效率对比和总结

1. 算法效率对比 在此我们使用如下代码来测试各个算法的效率 void TestOP() {srand(time(0));const int N 100000;int* a1 (int*)malloc(sizeof(int) * N);int* a2 (int*)malloc(sizeof(int) * N);int* a3 (int*)malloc(sizeof(int) * N);int* a4 (int*)malloc(sizeof(i…

怎样使用GPT案例:使用GPT获得OPPO终止ZEKU芯片业务需要的背景知识

使用GPT获得OPPO终止ZEKU芯片业务需要的背景知识 引子:微博上对OPPO关停ZEKU芯片业务的分析Q: Nuvia 公司主要生产的是什么?Q: Nuvia芯片和Arm芯片之间有什么关联?Q: Nuvia有采用Arm授权的构架么?Q: 高通主要生产什么?…

SpringBoot 结合 mybatis-plus 实现分页功能

一、分页的原理 要实现分页功能方法有很多,但最基本的实现原理都差不多,所以在实现功能之前要先把原理搞明白。正如删除有 “逻辑删除” 和 “物理删除" 之分,分页也有 “逻辑分页” 和 “物理分页”; 1、逻辑分页&…

数据中台建设浪费,数据分析系统如何设计,听听 Gartner 怎么说

2023 年数据分析趋势:数据即业务、从平台到生态、以人为中心 作者 | 宋慧 出品 | CSDN 云计算 数据的价值被越来越多的行业用户看到。不过各种数据系统百花齐放,前几年关于数据中台的讨论仍然众说纷纭。国际研究机构 Gartner 持续对数据分析市场做了调研…

Docker数据目录迁移方法

文章目录 前言一、停掉Docker服务?二、迁移docker数据到数据盘目三、备份原数据目录四、添加软链接五、重启docker服务六、确认服务没有问题后,删除备份的目录总结 前言 服务器上安装的docker服务,数据默认存储在/var/lib/docker目录&#x…

Linux用户管理相关命令(全)

1、Linux用户(账号)管理 查询用户(账号)信息(判断用户(账号)是否存在) id account新增用户(账号) useradd account设置用户(账号)密码 方式1: passwd account 方式2: echo 123|passwd --stdin account; #密码为123删除用户(账…

经典回归算法

回归的概念 回归方程: 写成矩阵: 核心问题,构建预测函数z来映射特征矩阵x和标签y的线性关系 预测的目标值,有连续值也有离散值 连续值,就直接预测输出就行离散值,需要在输出端加一个变换函数例如。Si…