升級(jí)到Xcode?15后抒倚,原先Xcode14可以編譯的項(xiàng)目出現(xiàn)大量Duplicate symbols刹衫,且引用報(bào)錯(cuò)指向同一個(gè)路徑(一般為Framework)下的同一個(gè)文件荧琼。經(jīng)過查找相關(guān)解決,可通過
在Xcode -> Target -> Build Setting -> Other Linker Flags?添加一行"-ld64"
即可解決該問題
原因是Xcode15采用了新的鏈接器(Linker)炫七,被稱作“l(fā)d_prime”爬立。新的連接器有諸多好處,尤其是對(duì)合并庫的支持方面诉字,具體可以查看WWDC 2023 SESSION 10268Meet mergeable libraries.懦尝。然而,鏈接器的升級(jí)可能會(huì)出現(xiàn)不兼容老庫的情況出現(xiàn)壤圃。遇到這種情況陵霉,可以通過恢復(fù)舊的連接器來解決這個(gè)問題。從Other Linker Flags添加"-ld64"后伍绳,就會(huì)覆蓋Xcode編譯時(shí)選擇的鏈接器踊挠,因此可以正常訪問。
也可以用cocoapods 安裝之后修改OTHER_LDFLAGS
?xcode_version = `xcodebuild -version`.match(/Xcode (\d+)/)[1].to_i
? target_names = ['targer_name']
? installer.pods_project.targets.each do |target|
? ? next unless target_names.include?(target.name)
? ? target.build_configurations.each do |config|
? ? ? config.build_settings['OTHER_LDFLAGS'] ||= []
? ? ? if xcode_version >= 15
? ? ? ? ? unless config.build_settings['OTHER_LDFLAGS'].include?('-ld64')
? ? ? ? ? ? config.build_settings['OTHER_LDFLAGS'] << '-ld64'
? ? ? ? ? end
? ? ? else
? ? ? ? ? config.build_settings['OTHER_LDFLAGS']&.delete('-ld64')
? ? ? end
? ? end
? end