每个方案的多个 Info.plist 文件之间有一个不同的键吗?

Luk*_*uke 5 xcode info.plist plist ios xcode-scheme

我的应用程序Info.plist文件内有大约 20/30 个键。我们正在实现的外部 SDK 需要在 中设置其应用程序密钥Info.plist,但需要单独的密钥用于调试、企业分发和发布方案。

有没有一种方法可以创建条件添加,而Info.plist不必维护文件的三个副本(并复制所有其他键,这些键在所有目标中都是相同的)?

基本上我想要的是plist与现在完全相同的基础,然后是额外的 new-Debug和,其中只包含这个新密钥。我试图避免重复所有键,因为这将使将来添加新键变得很麻烦。-DistributionRelease

这可能吗?

xde*_*eon 1

您可以尝试一些不同的事情。

\n\n

在应用程序构建之前执行的 Xcode 运行脚本\n这是在构建之前自动执行的脚本。假设这 3 个重复的 plist 文件分别称为 InfoA.plist、InfoB.plist 和 InfoC.plist,它们都是完全相同的。当您构建项目时,InfoA.plist 的内容将复制到 InfoB.plist 和 InfoC.plist。这需要一些编写 shell 脚本的知识才能做到这一点,但该脚本相当简单。

\n\n

您可以复制并重命名脚本中的文件。或者您可以使用命令行工具将主文件的内容复制到重复文件。可用于修改 plist 文件内容的两个命令行实用程序是 plutil 和https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man8/PlistBuddy.8.html。这些链接可能会有所帮助:将文件从脚本添加到 Xcode 项目?,

\n\n

修改方案并添加预操作\n您的方案还允许您向构建添加预操作,您可以执行与上面相同的操作,但将其配置为预操作而不是构建阶段脚本。

\n\n

以下是一些可能有帮助的链接:how to make xcode run a script before dependency? https://www.objc.io/issues/6-build-tools/build-process/,Xcode在每次构建之前运行一个直接修改源代码的脚本,但您也可以通过谷歌搜索 \xe2\x80\x9cxcode run build\xe2\x80\x9d 之前的脚本以获取更多链接。

\n