我正在尝试为第三方SDK编写一个pod,它正在作为静态库分发。
我设法让大部分工作。但是,我无法为模拟器构建pod。我试图包含的静态库似乎不支持i386
或x86_64
架构。
正在运行pod lib lint myPod.podsoec
:
- NOTE | [iOS] xcodebuild: ld: warning: ignoring file libMyLib.a, missing required architecture x86_64 in file libMyLib.a (3 slices)
- NOTE | [iOS] xcodebuild: ld: warning: ignoring file libMyLib.a, missing required architecture i386 in file libMyLib.a (3 slices)
我无权访问静态lib代码。所以我无法添加缺少的架构。
我不需要在模拟器中使用lib的功能。但我不想失去将我的应用程序构建到模拟器的可能性。最终我需要在模拟器上运行单元测试。
有没有解决这个问题的方法?
修改的
添加了podspec
Pod::Spec.new do |s|
s.name = 'myPod'
s.version = '0.1'
s.summary = 'A basic wrapper around a Cool SDK.'
s.description = <<-DESC
A basic wrapper around a Cool SDK.
A library for audio watermarking
DESC
s.homepage = 'My HomePage'
s.license = { :type => 'MIT', :file => 'LICENSE' }
s.author = { 'Tiago Veloso' => 'tiago.veloso@email.com' }
s.source = { :git => 'myPrivateRepo', :tag => s.name.to_s + '-' + s.version.to_s }
s.platform = :ios
s.ios.deployment_target = '8.0'
s.source_files = 'Classes/**/*.{h,m}','include/*.h'
s.public_header_files = 'Classes/**/*.h','include/*.h'
s.ios.vendored_libraries = 'Vendored/libMyLib.a'
s.frameworks = 'System Frameworks'
end
答案 0 :(得分:2)
没有默认的方法来限制cocoapods中的architures。
选项1:使linter忽略警告并成功使用 pod lib lint --allow-warnings
选项2 :通过将此添加到您的podspec,强制仅为非模拟器拱形建立您的广告连播:
s.pod_target_xcconfig = { 'VALID_ARCHS' => 'arm64 armv7' }
这不包括i386和x86_64,不应被客户端项目覆盖。如果客户端项目覆盖了此项,您也可以尝试
s.user_target_xcconfig = { 'VALID_ARCHS' => 'arm64 armv7' }
但这可能导致linter无法编译测试项目。
提醒:覆盖VALID_ARCHS总是一个坏主意,只有在你有充分理由这样做时才应该这样做。没有第三方lib的i386 / x86_64片段就好像在这里一样。
有关详细信息,请参阅here。