制作基于Swift的Framework(通過module橋接引用oc.framework)

目前開發(fā)swift版本的SDK(framework) , 需要引用騰訊的sdk(framework),因為騰訊sdk是oc版本的,如果是普通swift項目引用,直接創(chuàng)建橋接文件就可以,但是framework橋接文件是沒有用的,以下文檔就是解決這個問題:

讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:國際域名空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設、貢嘎網(wǎng)站維護、網(wǎng)站推廣。

怎么在Swift 的Framework工程里面引用oc的framework

一、創(chuàng)建自己的swift framework工程
制作基于Swift 的Framework(通過module橋接引用oc.framework)

創(chuàng)建完成后工程是這個樣子:

制作基于Swift 的Framework(通過module橋接引用oc.framework)

二、(重點)創(chuàng)建一個橋接targe,

在這個targe通過module里面引用oc的framework

操作步驟:

1、創(chuàng)建一個targe(記住,是targe,不是project)
制作基于Swift 的Framework(通過module橋接引用oc.framework)

選擇targe之后,下一步. 選擇Cocoa Touch Framework
制作基于Swift 的Framework(通過module橋接引用oc.framework)

下一步,填寫名字(TXSDK)因為我是橋接騰訊sdk,所以叫這個名字,你可以隨表起,點擊 Finish,出來的效果如下
制作基于Swift 的Framework(通過module橋接引用oc.framework)

下一步:在TASDK根目錄下創(chuàng)建兩個文件 TXSDK.xcconfig 和 TXSDK.modulemap(直接創(chuàng)建空文件,修改后綴名就行)

TXSDK.xcconfig的內(nèi)容:

MODULEMAP_FILE[sdk=iphoneos] = $(SRCROOT)/TXSDK/TXSDK.modulemap
MODULEMAP_FILE[sdk=iphonesimulator
] = $(SRCROOT)/TXSDK/TXSDK.modulemap

TXSDK.modulemap的內(nèi)容:下面的路徑根據(jù)你的實際路徑來,引入的就是對應的oc sdk

module TXSDK [system] {
header "/Users/kemuchao/Desktop/Test/ABCTimeSDK/TXSDK/TXLiteAVSDK_Smart.framework/Headers/TXLiveBase.h"
header "/Users/kemuchao/Desktop/Test/ABCTimeSDK/TXSDK/TXLiteAVSDK_Smart.framework/Headers/TXLivePlayer.h"
header "/Users/kemuchao/Desktop/Test/ABCTimeSDK/TXSDK/TXLiteAVSDK_Smart.framework/Headers/TXVodPlayer.h"
export *
}

然后把對應的 TXLiteAVSDK_Smart.framework(騰訊的直播云sdk) 拉到TASDK根目錄下面,引進來

效果如下圖:
制作基于Swift 的Framework(通過module橋接引用oc.framework)

接下來,最重要的環(huán)節(jié),配置對應的module路徑

去到TXSDK Build Settings, 搜索path,需要修改的地方有三個:

Module Map File (改成 $(SRCROOT)/TXSDK/TXSDK.modulemap)

Framework Search Paths($(PROJECT_DIR)/TXSDK)

Header Search Paths($(SRCROOT)/TXSDK)

制作基于Swift 的Framework(通過module橋接引用oc.framework)

制作基于Swift 的Framework(通過module橋接引用oc.framework)

制作基于Swift 的Framework(通過module橋接引用oc.framework)

到這里,就已經(jīng)橋接完了,去到MacroSDK,把剛剛的TXSDK引用進來

制作基于Swift 的Framework(通過module橋接引用oc.framework)

最后在MacroSDK把該用到的包全部導入進來,理我我介入騰訊sdk我需要這些包:
制作基于Swift 的Framework(通過module橋接引用oc.framework)

在MacroSDK創(chuàng)建一個test.swift ,寫一個測試用例,運行看看是否成功:

public static var version: String {
    print(TXLiveBase.getSDKVersionStr())
    let player = TXVodPlayer()
    print(player)
    return TXLiveBase.getSDKVersionStr()

}

有可能報下面這個錯誤:

Undefined symbols for architecture arm64:
"_OBJCCLASS$_TXLiveBase", referenced from:
objc-class-ref in Test.o
"_OBJCCLASS$_TXVodPlayConfig", referenced from:
objc-class-ref in Utils.o
"_OBJCCLASS$_TXVodPlayer", referenced from:
objc-class-ref in BaseVideoController.o
objc-class-ref in Utils.o
objc-class-ref in Test.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

又開始搬磚找錯誤原因:

文章名稱:制作基于Swift的Framework(通過module橋接引用oc.framework)
文章分享:http://bm7419.com/article44/pcsghe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、網(wǎng)站制作品牌網(wǎng)站制作、網(wǎng)站營銷、虛擬主機、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化