我为我的应用程序定义了不同的构建配置(调试、阶段、生产),并且我使用用户定义build设置:
在 Info.plist
文件中设置 Facebook 登录和其他内容:
在这种情况下,$(USER_DEFINED_SETTINGS)
符号可以工作。
当我尝试设置 Google SignIn 时,这需要使用额外的 .plist
文件 (GoogleService-Info.plist
),并且我以与我在 Info.plist
文件中相同的方式使用 User-Defined 设置,它不起作用。
如何在自定义 .plist
文件中使用 User-Defined 设置?如果我不能,我该如何解决这个问题?
最佳答案
不能在自定义.plist 文件中使用用户定义设置。
但是您可以在构建应用程序时将自定义 .plist 文件复制到正确的位置:
创建一个新文件夹(例如:
Resources/GoogleServiceInfoPlists
)。将构建配置的所有 .plist 文件复制到那里。例如:
GoogleService-Info-Debug.plist
GoogleService-Info-Stage.plist
GoogleService-Info-Prod.plist
添加新的
Run Script Phase
- Xcode:Target-->Build Phases-->“+”按钮(左上角)。使用下面的脚本将给定构建配置的 .plist 文件复制(替换)到项目目录:
cp "${SRCROOT}/${PRODUCT_NAME}/Resources/GoogleServiceInfoPlists/GoogleService-Info-$CONFIGURATION.plist" "${SRCROOT}/${PRODUCT_NAME}/GoogleService-Info.plist"
在输出文件下,您可能还应该输入目标文件,以确保下一阶段仅在文件实际复制后才开始。
"${SRCROOT}/${PRODUCT_NAME}/GoogleService-Info.plist"
重要:将新添加的脚本移动到 之前
Copy Bundle Resources
阶段,否则它将使用默认文件,忽略替换文件。
使用的变量/路径:
${SRCROOT}
- 预定义,它指向您的项目位置。
${PRODUCT_NAME}
- 预定义的产品名称。
$CONFIGURATION
- 预定义,这是您的构建配置。默认情况下,它是:Debug
,Release
。在我的例子中:Debug
、Stage
、Prod
。您可以在 Xcode 中更改构建配置:Project(不是 Target!)-->Info。
注意:
GoogleService-Info.plist
文件必须添加到 Xcode 项目资源(Build Phases-->Copy Bundle Resource),同时Resources/GoogleServiceInfoPlists/GoogleService-Info-*
文件不一定。
如果以上方法不起作用,请尝试单击您的 disired .plist 文件 > 文件检查器 > 目标成员资格 > 检查您的主项目,以便将其捆绑在一起作为最终输出。
关于ios - 在自定义 .plist 文件中使用用户定义的build设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34067120/