目前開發(fā)swift版本的SDK(framework) , 需要引用騰訊的sdk(framework),因?yàn)轵v訊sdk是oc版本的,如果是普通swift項(xiàng)目引用,直接創(chuàng)建橋接文件就可以,但是framework橋接文件是沒有用的,以下文檔就是解決這個(gè)問題:
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡(jiǎn)單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國際域名空間、網(wǎng)站空間、營銷軟件、網(wǎng)站建設(shè)、貢嘎網(wǎng)站維護(hù)、網(wǎng)站推廣。
怎么在Swift 的Framework工程里面引用oc的framework
一、創(chuàng)建自己的swift framework工程
創(chuàng)建完成后工程是這個(gè)樣子:
二、(重點(diǎn))創(chuàng)建一個(gè)橋接targe,
在這個(gè)targe通過module里面引用oc的framework
操作步驟:
1、創(chuàng)建一個(gè)targe(記住,是targe,不是project)
選擇targe之后,下一步. 選擇Cocoa Touch Framework
下一步,填寫名字(TXSDK)因?yàn)槲沂菢蚪域v訊sdk,所以叫這個(gè)名字,你可以隨表起,點(diǎn)擊 Finish,出來的效果如下
下一步:在TASDK根目錄下創(chuàng)建兩個(gè)文件 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ù)你的實(shí)際路徑來,引入的就是對(duì)應(yīng)的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 *
}
然后把對(duì)應(yīng)的 TXLiteAVSDK_Smart.framework(騰訊的直播云sdk) 拉到TASDK根目錄下面,引進(jìn)來
效果如下圖:
接下來,最重要的環(huán)節(jié),配置對(duì)應(yīng)的module路徑
去到TXSDK Build Settings, 搜索path,需要修改的地方有三個(gè):
Module Map File (改成 $(SRCROOT)/TXSDK/TXSDK.modulemap)
Framework Search Paths($(PROJECT_DIR)/TXSDK)
Header Search Paths($(SRCROOT)/TXSDK)
到這里,就已經(jīng)橋接完了,去到MacroSDK,把剛剛的TXSDK引用進(jìn)來
最后在MacroSDK把該用到的包全部導(dǎo)入進(jìn)來,理我我介入騰訊sdk我需要這些包:
在MacroSDK創(chuàng)建一個(gè)test.swift ,寫一個(gè)測(cè)試用例,運(yùn)行看看是否成功:
public static var version: String {
print(TXLiveBase.getSDKVersionStr())
let player = TXVodPlayer()
print(player)
return TXLiveBase.getSDKVersionStr()
}
有可能報(bào)下面這個(gè)錯(cuò)誤:
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)
又開始搬磚找錯(cuò)誤原因: