xcconfig 中的环境变量不会在 Settings.bundle/Root.plist 中展开

Posted

技术标签:

【中文标题】xcconfig 中的环境变量不会在 Settings.bundle/Root.plist 中展开【英文标题】:Environment variable in xcconfig won't expand in Settings.bundle/Root.plist 【发布时间】:2010-04-14 13:19:56 【问题描述】:

我已经在一个 .xcconfig 文件中定义了我自己的环境变量 (VERSION),并且我的配置基于 http://www.silverchairsolutions.com/blog/2008/03/automating-cocoa-deployments-with-sparkle-and-xcode 中的描述。我的环境变量确实在 Info.plist 中展开,但在我的 Settings.bundle/Root.plist 中没有。 PRODUCT_NAME 已按应有的方式展开。如果我用 PRODUCT_NAME 替换 VERSION,它不会被扩展。为什么不在那里扩展?

Root.plist 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Title</key>
<string>$PRODUCT_NAME</string>
<key>PreferenceSpecifiers</key>
<array>
    <dict>
        <key>DefaultValue</key>
        <string>$VERSION</string>
        <key>Key</key>
        <string>version</string>
        <key>Title</key>
        <string>Version</string>
        <key>Type</key>
        <string>PSTitleValueSpecifier</string>
    </dict>
</array>

【问题讨论】:

【参考方案1】:

我们通过在 .xcconfig 中使用我们自己的设置 APP_PRODUCT_NAME 解决了这个问题,然后在构建配置中将其引用为 PRODUCT_NAME = $APP_PRODUCT_NAME。通过在 plist 中使用 Bundle Name = $APP_PRODUCT_NAME,这似乎可以在包中很好地扩展。

【讨论】:

以上是关于xcconfig 中的环境变量不会在 Settings.bundle/Root.plist 中展开的主要内容,如果未能解决你的问题,请参考以下文章

`xcconfig` 文件中的条件用户定义变量

XCConfig 在 Xcode 重新启动之前不会刷新

Xcode使用xcconfig文件配置环境

如何在jenkins构建时调用sbt环境变量

有没有办法用xcconfig文件本地化应用程序名称?

如何区分 xcconfig 文件中的“Ad Hoc”和“App Store”代码签名身份?