在自定义.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文件复制到正确的位置:
- 创build一个新文件夹(例如: GoogleServiceInfoPlists )。
- 复制每个环境下的所有.plist文件(例如: GoogleService-Info-Debug.plist, GoogleService-Info-Stage.plist和GoogleService-Info-Prod.plist )。
- 添加新的
Run Script Phase
(Xcode: Target-> Build Phases – >“+”button )。 -
使用下面的脚本来复制(replace)给定环境的.plist文件到主目录(在我的情况下是
src
):cp "${SRCROOT}/src/Resources/GoogleServiceInfoPlists/GoogleService-Info-$CONFIGURATION.plist" "${SRCROOT}/src/GoogleService-Info.plist"
${SRCROOT}
– 预定义的,它指向您的项目位置。
$CONFIGURATION
– 预定义,这是你的构buildconfiguration,在我的情况下: Debug
, Stage
, Prod
。 你可以在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文件,正确的名称。