zoukankan      html  css  js  c++  java
  • Xcode 运行时配置

    有时候,我们的app在测试时需要连接到一个testing服务器,在打包为企业证书的app时又需要连接到另一个ad hoc 服务器,或者我们想企业证书打包的app和debug模式打包的app有不同的APP Bundle Identifier,以在一个测试机上同时安装....等等这些与App开发没有实际连接的需求,如果我们手动改,非常麻烦,如果分工程管理更麻烦。

    下面介绍一些Xcode中的运行时配置,希望有所启发:

    一个很好地实现上面的需求的方式是使用build configuration 构建配置和C 宏定义,这避免了为不同的配置创建不同的target。首先你需要在工程级别开始配置:

    可以看到,上面有三个配置:Debug,Release,adhoc。而且,前面两个配置里都有两个xcconfig文件:

    这些xcconfig文件内容类似这样:

    接下来,您可以将被传递到编译器的每个配置定义了一些宏标志。然后,您可以在编译时检查这些标志。在target级别中找到"Preprocessor flags"(在Xcode 6中是"Preprocessor Macros")构建设置,你可以在这里定义 KEY=VALUE 或者 只是 KEY 形式的宏定义:

    在你的代码中,你可以检查这些宏定义是否存在,例如:

    你也可以传入字符串类型,只不过必须用单引号括起来:

    DEFAULT_LOCALIZATION_NAME='@"en"'

    你也可以使用Schemes 编辑器,为Debug 和Archive时指定不同的配置:

    如果你需要在Info.plist 文件里使用自定义的参数,你可以添加一个自定义的构建设置:

    然后对不同的配置,设置合适的值:

    然后,你在Info.plist文件中,就可以使用这个自定义的参数:

    甚至,我们在命令行下构建项目时,还可以直接设置这个参数的值:

    xcodebuild …  BUNDLE_ID_SUFFIX=justTest build

    自动根据当前git项目的提交次数来在构建时,修改Info.plist的构建版本号

    首先创建一个shell 脚本 buildNumber.sh ,主要是获取当前git项目的提交次数,作为build version,修改Info.plist文件对应的build verison:

    #!/bin/sh
    
    git=`sh /etc/profile; which git`
    build_num=`"$git" rev-list --all |wc -l`
    branch=`"$git" rev-parse --abbrev-ref HEAD`
    commit=`"$git" rev-parse --short HEAD`
    version=`/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${INFOPLIST_FILE}"`
    
    if [ $CONFIGURATION = "Debug" ]; then
      /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build_num-$branch" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
    else
      /usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build_num" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
    fi
    echo "Updated ${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"

    然后在 target级别中,在Build Phases菜单的最后面添加一个shell:

    指定这个shell的文件路径:

    注意,修改的这个Info.plist文件不会影响工程目录下的Info.plist文件,因为修改的是构建目录下的app里面的Info.plist,例如,我这里修改的是 ./Build/Products/Debug-iphonesimulator/yooke.app/Info.plist

    参考:

    整合上面实践的开源项目:

     
     
  • 相关阅读:
    PC-CSS-默认字体样式
    PC--CSS维护
    PC--CSS技巧
    PC--CSS优化
    PC--CSS命名
    PC--CSS常识
    Base64与MIME和UTF-7
    Base64算法与多版本加密技术
    Base64算法与MD5加密原理
    log4j的使用
  • 原文地址:https://www.cnblogs.com/ioriwellings/p/4288897.html
Copyright © 2011-2022 走看看