Cocoapods环绕一个没有i386架构的静态库

时间:2017-03-07 10:11:54

标签: ios cocoapods

我正在尝试为第三方SDK编写一个pod,它正在作为静态库分发。

我设法让大部分工作。但是,我无法为模拟器构建pod。我试图包含的静态库似乎不支持i386x86_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

1 个答案:

答案 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