iOS 模拟器编译-忽略只支持真机的SDK

部分第三方SDK只支持在真机下运行调试,需要在运行模拟器时忽略只支持真机运行的SDK,当然在模拟器环境下SDK相关功能不可用。

一、SDK相关代码 编译判断

#if !TARGET_OS_SIMULATOR

//示例 腾讯会议SDK
#import 

endif

二、忽略SDK在link链接

方案1:

在xcode工程配置 BuildSettings 中 设置 Excluded Source File Names 指定在模拟器环境不参与编辑的文件。

image.png

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

你可能感兴趣的:(iOS 模拟器编译-忽略只支持真机的SDK)