我们有这个 podspec 使用
spec.vendored_libraries
引用静态库。静态库是针对两种情况构建的:
arm64、ios
arm64,ios模拟器
Pod::Spec.new do |spec|
spec.platform = :ios
spec.name = 'pod_lib'
spec.version = '1.0.0'
spec.homepage = 'pod_lib'
spec.source = { :git => "Not Published", :tag => "Cocoapods/#{spec.name}/#{spec.version}" }
spec.authors = 'Authors'
spec.license = ''
spec.summary = 'pod_lib'
spec.ios.deployment_target = '13.5'
spec.source_files = 'headers/**/*.h'
spec.public_header_files = 'headers/**/*.h'
spec.vendored_libraries = 'iosArm64/lib/a.a'
spec.header_mappings_dir = 'headers'
spec.static_framework = true
spec.libraries = 'c++'
spec.pod_target_xcconfig = {
'CLANG_CXX_LANGUAGE_STANDARD' => 'c++20',
'CLANG_CXX_LIBRARY' => 'libc++',
'ARCHS' => 'arm64',
}
end
是否可以在 cocoapod podspec 中指定这两个库?
我想要一些类似的东西
spec.vendored_libraries = 'iosArm64/lib/a.a',
'iosSimulatorArm64/lib/a.a'
由于库名称相同,这不起作用,而且似乎尚不支持此类功能:https://github.com/CocoaPods/CocoaPods/issues/8688
作为一种解决方法,有些人建议使用
lipo
来构建通用二进制文件:
lipo -create -output libuniversal.a ./iosArm64/lib/a.a ./iosSimulatorArm64/lib/a.a
这不起作用,因为两个二进制文件已经为相同的架构(arm64)构建。
是否有可能拥有一个包含两个平台的 cocoapod?或者有其他方法可以解决这个问题吗?
支持具有相同架构的多个平台的问题是 Apple 创建 XCFramework 构造的原因。详情请见https://developer.apple.com/documentation/xcode/creating-a-multi-platform-binary-framework-bundle
在下面的链接中,描述了使用
ar
或 libtool
来制作通用静态库,然后可以将其包装到适用于 iOS 和 iOS 模拟器平台的 XCFramework 中