在xcworkspace 中使用cocoapod
- 在xcworkspace同级目录中创建一个 Podfile 文件
- 编写 Podfile 文件
- 运行 pod install 命令
workspace 'Demo.xcworkspace'
target 'Demo_001' do
platform :ios,'9.0'
pod 'YYKit'
# - 使用本地的pod路径
# - pod 'QIEPayUIComponent', '0.3.4'
# - pod 'QIEBasePlayerCompont', :path => '../../../MyGit/QIEBasePlayerCompont'
# - 禁用 UIWebView
# - pod 'SensorsAnalyticsSDK', :subspecs => ['DISABLE_UIWEBVIEW']
# - 仅在debug 条件下导入
# pod 'DoraemonKit/Core', '~> 3.0.1', :configurations => ['Debug'] #必选
xcodeproj 'Demo_001/Demo_001.xcodeproj'
end
target 'Demo_002' do
# - 指定pod版本号
pod 'AFNetworking', '~> 4.0'
xcodeproj 'Demo_002/Demo_002.xcodeproj'
end
podspec的文件内容
Pod::Spec.new do |s|
s.name = '组件名称'
s.version = '0.2.0'
s.summary = '播放器'
s.description = <<-DESC
'播放器'
DESC
s.homepage = '主页地址'
s.license = { :type => 'type', :file => 'file' }
s.author = { 'xxx' => 'xx@qq.com' }
s.source = { :git => 'git地址', :tag => s.version.to_s }
s.ios.deployment_target = '9.0'
# - 在pch中写入条件判断的内容
s.prefix_header_contents = <<-EOS
#ifdef __OBJC__
#import "QIEBasePlayerConstants.h"
#endif
EOS
# - 在pch中写入要导入的头文件
s.prefix_header_contents = '#import <UIKit/UIKit.h>', '#import <Foundation/Foundation.h>'
# - 指定pch文件
s.prefix_header_file = 'iphone/include/prefix.pch'
# - 组案的源文件
s.source_files = 'QIEBasePlayerCompont/Classes/QIEBasePlayerConstants.h','QIEBasePlayerCompont/Classes/QIEBasePlayerHeader.h'
# - 组件的资源文件
s.resources = ['QIEBasePlayerCompont/Assets/*.plist','QIEBasePlayerCompont/Assets/Images/*.png', 'QIEBasePlayerCompont/Assets/Images/*.jpg', 'QIEBasePlayerCompont/Assets/SVG/*.svg']
# - 依赖的框架
s.frameworks = "VideoToolbox", "AudioToolbox","AVFoundation","Foundation","UIKit"
# - 依赖的静态库
s.libraries = "c++", "z"
# - 每个子组件
s.subspec 'LFLiveKit' do |ss|
# - 子组件的资源文件
ss.source_files ='QIEBasePlayerCompont/Classes/LFLiveKit/**/*.{h,m,mm,cpp,c,hpp}'
# - 子组件的公开的头文件,因为在podfile中使用了use_frameworks!,那么cocopods会帮我们自动生成头文件xxx-umbrella.h,这里面导入了所有我们在podspec中配置的所有公共头文件(类似于pch文件),只要我们引用了这个文件中导入的头文件(无论是什么类型的头文件),就会引用整个模块,这就导致了如果私有库中使用了C++的代码,那么只要引用到相关的代码,就会提示找不到文件。(如果调用方不使用use_frameworks就没有这个问题,但我们不能强求别人对吧),为了避免这情况, 这里写成 public_header_files
ss.public_header_files = ['QIEBasePlayerCompont/Classes/LFLiveKit/*.h', 'QIEBasePlayerCompont/Classes/LFLiveKit/objects/*.h', 'QIEBasePlayerCompont/Classes/LFLiveKit/configuration/*.h']
# - 以来的.a文件
ss.vendored_libraries = 'QIEBasePlayerCompont/Classes/LFLiveKit/faceDetect/libs/*.a'
# - 使用的资源文件
ss.resources = 'QIEBasePlayerCompont/Classes/LFLiveKit/*.bundle'
# - 依赖的系统框架
ss.frameworks = 'UIKit','Foundation','AVFoundation','VideoToolbox','AudioToolbox'
# - 依赖的系统静态库
ss.libraries = 'z', 'c++'
# - 依赖的非系统框架
ss.ios.vendored_frameworks = 'QIEBasePlayerCompont/Classes/DYLiveKit/DYLiveKit_Lib/*.framework'
# - 依赖的非系统静态库
ss.ios.vendored_libraries = 'QIEBasePlayerCompont/Classes/DYLiveKit/FFMPEG_Lib/libs/*.a', 'QIEBasePlayerCompont/Classes/DYLiveKit/*.a'
# - 修改arc和mrc的一些参数
ss.requires_arc = false
ss.requires_arc = ['QIEThreePartyLibs/Classes/SMTPSender/ARC/**/*.m']
end
s.subspec 'QIEAVCommonClass' do |ss|
ss.source_files = 'QIEBasePlayerCompont/Classes/QIEAVCommonClass/*.{h,m}'
ss.dependency 'QIEAppDelegateManager'
ss.dependency 'TXLiteAVSDK_Professional'
end
s.subspec 'QIEPusher' do |ss|
ss.source_files = 'QIEBasePlayerCompont/Classes/QIEPusher/*.{h,m}'
# - 依赖的其它子组件
ss.dependency 'QIEBasePlayerCompont/LFLiveKit'
end
# - 依赖的其它组件
s.dependency 'Masonry'
s.dependency 'QIEConfigComponent'
s.dependency 'QIEBaseTool'
s.dependency 'QIEThreePartyLibs/UmengLib'
s.static_framework = true
# - 以下的属性可以在 build setting 中赋值粘贴出来名;
# - pod_target_xcconfig 表示修改pod本身的编译选项; user_target_xcconfig 表示修改依赖pod 的项目的编译选项
# - 用编辑器打开项目文件Pods.xcodeproj,查找该编译选项的Key,也可以在这里查看
# - 禁用bitcode
s.pod_target_xcconfig = { 'ENABLE_BITCODE' => 'NO' }
s.user_target_xcconfig = { 'ENABLE_BITCODE' => 'NO' }
# - HEADER_SEARCH_PATHS, FRAMEWORK_SEARCH_PATHS, LIBRARY_SEARCH_PATHS
s.xcconfig = { 'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2' }
s.xcconfig = { 'FRAMEWORK_SEARCH_PATHS' => '$(SRCROOT)/libs/Frameworks/Huoyan' }
s.xcconfig = { 'LIBRARY_SEARCH_PATHS' => '"$(PODS_ROOT)/iOS_Util/iOS_Util/AMR/lib"' }
# - 修改Clang的一些参数
s.xcconfig = {
'CLANG_CXX_LANGUAGE_STANDARD' => 'gnu++11',
'CLANG_CXX_LIBRARY' => 'libc++',
'HEADER_SEARCH_PATHS' => '$(SDKROOT)/usr/include/libxml2'
}
# - 修改 OTHER_LDFLAGS
s.xcconfig = { 'OTHER_LDFLAGS' => '-ObjC' }
end
使用参数搞podfile文件
PODFILE_TYPE = []
PODFILE_TYPE = ENV['PODFILE_TYPE'].split(".") if ENV['PODFILE_TYPE']
if(PODFILE_TYPE.include?('QIESVGKit'))
if(PODFILE_TYPE.include?('branch'))
pod 'QIESVGKit', :git => 'https://github.com/aliyun/QIESVGKit.git', :branch => 'master'
elsif(PODFILE_TYPE.include?('local'))
pod 'QIESVGKit', :path => '/Users/lichaoqun/Desktop/公司/QIESVGKit'
end
else
pod 'QIESVGKit' , '0.0.3'
end
// - 更新pod
# - 使用 本地的cocoapod: env PODFILE_TYPE=QIEUserCenterComponent.local pod install
# - 使用远程branch的 cocoapod: env PODFILE_TYPE=QIEUserCenterComponent.branch pod install
# - 使用默认的 cocoapod: pod install