美文网首页iOS开发iOSer 干货部落iOS
Xcode多种Build Configuration配置使用

Xcode多种Build Configuration配置使用

作者: PengElement | 来源:发表于2015-10-05 22:59 被阅读15673次

    测试环境

    OS X Yosemite 10.10.5

    Xcode 7.0.1

    Build Configuration?

    Xcode默认会有2个编译模式,一个是Debug,一个是Release。Release下不能调试程序,编译时有做编译优化,会比用Debug打包出来的运行快,另外包也会更小。

    pic1.png

    使用场景

    我自己碰到的使用场景是,我司的域名有3套:

    1. 针对开发时的域名
    2. 针对预上线时的域名
    3. 针对上线时对外公开的域名

    这个时候,就会有多套域名,全部加起来可能有15个左右。每次打包时,就会特别混乱。(注释掉现在使用的域名,打开原本注释掉的那部分,出差错的可能蛮高的,而且不利于阅读)

    这个时候,我们就使用它来针对3个环境下不同域名做配置。

    配置Build Configuration

    1. 添加Configuration

    这里我们添加DEVELOP、BETA、保留原有的(release)。这里我们选择直接duplicatte Debug的配置,因为Release的不能做断点调试。

    pic2.png

    2. 查看Configuration

    添加完第1步的Configuration之后,在Edit Scheme里就会看到新添加的配置项

    pic3.png

    3. 更改Preprocessor Macros

    第1步里我们直接复制了Debug的配置项,那这里的值就会有问题,需要自己设置。

    pic4.png

    4. 在程序里配置对应的Configuration下不同域名

    pic5.png

    5. 测试

    运行程序,修改Scheme下不同的Configuration,就能得到不同的值,那结果就是正确的了。


    基于以上的实验,app还可以在不同环境下配置不同的AppIcon和AppName

    AppIcon

    使用Asset Catalog,分别给三种环境下配置3个名字

    • AppIcon
    • AppIconDEVELOP
    • AppIconBETA

    然后去Target - Build Settings里搜索Asset Catalog App Icon Set Name这一项

    pic6.png pic7.png

    App Name

    Target - Build Settings里点+号,添加一个User-Defined Setting

    比如我们请一个叫APP_DISPLAY_NAME的key值,下面BETA叫BETA,DEVELOP叫DEVELOP, Release还是用系统原配置。

    进到Target - Info里,修改Bundle name为$(APP_DISPLAY_NAME)

    pic8.png pic9.png pic10.png

    运行结果

    iconDev.png iconBeta.png iconRelease.png

    打包配置

    这几天我们做了一件很蠢的事,把开发用的环境打包发给了Apple。
    为了弥补这件事,顺便规范以后的打包问题,于是做了一些配置上的补救。
    查了下Apple的文档,原来可以配置,我将Release环境以外的Skip Install配置成NO,就不会Archive出ipa了。

    TN2215_SkipInstall.png

    参考

    http://nickcheng.com/post/unique-icons-for-your-app-in-different-state-in-xcode5-debug-release

    https://developer.apple.com/library/ios/technotes/tn2215/_index.html

    相关文章

      网友评论

      • CocoaH:你好,问下,我按照这个步骤操作,运行时候报错library not found for -lAFNetworking,是因为什么啊?第三方库使用cocoapod管理的
        gdutxzy:重新 pod update 一下就好了
      • iStig:Skip Install配置成NO 学到了有收获
        雷雨庭花:加新的target就ok了
        iStig:用build configture唯一的遗憾是打包是唯一一个bounld id的ipa包 ,有些情况想要不同bounld id的包这个方法就显得有点尴尬了
      • Joymerry:写的还可以,给赞
      • prideDream:打包配置,skip install 设置为no debug 环境仍然可以archive ipa包,设置为yes会跳过。而且skip install 默认为no
        d0ab8ef28fa2:那这个会将debug打包的问题怎么解决的
      • LearningCoding:问一下,你这个可以在一台测试机上打多个包吗
        LearningCoding:@就是帅气的昵称 bundleID更改之后,Provisioning file不就不能用了吗
        非常帅气掉渣天的昵称:@人家其实是小公举啦 在一台机子上打多个包需要boundleID不同
      • ecfb918e5ccf:您好:您说的这个第四步,有详细的吗?4. 在程序里配置对应的Configuration下不同域名
        因为这一步没明白。是创建header.h文件 还是创建.xcconfig ,
        或者您能给发一个您配置好的项目吗?857663897@qq.com 感激不尽。
      • 可了个可:请问一下:在Archive的时候如何针对DEVELOP、BETA环境作区分?是在Scheme中的Archive项选更改Build Configuratio吗?
        LearningCoding:@胖劫 Provisioning file也是分配置项的 这个是怎么配置的呢
        PengElement:@keke 1.是的,实测一下就知道了 2.Provisioning file也是分配置项的
        可了个可:@keke 补充一下,如果Archive的时候使用Develop或beta,此时的证书和Provisioning file等其实是不同的?难道再建一套DEVELOP_ARCHIVE BETA_ARCHIVE吗?
      • cb4f4e472e7e:清晰易懂,谢谢啦

      本文标题:Xcode多种Build Configuration配置使用

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