集成 iOS 原生插件到 flutter 项目

Posted 颐和园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集成 iOS 原生插件到 flutter 项目相关的知识,希望对你有一定的参考价值。

修改签名

首先打开 flutter 项目,Open ios module in XCode,在 Xcode 中打开 ios 文件夹,修改 Team,将签名修改为你的 iOS app 签名。

android Studio 中,在 iOS 模拟器上运行,确认没有问题。

加入插件依赖

在 pubspec.yaml 中,在 dependencies 下添加插件,以源代码方式集成 zhgd_native_plugin 原生插件为例:

zhgd_native_plugin:
path: ../zhgd_native_plugin

注,插件工程位于 flutter 工程同级目录。

常见问题

  1. file not found with <angled> include; use "quotes" instead

    选择插件 pod 的 target,Build Settings -> Header Search Paths,添加对应的 头文件搜索路径,比如:"${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers"

  2. 'Masonry.h' file not found with <angled> include; use "quotes" instead

    Podfile 文件中使用了 use_frameworks!(因为有几个 pod 是 swift 库,而swift 是只能以 framework 进行集成)。因此头文件的引入方式发生了改变,只能通过 #import “Masonry.h” 的方式导入,不能以 #import <Masonry.h> 的方式导入。

  3. :-1: Undefined symbol: _OBJC_CLASS_$_FlutterMethodChannel:-1: Undefined symbol: _OBJC_CLASS_$_FlutterMethodChannel

    编译器找不到 Flutter.h 头文件。最大的可能是 Podfile 中使用了 use_frameworks!(因为项目中引用了一个 Swift 插件)。这个问题是 flutter 自身的问题:https://github.com/flutter/flutter/issues/10968。
    目前的解决办法,只有将所有 Swift 插件替换为 O-C 插件。

以上是关于集成 iOS 原生插件到 flutter 项目的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 插件中调试 iOS 原生代码?

测试使用插件和平台通道的 Flutter 代码

见识不一样的Flutter 之原生混合开发

原生Android集成Flutter混合开发

关于 Flutter IOS混合开发打包Framework集成到原生IOS工程 和 flutter_boost使用

Flutter插件开发和iOS原生代码:避免应用启动时的权限请求?