美文网首页
关于“不支持模拟器调试的第三方SDK”解决办法

关于“不支持模拟器调试的第三方SDK”解决办法

作者: 呛人的黑 | 来源:发表于2017-04-25 10:13 被阅读0次

    起因

    公司项目集成了萤石云SDK(EZOpenSDK,下文简称EZ),此SDK不支持模拟器调试,由于个人工作习惯不同,有些同事习惯模拟器调试(其实是因为公司不配发测试机,平时真机调试都在用自己的手机,所以大家习惯于模拟器调试程序),所以leader交个我这个艰巨的任务,让我想办法,使程序可以支持模拟器调试。

    结果

    其他功能支持模拟器调试,涉及到EZ的功能仍需要真机调试。

    经过

    因为在集成EZ之前就在文档中了解到仅支持真机调试,所以在集成之后,出现下图的错误也是预料之中

    思路很简单,运行编译时识别调试设备类型,如果是模拟器调试,不编译EZ或不编译引用EZ的地方,这样应该就可以实现需求。

    思路一脚本

    leader说写脚本可以实现动态添加或删除文件的功能,脚本我是一窍不通,于是开始了解脚本,经过努力,写下了下面的shell脚本

    num1="x86_64"

    num2="i386"

    if test $ARCHS = $num1

    then

    echo $ARCHS

    echo '64模拟器'

    elif test $ARCHS = $num2

    then

    echo $ARCHS

    echo '32模拟器'

    else

    echo $ARCHS

    echo '真机'

    fi

    shell脚本写在TARGETS -> Build Phases -> Run Script

    实现了区分调试设备类型,但是没有找到添加或删除文件的脚步代码(或许是有的,这个问题我会继续研究一下的,或者有大神看到希望能指点一下小弟),于是思路一卒。

    思路二新建配置文件

    PROJECT ->info ->configurations->1点击加号,选择要copy的配置->2

    3修改名称

    4新建scheme

    5命名新scheme

    6修改build configuration点击图4中Edit Scheme,保证切换scheme时,配置文件与之对应

    7最重要的一点!!!之前不知道这一点,白白忙活了一阵子

    TARGETS -> Build Setting -> Apple LLVM 8.1 - Preprocessing -> Preprocessor Macros

    红色箭头所指的地方,一定要与新建配置文件对应,这里是设置全局宏的地方

    绿色箭头所指的$(inherited)标签,网上说是表示继承路径,我的项目了删除了也没有任何问题,我认为是因为我所新建的debugSimulator与debug不存在路径不同的问题,所以删除了也没问题

    8新的配置文件debugSimulator已经设置完成了,下面就是在具体引用EZ库的地方做条件编译处理

    如图所示我们的需求是release和debug正常引用EZ,debugSimulator不引用EZ,只调试其他功能,所以debugSimulator时为空,release和debug正常引用EZ。其他类中引用EZ的代码,采取同样的方法处理。

    总结

    这个方法绝对不是最佳方法,因为最后一步的做法就很low,幸好项目用到EZ的功能不多,只有两个地方引用,所以工作量不大。

    在网上查资料时,发现了新建TARGETS的做法,思路差不多,不同点在于,我的做法是一个targets,多个scheme,网上的做法是多个targets对应多个scheme,具体targets和scheme的区别我还需要多了解。

    文章的不足之处,希望大家多多批评指正,斜体字体是本文遗留问题,也希望大家指点一二,希望文章能帮到其他的人。

    后记

    之后同事更新发现,我所新建的scheme并没有更新到,如图所示,每一个scheme都有一个shared属性,之前我没有打钩,所以其他人更新不的,勾选之后提交,同事就可以顺利的更新到了。

    相关文章

      网友评论

          本文标题:关于“不支持模拟器调试的第三方SDK”解决办法

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