如何在我的应用程序中从Xcode获取环境变量

时间:2014-12-03 10:57:56

标签: ios xcode swift

我已经为robbie hanson安装了XcodeColors的Xcode插件。 (见https://github.com/robbiehanson/XcodeColors

如果我在操场上测试它

let dict = NSProcessInfo.processInfo().environment
let env = dict["XcodeColors"] as? String

env 将为“是”。

但是,如果我在我的应用中使用相同的代码, env 将为零,因为该应用正在自己的流程上运行。

因为只有在安装了插件的情况下才打印出带有特定esc序列的彩色文本,我想获取有关Xcode env var的信息。

我该怎么做?

2 个答案:

答案 0 :(得分:12)

修改您的计划 - >选择"运行"部分 - >选择"参数"标签 - >添加环境变量。

注意,如果在没有XCode的情况下运行应用程序,则不会设置环境变量。

答案 1 :(得分:2)

我遇到了与XcodeColors相同的问题。我最终用一个简单的脚本构建阶段来解决它。它检查是否安装了XcodeColors,并为构建中的Info.plist设置/添加密钥。因此,创建一个新的"运行脚本构建阶段"把它放在那里:

xcodeColorsDir="$USER_LIBRARY_DIR/Application Support/Developer/Shared/Xcode/Plugins/XcodeColors.xcplugin/"
xcodeColorsInstalled=0
if [ -d "$xcodeColorsDir" ]; then
    # Directory exists, therefore, XcodeColors is installed
    xcodeColorsInstalled=1
fi

infoPlistPath="${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
existingValue=$(/usr/libexec/PlistBuddy -c "Print :XcodeColorsInstalled" "$infoPlistPath")
if [ -z "$existingValue" ]; then
    # Key already exists so overwrite it
    /usr/libexec/PlistBuddy -c "Add :XcodeColorsInstalled bool $xcodeColorsInstalled" "$infoPlistPath"
else
    # Key doesn't exist yet
    /usr/libexec/PlistBuddy -c "Set :XcodeColorsInstalled $xcodeColorsInstalled" "$infoPlistPath"
fi

然后,您可以在运行时使用以下内容访问Info.plist参数:

func isColorizedLoggingEnabled() -> Bool {
    if let colorizedLoggingEnabled = NSBundle.mainBundle().infoDictionary?["XcodeColorsInstalled"] as? Bool {
        return colorizedLoggingEnabled
    } else {
        return false
    }
}