SwiftPM 接入 MagicSDK 與Web3Swift multiple targets named沖突的解決

因為項目需要接入 Magic錢包暮芭,所以我開始接入在項目了MagicSDK,是通過 SwiftPM 的方式玷室。接入過程中發(fā)現(xiàn) SwiftPM 報 multiple targets named 沖突了嗽交,導致接入失敗,下面就詳細說說沖突的原因和解決的方法慷嗜。

multiple targets named 沖突

先看看 SwiftPM 提示的錯誤信息

multiple targets named 'secp256k1' in: 'secp256k1.swift', 'web3swift'; consider using the `moduleAliases` parameter in manifest to provide unique names

可以看到是因為出現(xiàn)多個 targets named 為'secp256k1' 導致沖突了淀弹,首先我當前項目中通過 SwiftPM 引入了'web3swift',而web3swift 的Package文件中定義了一個Target名為 'secp256k1'庆械。而現(xiàn)在我需要引入的MagicSDK也同時引入了 'secp256k1'

MagicSDK 依賴
secp256k1 target
web3swift target

尋找解決辦法

實際上上面的錯誤提示有給出一些建議薇溃,consider using the moduleAliases parameter in manifest to provide unique names

因為Target Name 沖突了,swift 5.7 提供了 moduleAliases 別名設置來解決這個命名沖突缭乘°逍颍可以參考:https://github.com/apple/swift-evolution/blob/main/proposals/0339-module-aliasing-for-disambiguation.md

但是我的項目是通過Xcode 管理的 SwiftPM,不是通過 Package.swift 文件處理依賴關系。添加 moduleAliases 參數(shù)這個解決方案我就為有嘗試下去了薄啥。

我回去研究了web3swift 庫對 secp256k1的使用辕羽,發(fā)現(xiàn)2個沖突的target是做同樣的功能,不過web3swift 是通過源碼方式引入垄惧,然后設置了target name來使用刁愿,MagicSDK 是通過 swiftPM 依賴引入 secp256k1 來使用。

到這里我就有新的解決思路到逊。

解決

因為swiftPM 能夠通過 Local 方式引入對應的 Package铣口。所以我下載了'web3swift'的源碼引入到項目中,然后修改了 'web3swift'的 Package.swift 文件改變了對 'secp256k1'引入方式觉壶。

/ swift-tools-version: 5.5.0
// The swift-tools-version declares the minimum version of Swift required to build this package.

import PackageDescription

let package = Package(
    name: "Web3swift",
    platforms: [
        .macOS(.v10_15), .iOS(.v13)
    ],
    products: [
        .library(name: "web3swift", targets: ["web3swift"])
    ],
    dependencies: [
        .package(url: "https://github.com/attaswift/BigInt.git", .upToNextMinor(from: "5.3.0")),
        .package(url: "https://github.com/krzyzanowskim/CryptoSwift.git", .upToNextMinor(from: "1.5.1")),
        .package(name: "secp256k1", url: "https://github.com/Boilertalk/secp256k1.swift.git", from: "0.1.7")
    ],
    targets: [
        .target(
            name: "Web3Core",
            dependencies: ["BigInt", "secp256k1", "CryptoSwift"]
        ),
        .target(
            name: "web3swift",
            dependencies: ["Web3Core", "BigInt", "secp256k1"],
            resources: [
                .copy("./Browser/browser.js"),
                .copy("./Browser/browser.min.js"),
                .copy("./Browser/wk.bridge.min.js")
            ]
        ),
        .testTarget(
            name: "localTests",
            dependencies: ["web3swift"],
            path: "Tests/web3swiftTests/localTests",
            resources: [
                .copy("../../../TestToken/Helpers/SafeMath/SafeMath.sol"),
                .copy("../../../TestToken/Helpers/TokenBasics/ERC20.sol"),
                .copy("../../../TestToken/Helpers/TokenBasics/IERC20.sol"),
                .copy("../../../TestToken/Token/Web3SwiftToken.sol")
            ]
        ),
        .testTarget(
            name: "remoteTests",
            dependencies: ["web3swift"],
            path: "Tests/web3swiftTests/remoteTests",
            resources: [
                .copy("../../../TestToken/Helpers/SafeMath/SafeMath.sol"),
                .copy("../../../TestToken/Helpers/TokenBasics/ERC20.sol"),
                .copy("../../../TestToken/Helpers/TokenBasics/IERC20.sol"),
                .copy("../../../TestToken/Token/Web3SwiftToken.sol")
            ]
        )
    ]
)

這樣web3swift就不再提供 secp256k1 這個traget政敢,項目中也是共同使用同一個 secp256k1 的package了碎税。 最后我通過Local 方式引入了web3swift 沖突問題也不存在了。

moduleAliases 這個解決方式我沒使用到,如果有這方面的經(jīng)驗同學可以交流一下~

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末避诽,一起剝皮案震驚了整個濱河市盯孙,隨后出現(xiàn)的幾起案子咧擂,更是在濱河造成了極大的恐慌榛做,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蚕苇,死亡現(xiàn)場離奇詭異哩掺,居然都是意外死亡,警方通過查閱死者的電腦和手機涩笤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門嚼吞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蹬碧,你說我怎么就攤上這事舱禽。” “怎么了锰茉?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵呢蔫,是天一觀的道長。 經(jīng)常有香客問我飒筑,道長片吊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任协屡,我火速辦了婚禮俏脊,結果婚禮上,老公的妹妹穿的比我還像新娘肤晓。我一直安慰自己爷贫,他們只是感情好认然,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漫萄,像睡著了一般卷员。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上腾务,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天毕骡,我揣著相機與錄音,去河邊找鬼岩瘦。 笑死未巫,一個胖子當著我的面吹牛,可吹牛的內容都是我干的启昧。 我是一名探鬼主播叙凡,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼密末!你這毒婦竟也來了握爷?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤苏遥,失蹤者是張志新(化名)和其女友劉穎饼拍,沒想到半個月后赡模,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體田炭,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年漓柑,在試婚紗的時候發(fā)現(xiàn)自己被綠了教硫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡辆布,死狀恐怖瞬矩,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情锋玲,我是刑警寧澤景用,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站惭蹂,受9級特大地震影響伞插,放射性物質發(fā)生泄漏。R本人自食惡果不足惜盾碗,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一媚污、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廷雅,春花似錦耗美、人聲如沸京髓。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽堰怨。三九已至,卻和暖如春蛇摸,著一層夾襖步出監(jiān)牢的瞬間诚些,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工皇型, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留诬烹,地道東北人。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓弃鸦,卻偏偏與公主長得像绞吁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子唬格,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

推薦閱讀更多精彩內容