在自定义.plist文件中使用用户定义的构build设置

我为我的应用程序定义了不同的构buildconfiguration(Debug,Stage,Prod),并使用用户定义的构build设置:

在这里输入图像说明

Info.plist文件中设置Facebooklogin和其他东西:

在这里输入图像说明

在这种情况下, $(USER_DEFINED_SETTINGS)表示法可以工作。

当我尝试设置Google SignIn时 ,需要使用额外的.plist文件( GoogleService-Info.plist ),并且我使用了我在Info.plist文件中所做的相同方式使用User-Defined设置,但它不起作用。

如何在自定义.plist文件中使用用户定义的设置? 如果我不能,我该如何解决这个问题?

自定义 .plist文件中使用用户定义的设置是不可能的,所以您必须以其他方式处理。

虽然,您可以将您的自定义.plist文件复制到正确的位置:

  1. 创build一个新文件夹(例如: GoogleServiceInfoPlists )。
  2. 复制每个环境下的所有.plist文件(例如: GoogleService-Info-Debug.plist, GoogleService-Info-Stage.plistGoogleService-Info-Prod.plist )。
  3. 添加新的Run Script Phase (Xcode: Target-> Build Phases – >“+”button )。
  4. 使用下面的脚本来复制(replace)给定环境的.plist文件到主目录(在我的情况下是src ):

     cp "${SRCROOT}/src/Resources/GoogleServiceInfoPlists/GoogleService-Info-$CONFIGURATION.plist" "${SRCROOT}/src/GoogleService-Info.plist" 

${SRCROOT} – 预定义的,它指向您的项目位置。

$CONFIGURATION – 预定义,这是你的构buildconfiguration,在我的情况下: DebugStageProd 。 你可以在Xcode中改变它: Project (not target!) – > Info

请注意, src/GoogleService-Info.plist文件必须添加到Xcode项目( Build Phases-> Copy Bundle Resource s),而/src/Resources/GoogleServiceInfoPlists/GoogleService-Info-* Info- /src/Resources/GoogleServiceInfoPlists/GoogleService-Info-*文件不是必需的。

我把(同名) GoogleService-Info.plist的两个文件放到我的项目中。

在这里输入图像说明

一个在根目录下,另一个在一个名为“staging”的文件夹中,以避免文件系统中的命名冲突。

每个只包含一个项目中的plist

包括一个目标和另一个目标,使每个目标有一个唯一的plist文件,正确的名称。