将多个info.plist文件与单个目标相关联

时间:2013-12-17 14:44:33

标签: ios xcode info.plist

在我的iOS项目中,我创建了一个单独的plist文件,其中包含所有社交共享密钥和appIds等的值。

如何在项目/目标设置中指定此新plist文件是默认info.plist文件的扩展名? 我可以在主info.plist文件中创建指向新链接的链接吗?

某些第三方库试图在项目info.plist文件中查找键值,因此我没有选择在引用点指定新的plist文件。

我只能在Build Settings>中指定一个文件。包装>的Info.plist

3 个答案:

答案 0 :(得分:3)

据我所知,你无法链接两个plist文件。每个目标配置只能设置一个plist。

也许,按照配置分离plist文件就是你要找的东西。 要执行此操作,请转到构建设置>包装> Info.plist文件,展开它并为指定的配置设置不同的plist文件路径(默认情况下有2种配置:Debug和Release)。

答案 1 :(得分:3)

正如@pjanecze所提到的,您可以通过在构建阶段编写脚本来获得所需内容。例如:

if [ $CONFIGURATION != 'Debug' ]; then
    build_hash=`git log -1 --format="%h"`
    /usr/libexec/PlistBuddy -c "Set :git_sha ${build_hash}" MyInfo.plist
    /usr/libexec/PlistBuddy -c "delete :foobar" MyInfo.plist
fi

您可以通过PlistBuddy访问该手册页来访问有关如何使用man PlistBuddy的更多信息。

答案 2 :(得分:2)

据我所知,只有一个Info.plist文件,如上所述在Build Settings下指定。

但是,有一种方法可以管理“扩展”plist文件,这取决于应用程序通过- (NSDictionary *)infoDictionary方法访问info.plist文件的事实。即,你可以:

  • swizzle infoDictionary使用您自己的实现进行默认实现;

  • infoDictionary实现中,您将调用原始实现,然后通过阅读“扩展”plist文件条目来扩展返回的NSDictionary

您甚至可以定义自己的特殊密钥,例如,kExtensionPlistFile将在Info.plist中用于指向“扩展”plist文件。