你有没有遇到 use_frameworks! 尴尬的局面? podfile 加也不是,不加也不是,求解。

  1. 目前纯Flutter项目 中需要使用阿里云的实人认证,获得的原生iOS sdk,这边封装成插件给flutter项目使用,因sdk中基本都是.framework。
    Flutter
    如果flutter要这样pod拉取这个插件,必须在主项目/ios 目录下的profile中 去掉 use_frameworks!,因为是导入的静态库,必须去掉。
    你有没有遇到 use_frameworks! 尴尬的局面? podfile 加也不是,不加也不是,求解。

才能成功pod。
但是运行出现如下2的错误

  1. 项目中使用到插件flutter_audio_recorder,会报’flutter_audio_recorder/flutter_audio_recorder-Swift.h’ file not found
    Flutter

而用cocoapods 导入swift,必须要use_frameworks!,估计这个第三方插件用到swift的原因,
网上搜索的结果也是如下,提示需要在podfile添加 use_frameworks!

Flutter

和上面1冲突,添加了use_frameworks! 上面就会异常,如何解决这个问,还请相关同仁分享下解决之道。

讨论数量: 9
medz

在 plugin 里面插件不是这样加的,给你看我正在写的 Tencent LBS 插件。即成 framework 很简单,但是前提是你需要学习 cocoapods 管理工具的基本知识。

  # TencentLBS framework
  s.preserve_paths = 'TencentLBS.framework'
  s.xcconfig = { 'OTHER_LDFLAGS' => '-framework TencentLBS' }
  s.vendored_frameworks = 'TencentLBS.framework'

第一行代码指定一个或者多个 framework 的查找路径,第二个是将框架配置到 Xcode 的项目配置中,第三个才是正式加入框架进来。

下图是我这个框架的完整结构截图

file

file

即成进来后用 Xcode 打开你的 plugin 的 example/ios/Runner.xcworkspace 即可进行开发了。 flutter 的原生开发需要与 example 配合作为 project 进行打开。然后在 Pods 的 Pods Development 即可编辑你 iOS 端的插件代码了。

希望对有所帮助

3年前 评论
medz

从你的文章可以看出,你整个导入方式都完全错了。所以导致问题不断。请自诩阅读 cocoapods 的 podspec 文档哦

3年前 评论
medz

.freamwork 库是打包好的动态链接共享库,不管是c++ 还是 oc 还是swift写的都无所谓。因为里面就是打包好的可运行文件和头描述文件了。你要处理的是如何正确导入动态链接共享库

3年前 评论

@medz

抱歉,并非framwork,是阿里提供的组件,组件如何安装现有的方法成功加入 file

插件内对阿里组件集成podspec文件设置如下

file

请问这种处理是否有问题,怎么样才能解决我的问题。

3年前 评论
medz 3年前

@medz 我对podspec接触的确实很少,那接着问下,插件内依赖好几个本地.framwork, 那么这个插件.podspec如何依赖他们呢?

3年前 评论
medz

@Qson8 看下面的例子

s.preserve_paths = 'Frameworks/*.framework'
s.vendored_frameworks = 'A.framework', 'B.framework'

设置 framework 的查找路径
https://guides.cocoapods.org/syntax/podspe...

参考上面的配置,我第一个 comment 基本上就回答了的

3年前 评论

@Qson8 你好,你这个问题如何解决的呢?

3年前 评论

在你那个插件里面有个.podspec文件,里面加上这行代码s.static_framework = true,我这边加上就没有问题了

3年前 评论

我加了 s.static_framework = true 之后还是无效,我应该怎么做呢?

3年前 评论
star123 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!