部分第三方SDK只支持在真机下运行调试,需要在运行模拟器时忽略只支持真机运行的SDK,当然在模拟器环境下SDK相关功能不可用。
一、SDK相关代码 编译判断
#if !TARGET_OS_SIMULATOR
//示例 腾讯会议SDK
#import <WeMeetSDK/WeMeetSDKAPI.h>
endif
二、忽略SDK在link链接
方案1:
在xcode工程配置 BuildSettings 中 设置 Excluded Source File Names
指定在模拟器环境不参与编辑的文件。
方案2:
本地pod + Configuration
1)将不支持模拟器架构的SDK封装为本地pod
2)新增Configuration 例如SimularDebug
pod 'KSWemeet', :path => "./KSWeMeet", :configurations => ['UAT','STG','Debug','Release']
指定SDK的本地pod只在非模拟器(SimularDebug的Configuration )环境下才pod
运行模拟器时需要修改Configuration
方案3:
新增模拟器运行的target
新增target 不勾选 模拟器不支持的架构即可
其他相关
1.本地podspec事例
Pod::Spec.new do |s|
s.name = "KSWemeet"
s.version = "1.2.4"
s.summary = "跨声腾讯会议"
s.description = <<-DESC
腾讯会议。
DESC
s.homepage = "http://gitlab.corp.com/com./KSWemeet"
s.license = 'MIT'
s.author = "DoZhui"
s.platform = :ios, "9.0"
s.source = { :git => "wemeet", :tag => s.version }
s.requires_arc = true
s.default_subspec = 'WeMeet'
s.subspec 'WeMeet' do | wmt |
wmt.vendored_frameworks = 'WeMeetSDK/**.framework'
wmt.resource = 'conf/1400321069.conf'
wmt.dependency 'KSWemeet/dependencySDK'
end
s.subspec 'dependencySDK' do |dSDK|
dSDK.vendored_frameworks = 'Dependences/*.framework'
end
s.subspec 'WeMeetExtension' do |extension|
extension.vendored_frameworks = 'WeMeetExtension/*.framework'
extension.dependency 'KSWemeet/dependencySDK'
extension.frameworks = 'ReplayKit'
end
end
2.可能遇到Build Phases 中包含run script 用于上线打包剔除i386架构脚本,可通过判断Configuration
仅在生产环境才剔除。
if [ $CONFIGURATION == Release ]; then
...lipo 剔除架构脚本代码
fi