美文网首页ios常用
iOS 模拟器编译-忽略只支持真机的SDK

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

作者: Zhui_Do | 来源:发表于2021-08-26 17:26 被阅读0次

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

    一、SDK相关代码 编译判断

    #if !TARGET_OS_SIMULATOR
    
    //示例 腾讯会议SDK
    #import <WeMeetSDK/WeMeetSDKAPI.h>
    
    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

        本文链接:https://www.haomeiwen.com/subject/uiluiltx.html