三行代码组件化集成 Flutter!可用于已有 iOS 项目,对原工程无侵入,无需更改原项目配置,集成后可直接以组件形式开发 Flutter 业务。
模块 | 描述 |
---|---|
YHFlutterAdapter | 负责 Flutter 功能与原生端代码的隔离解耦,并提供一定的插件注册功能,该模块对 YHFlutterSDK 以及 YHFlutterPlugin 无依赖关系,并且其中的功能应逐渐下沉为通用功能,可供多个业务线直接复用。 |
YHFlutterSDK | 存放 Flutter 项目编译后生成的产物,各个业务线可针对于自己的 Flutter 项目需求来生成对应的独立产物,与 YHFlutterAdapter 和 YHFlutterPlugin 组装使用。 |
YHFlutterPlugin | 主要配合 YHFlutterAdapter 实现部分桥接方法与插件的功能。可创建多个,一些用于提供通用基础桥接功能,另一些专门用于具体特定业务实现逻辑,上层项目选择性的引入即可。 |
Podfile
内添加
pod 'YHFlutterAdapter' # :podspec => 'xxx' or :path => 'xxx'
pod 'YHFlutterSDK' # :podspec => 'xxx' or :path => 'xxx'
pod 'YHFlutterPlugin' # :podspec => 'xxx' or :path => 'xxx'
具体集成细节,podspec指向等可参照项目内 Demo 。
#import <YHFlutterAdapter/YHFlutterModule.h>
- 在项目内直接显示调用
UIViewController *flutterViewController = [[YHFlutterModule service] flutterViewControllerForKey:@"XXXX" properties:nil];
[self presentViewController:flutterViewController animated:YES completion:nil];
- 【推荐】将
YHFlutterModule
注册进项目内已有的组件化服务内并调用YHFlutterServiceProtocol
的相关方法使用
- 可参照 Demo 内的
YHFlutterFeatureChannel
,具体的业务使用方在上层项目内可自行注册监听并处理自己需要的消息; - 也可参照
YHFlutterPlugin
编写新的 pod 仓库组件独立实现;
- 【推荐】将
YHFlutterModule
注册进项目已有的组件化服务内,并调用YHFlutterServiceProtocol
的相关方法进行注册 [[YHFlutterModule service] registMethodChannelHandler:self.class];
[YHFlutterRegistrant registMethodChannelHandler:self.class];
编写对应的脚本实现 编译-转移产物-更新到远端 Pod 的操作,同时将 YHFlutterPlugin
中需要添加的依赖类自动更新并注册进 YHFlutterAdapter
- Flutter 工程目录下
./.ios/
内对应工程的 BundleId 以及证书更换为当前电脑中任何一个可用的,保证通过编译 - Flutter 工程目录下使用
flutter build ios
orflutter build ios --debug
命令生成对应的release
ordebug
版本的产物 - cd 到
./.ios/Flutter/
目录下将对应的三个产物更换到 YHFlutterSDK 内
issue:pod lib lint 将产物更新至私有库, i386 验证不通过问题讨论
功能 | 实现类 | channelName |
---|---|---|
Read feature description |
YHFlutterFeatureChannel.m 业务层内实现 |
yaheng.feature.flutter.bridge |
Write log file |
YHFlutterLogChannel.m YHFlutterPlugin 内实现 |
yaheng.base.flutter.bridge |
Client HTTP request |
YHFlutterHttpChannel.m YHFlutterPlugin 内实现 |
yaheng.base.flutter.bridge |
Close |
YHFlutterPageChannel.m YHFlutterAdapter 内实现 |
yaheng.base.flutter.bridge |
All source code is licensed under the MIT License.