背景
由于目前的項(xiàng)目是OC開發(fā)徒欣,且目前通過cocopods導(dǎo)入的三方庫雀哨,是以.a
靜態(tài)庫的形式導(dǎo)入
需求
目前需要導(dǎo)入一個swift開發(fā)的三方SDK搀别,所以需要在OC項(xiàng)目中pod一個swift三方庫
問題
對于swift三方庫而言,一般都會要求 使用 use_frameworks!
通過.framework動態(tài)庫
的形式導(dǎo)入。而目前OC項(xiàng)目中pod是通過.a
的形式導(dǎo)入调炬,所以產(chǎn)生了以下問題:
1、如果pod中使用
use_frameworks!
舱馅,會改變項(xiàng)目中原有OC三方庫的導(dǎo)入方式缰泡,xcode的會提示OC庫找不到,需要從#import <xxx.h>
改為#import "xxx.h"
2代嗤、如果不使用
use_frameworks!
棘钞,以.a的形式導(dǎo)入swift三方庫,編譯時期報(bào)錯
解決辦法
那么有沒有辦法干毅,可以在不改變原來的三方庫的導(dǎo)入形式宜猜,然后還可以集成swift三方庫且不報(bào)錯呢?答案是有的硝逢,即使用混編
的方式姨拥,即swift三方庫不采用 use_frameworks!
1绅喉、xcode配置
-
設(shè)置混編:target -> Defines Module 設(shè)置為YES
2、項(xiàng)目配置
創(chuàng)建一個.swift文件叫乌,且創(chuàng)建時會自動生成一個橋接文件
-
如果橋接文件沒有自動生成柴罐,
方式1:可以先刪除
target -> Build Settings -> Objective-C Bridging Header
中的路徑,刪除創(chuàng)建的swift文件憨奸,重新創(chuàng)建swift文件革屠,此時會自動生成方式2:也可以自行創(chuàng)建橋接文件,并在
target -> Build Settings -> Objective-C Bridging Header
中配置橋接文件路徑
需要注意以下幾點(diǎn):
1)需要確保有橋接文件
項(xiàng)目名-Bridging-Header.h
2)確保項(xiàng)目中至少有一個
.swift
文件3)
target -> Build Settings
中膀藐,確保Product Module Name
是有值的,如果沒有红省,直接設(shè)置為$(PRODUCT_NAME)
4)
target -> BuildSetting -> SWIFT_VERSION
需要與pod中swift三方庫的BuildSetting -> SWIFT_VERSION
一致
3额各、swift三方庫使用
- 在
項(xiàng)目名-Bridging-Header.h
橋接文件中導(dǎo)入需要的swift三方庫
@import swiftSDK;
- 在需要用到swift三方庫的地方,導(dǎo)入 “項(xiàng)目名-swift.h”文件以及橋接文件
#import "項(xiàng)目名-Swift.h"
#import "項(xiàng)目名-Bridging-Header.h"
到此吧恃,可以在OC項(xiàng)目中以.a的形式導(dǎo)入swift三方庫了,且不改變原有的三方庫導(dǎo)入形式