CocoaPods相关

CocoaPods不会生成xcworkspace

运行gem install cocoapods 更新cocoapods工具,然后再执行pod install
问题解决

解决CocoaPods慢的方案

https://www.jianshu.com/p/c84c9a61e9fe

Spec相关

podspec文件解析
文章介绍了一些普通项目的配置方式,这里补充两个小tip:

  • 使用use_frameworks!造成的引用错误?
    如果在Podfile中使用了use_frameworks!,那么cocopods会帮我们自动生成头文件xxx-umbrella.h,这里面导入了所有我们在podspec中配置的所有公共头文件(类似于pch文件),只要我们引用了这个文件中导入的头文件(无论是什么类型的头文件),就会引用整个模块,这就导致了如果私有库中使用了C++的代码,那么只要引用到相关的代码,就会提示找不到文件。(如果调用方不使用use_frameworks就没有这个问题,但我们不能强求别人对吧)
    因此我们就需要将C++的文件配置成私有的头文件,使用下面的代码:
s.private_header_files = [
 '.../**/*.{cpp,hpp,c}'
]

这样就不会报错了。
但是这样会导致无法使用C++文件,按照常规的操作,就需要修改到配置文件了,如何用spec修改配置文件,请看下面:

  • 如何修改项目配置?
    上面的例子中,我们想要修改Targets中的Header Search Paths来解决C++文件的使用问题,因此需要用到下面的代码:
s.pod_target_xcconfig = { ///< 修改本模块Target配置
  'KEY' =>  'Value',
}
s.user_target_xcconfig = { ///< 修改主工程Target配置
  'KEY' =>  'Value',
}

其中,KEY就是setting里的对应key的全大写+空格改为下划线,如Header Search Paths > 'HEADER_SEARCH_PATHS' ,对应的添加(使用时应自行修改为对应配置):

search_paths = [
  #Podfile不使用use_frameworks搜索路径
  '$(PODS_ROOT)/Headers/Public/...',
  '$(PODS_ROOT)/Headers/Private/...',
  #Podfile使用use_frameworks库内搜索路径
  '$(PODS_ROOT)/.../Headers',
  '$(PODS_ROOT)/.../PrivateHeaders',
//...
]
private_header_path = [
  '${PODS_CONFIGURATION_BUILD_DIR}/.../xxx.framework/PrivateHeaders',
  '$(PODS_ROOT)/Headers/Private/...',
]
s.pod_target_xcconfig = {
  'CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES' => 'YES' ,
  'HEADER_SEARCH_PATHS' => search_paths.join(' '),
}
s.user_target_xcconfig = {
  'HEADER_SEARCH_PATHS' => private_header_path.join(' '),
}

你可能感兴趣的:(CocoaPods相关)