Flutter 产物集成原生 iOS 项目指南 (包含插件)

随着 Flutter 1.5 版本的发布, 越来越多的原生项目开发者开始学习 Flutter, 通过在项目中引入 Flutter 混合开发的方式尝试 Flutter 是一个不错的选择

混合方案

目前混合开发方案有两种集成方式:

源码集成:

谷歌官方提供的方案 github.com/flutter/flu…,

开发调试方便, 但会产生编译依赖, 所有项目开发者都需要安装 flutter 环境 ,每次编译都会重新生成 flutter 产物, 编译速度会有一定影响

产物集成:

不影响原生项目, 把编译生成的 flutter 产物集成到项目中, Flutter 所有相关内容就只是一个 pod , 添加或移除方便

鉴于源码集成方式依赖性强, 使用产物集成方式是原生项目尝试接入最好的选择, 对原生项目没有任何侵害, 我这边目前的做法是 flutter 开发者通过源码集成方式开一个分支开发相关功能, 而其他成员通过产物集成方式拉取 Pod 即可集成 flutter

这里主要讲讲产物集成的过程包含插件的集成

创建 Flutter 项目

创建 Flutter项目和源码集成,谷歌的教程是相同的

$ flutter create -t modult my_flutter
复制代码

源码集成和产物集成主要差别是 flutter 生成的产物, 源码集成通过 pod 和 编译脚本在每次编译时生成 flutter 产物自动添加到项目中, 而产物集成是把生成的产物拿出来直接使用

生成 Flutter 产物

在 flutter 项目路径,终端输入 flutter build ios 即可生成产物

$ my_flutter: flutter build ios --debug
$ my_flutter: flutter build ios --release
复制代码

iOS 项目路径(隐藏文件):

/my_flutter/.ios
复制代码

如果执行 flutter build ios 失败, 一般是证书问题, 可打开 .ios/Runner.xcworkspace 修复问题, 确保 Runner 可编译通过

执行成功后可看到在 .ios/Flutter 文件中会生成 App.framework 和 Flutter.framework, 这就是生成的 Flutter 产物了

我们可以直接把这两个 framework 拖进原生项目中使用, 无任何侵害的使用 flutter, 但是制作成 pod 是最好的选择, 打包和团队开发都方便, flutter 开发者通过 my_flutter 开发完成后, 执行 flutter build ios 生成产物, 发布到 pod , 其它成员拉取 pod 即可更新

MyFlutterSDK
    /MyFlutterSDK
        /App.framework
        /Flutter.framework
    MyFlutterSDK.podspec
复制代码

集成插件

产物集成的方式集成插件的原生代码是比较麻烦的事情, 源码集成通过脚本会自动添加插件生成 pod, 而产物集成我们需要手动集成插件, 插件的文件目录

/my_flutteer/.ios/Flutter/.symlinks/{插件名称}/ios
复制代码

插件文件是一个路径映射, 它真正所在的路径在 flutter 库中

$ flutter/.pub-cache/hosted/pub.flutter-io.cn
复制代码

插件文件/ios 中一般会看到 Classesxxx.podspec 两个文件, 我们只需要把它们拿出来单独制作成 pod 即可, 需要注意的是在插件 podspec 中一般会依赖 Flutter

s.dependency 'Flutter'
复制代码

这里需要把它改成我们自己生成的 pod 名称, 比如上面生成的 MyFlutterSDK

由于包含插件就涉及到插件注册我们还需要把插件注册文件制作成 pod , 路径在

/my_flutteer/.ios/Flutter/FlutterPluginRegistrant
复制代码

记得更改里面引用的 Flutter 名称

完成制作

至此我们需要的相关文件都制作完成了,包含的 pod 有:

MyFlutterSDK
FlutterPluginRegistrant
插件
插件
...
复制代码

在原生项目中集成 pod 即可, 需要注意的是 flutter build ios —release 生成的 framework 需要使用真机测试, 因为 debug 和 release flutter 的编译方式是不同的, 我们可以制作两个 pod 针对不同的环境, 比如:

MyFlutterSDK_Debug
MyFlutterSDK_Release
复制代码

最后放上 Demo, 里面包含了一个插件, 用来演示插件的集成

地址: github.com/ZeroJian/Fl…

转载于:https://juejin.im/post/5cdd080051882514ef0543c3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值