作者:米西米西的歪国人 | 来源:互联网 | 2023-09-10 13:35
背景
由于目前的项目是OC开发,且目前通过cocopods导入的三方库,是以.a
静态库的形式导入
需求
目前需要导入一个swift开发的三方SDK,所以需要在OC项目中pod一个swift三方库
问题
对于swift三方库而言,一般都会要求 使用 use_frameworks!
通过.framework动态库
的形式导入。而目前OC项目中pod是通过.a
的形式导入,所以产生了以下问题:
解决办法
那么有没有办法,可以在不改变原来的三方库的导入形式,然后还可以集成swift三方库且不报错呢?答案是有的,即使用混编
的方式,即swift三方库不采用 use_frameworks!
1、xcode配置
2、项目配置
需要注意以下几点:
-
1)需要确保有桥接文件 项目名-Bridging-Header.h
-
2)确保项目中至少有一个.swift
文件
-
3)target -> Build Settings
中,确保 Product Module Name
是有值的,如果没有,直接设置为 $(PRODUCT_NAME)
-
4)target -> BuildSetting -> SWIFT_VERSION
需要与pod中swift三方库的 BuildSetting -> SWIFT_VERSION
一致
3、swift三方库使用
- 在
项目名-Bridging-Header.h
桥接文件中导入需要的swift三方库
@import swiftSDK;
- 在需要用到swift三方库的地方,导入 “项目名-swift.h”文件以及桥接文件
#import "项目名-Swift.h"
#import "项目名-Bridging-Header.h"
到此,可以在OC项目中以.a的形式导入swift三方库了,且不改变原有的三方库导入形式