ios - 每个方案的多个 Info.plist 文件之间有一个不同的 key ?

标签 ios xcode plist info.plist xcode-scheme

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

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

基本上我想要的是与现在完全一样的基本 plist,然后是额外的新 -Debug-DistributionRelease 那些,其中只包含这个新 key 。我要避免的是重复所有键,因为这会使将来添加新键变得很麻烦。

这可能吗?

最佳答案

您可以尝试几种不同的方法。

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

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

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

以下是一些可能有帮助的链接:how to make xcode run a script before dependencies? , https://www.objc.io/issues/6-build-tools/build-process/ , Xcode: Running a script before every build that modifies source code directly但您也可以在谷歌上搜索“xcode run script before build”以获得更多链接。

关于ios - 每个方案的多个 Info.plist 文件之间有一个不同的 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29095994/

相关文章:

html - 为什么位置 : fixed, 宽度:100% 元素在 iOS 8 上延伸到视口(viewport)之外

ios - iPhone 启动画面作为一个简短的 mp4 视频 swift ios

iphone - 关于如何实现图像幻灯片/轮播的建议? ( iOS )

ios - 在 iOS 上对用户隐藏注册码

ios - 通过解析将时间戳添加到 MapView 注释?

iphone - Facebook 注销无法通过 Facebook Connect iPhone API 正常工作

iphone - 以编程方式触发 didEndOnExit

ios - Xcode 7 : Autolayout to UICollectionViewCell that are generated programmatically

ios - 如何使用 UITableViews 深入查看 plist?

iOS - 在 Debug模式下连接 Xcode 的后台模式