Xcode 12 cocoapods 间接框架依赖缺失?
Xcode 12 cocoapods indirect framework dependency missing?
更新到 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 提取框架 A:
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 提取框架 B:
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
此设置使用 Xcode11.
进行编译
这似乎是一个“错误”,它会在 Xcode 11 中编译。将依赖项添加到 FrameworkB 解决了这个问题(请参阅更新问题的 podspec extract FramworkB 中的评论)
第一种方法:为此,导航到项目的构建设置并在排除的架构中添加值为 arm64 的任何 iOS 模拟器 SDK
或
如果您使用的是自定义 XCConfig 文件,您只需添加此行即可排除模拟器架构。
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
第二种方式:
您可以在 Pod 项目的 Build Settings 中手动添加 Excluded Architecture,但是当您使用 pod install 时它会被覆盖。
您可以将此片段添加到您的 Podfile 中。每次 运行 pod install
时,它都会写入必要的构建设置
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings[‘EXCLUDED_ARCHS[sdk=iphonesimulator*]’] = ‘arm64’
end
end
如果有帮助,请尝试告诉我
更新到 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 提取框架 A:
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 提取框架 B:
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
此设置使用 Xcode11.
进行编译这似乎是一个“错误”,它会在 Xcode 11 中编译。将依赖项添加到 FrameworkB 解决了这个问题(请参阅更新问题的 podspec extract FramworkB 中的评论)
第一种方法:为此,导航到项目的构建设置并在排除的架构中添加值为 arm64 的任何 iOS 模拟器 SDK
或
如果您使用的是自定义 XCConfig 文件,您只需添加此行即可排除模拟器架构。
EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
第二种方式: 您可以在 Pod 项目的 Build Settings 中手动添加 Excluded Architecture,但是当您使用 pod install 时它会被覆盖。
您可以将此片段添加到您的 Podfile 中。每次 运行 pod install
时,它都会写入必要的构建设置post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings[‘EXCLUDED_ARCHS[sdk=iphonesimulator*]’] = ‘arm64’
end
end
如果有帮助,请尝试告诉我