更新到Xcode 12项目后将不再构建。
undefined symbols for architecture x86_64:
"_OBJC_CLASS_$_DDLog", referenced from:
objc-class-ref in Bouncer.o
ld: symbol(s) not found for architecture x86_64
DDLog在CocoaLumberjack中定义。这是FrameworkA的依赖项,是FrameworkB(测试项目)的依赖项
Podspec提取FrameworkA:
Pod::Spec.new do |s|
[...]
s.default_subspec = 'Core'
s.subspec 'Core' do |co|
co.source_files = 'FrameworkA_Objc_DependencyIssue/Classes/**/*'
co.dependency 'CocoaLumberjack', '~> 3.1'
end
end
Podspec提取FrameworkB:
Pod::Spec.new do |s|
[...]
s.source_files = 'FrameworkB_Objc_DependencyIssue/Classes/**/*'
s.dependency 'FrameworkA_Objc_DependencyIssue/Core', '~> 0.1.2'
# s.dependency 'CocoaLumberjack' # Adding direkt dependency fixes problem!
end
此设置可使用Xcode 11编译。
答案 0 :(得分:1)
这似乎是一个可以在Xcode 11中编译的“错误”。将依赖项添加到FrameworkB解决了该问题(请参阅podspec摘录FramworkB中更新问题的注释)
答案 1 :(得分:0)
第一种方法:为此,请导航至项目的“构建设置”,然后在“排除的体系结构”中添加任何值为arm64的iOS模拟器SDK
或
如果使用自定义XCConfig文件,则只需添加此行即可排除模拟器体系结构。
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
第二种方式: 您可以在Pod项目的Build Settings中手动添加Excluded Architecture,但是当您使用pod install时,它将被覆盖。
作为替代,您可以将此代码段添加到Podfile中。每次您运行pod install时,它都会写出必要的Build Settings
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings[‘EXCLUDED_ARCHS[sdk=iphonesimulator*]’] = ‘arm64’
end
end
请尝试让我知道是否有帮助