微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

场景:

当前是一个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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐