加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

解决Swift项目中use_frameworks!冲突的问题

发布时间:2020-12-14 06:13:45 所属栏目:百科 来源:网络整理
导读:场景: 当前是一个Swift项目,其实什么项目无所谓,主要是混编引起的,比如说当前项目中已经 pod 引入了 FMDB , EaseUI 和 Hyphenate 三个框架,其中 EaseUI 中还包括了 SD , MJR , MB 等,Podfile文件如下: platform :ios , '8.0' target ‘ DEMO ’ do p

场景:

当前是一个Swift项目,其实什么项目无所谓,主要是混编引起的,比如说当前项目中已经pod引入了FMDBEaseUIHyphenate三个框架,其中EaseUI中还包括了SD,MJR,MB等,Podfile文件如下:

platform :ios,'8.0'
target ‘DEMOdo
    pod 'FMDB','~>2.6.2'
    pod 'Hyphenate','~>3.3.2'
    pod 'EaseUI',:git => 'https://github.com/easemob/easeui-ios-hyphenate-cocoapods.git'
end

此时添加完桥接文件后,在Build Settings选项中为Objective-C Bridge Header设置好桥接文件路径后,在桥架文件中包含对应的.h文件,便可以全局访问这些框架,但是再要引入别的框架,比如SnapKit,这个框架是需要use_frameworks!的,于是Podfile变成了这样:然后pod update

platform :ios,'8.0'
use_frameworks!
target ‘DEMOdo
    pod 'FMDB',:git => 'https://github.com/easemob/easeui-ios-hyphenate-cocoapods.git'
    pod ‘SnapKit’,'~>3.2.0'
end

这个时候原本的EaseUI.h就找不到了

去掉pod ‘SnapKit’,'~>3.2.0'use_frameworks!再执行pod update项目又可以正常运行,现在要解决的就是这个问题。

如果在Podfile里面不使用use_frameworks!,则是通过static library来引入管理pod框架,此时还需要在桥接文件中#import对应的.h文件。

如果在Podfile里面使用use_frameworks!,那么就需要像下面第2步那样引入framework,然后在需要的地方直接import就行,下面第4步骤

1>现在回头还把pod ‘SnapKit’,'~>3.2.0'use_frameworks!加到Podfile里面,执行pod update

2>然后点击项目工程–>TARGET–>General–>Linked Frameworks and Library添加framework

3>此时桥接文件中这么写:#import "EaseUI/EaseUI.h"也可不写,直接下一步

4>在用到的EaseUI.h中头文件的类import EaseUI

同理别的框架也需要先导入其framework


此外:OC和Swift混编经常会遇到框架头文件不提示的问题,解决办法如下:

点击项目工程–>TARGET–>Build Settings–>User Header search Paths–>添加${SRCROOT}选择recursive

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读