iOS 問題 1: OC項(xiàng)目導(dǎo)入swift三方庫不兼容問題

背景

由于目前的項(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


    設(shè)置混編

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)入形式

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容