Cocoapods:无法设置广告连播构建设置

时间:2017-05-10 18:37:38

标签: xcode cocoapods

在我目前的项目中,我试图包含一个内部pod,其中包含两个子规格 - 一个用于常规应用,一个用于今天的小部件扩展。不幸的是,Cocoapods(1.2.1)错误地推断了pod目标的构建标志。这两个目标 - 扩展容器目标和正常的应用程序容器目标 - 具有“仅需要App-Extension-Safe API"设置为YES,导致-fapplication-extension CLANG编译器标志。可悲的是,一个目标并没有构建在这种配置中。

手动将标志设置为NO可解决问题,但只能解决下一个pod更新问题。具体而言,这是我试图解决的设置:

screencap

我甚至不确定启发式Cocoapods用什么来推断它需要打开还是关闭,但有没有办法明确设置目标构建设置?我试过了

s.subspec 'Core' do |core|
  core.dependency 'xxxxxxx','~> 1.0.1'
  core.source_files = 'Pod/Sources/**/*.{h,m,mm}'
  core.ios.xcconfig          = {
     'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
     'APPLICATION_EXTENSION_API_ONLY' => 'NO'
   }
   core.tvos.xcconfig = {
     'GCC_PREPROCESSOR_DEFINITIONS' => 'TVOS=1',
     'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES'
   }
end

s.subspec 'Core' do |core|
  core.dependency 'xxxxxxx','~> 1.0.1'
  core.source_files = 'Pod/Sources/**/*.{h,m,mm}'
  core.pod_target_xcconfig = { 'APPLICATION_EXTENSION_API_ONLY' => 'NO' }
  core.ios.xcconfig          = {
     'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES',
   }
   core.tvos.xcconfig = {
     'GCC_PREPROCESSOR_DEFINITIONS' => 'TVOS=1',
     'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES'
   }
end
不幸的是,两者都无济于事。设置仍然固执地为YES。我的机智在这里结束了。我能尝试什么吗?

1 个答案:

答案 0 :(得分:0)

自我回答:我仍然不知道如何强制设置,但问题实际上是在我们的(多层)依赖关系图中。应用程序和应用程序扩展目标都使用了依赖的子规范,因此强制该子目标目标的编译器标志。

我通过添加另一个子规定来修复它,以便应用程序和扩展程序不共享pod目标。