我正在使用 Firebase 开发 Flutter 移动应用。
我需要单独的 Firebase 环境用于开发和生产。
我关注这个guide进行设置。
问题是当我为 iOS 实现谷歌身份验证时,因为在 Runner must copy REVERSED_CLIENT_ID
from GoogleServices-Info.plist
into Info.plist
file 中.
我不能将这个 REVERSED_CLIENT_ID
硬编码到 Info.plist
中,因为它对于我的开发和生产环境是不同的。
有没有办法在 Info.plist
中指定变量以获得不同环境的正确 REVERSED_CLIENT_ID
?
我正在使用此脚本复制正确的 GoogleServices-Info.plist
:
if [ "${CONFIGURATION}" == "Debug-prod" ] || [ "${CONFIGURATION}" == "Release-prod" ] || [ "${CONFIGURATION}" == "Release" ]; then
cp -r "${PROJECT_DIR}/Runner/Firebase/Prod/GoogleService-Info.plist" "${PROJECT_DIR}/Runner/GoogleService-Info.plist"
echo "Production plist copied"
elif [ "${CONFIGURATION}" == "Debug-dev" ] || [ "${CONFIGURATION}" == "Release-dev" ] || [ "${CONFIGURATION}" == "Debug" ]; then
cp -r "${PROJECT_DIR}/Runner/Firebase/Dev/GoogleService-Info.plist" "${PROJECT_DIR}/Runner/GoogleService-Info.plist"
echo "Development plist copied"
fi
我到处寻找答案,但找不到!因此,我完全被阻止了。
谢谢!
最佳答案
我能够通过创建一个特定于环境的用户定义变量并将该变量拉入 Info.plist 来解决这个问题
我使用本文中的说明设置我的应用程序以连接到两个 firebase 项目(开发和生产): https://medium.com/@animeshjain/build-flavors-in-flutter-android-and-ios-with-different-firebase-projects-per-flavor-27c5c5dac10b
千英尺总结是,您最终会为每个开发人员和产品创建一个 GoogleServices-Info.plist 文件,该文件在构建时被复制到正确的位置。
设置两个 REVERSE_CLIENT_IDS:
- 通过将用户定义的变量添加到 ios/Flutter/Debug.xcconfig 和 ios/Flutter/Release.xcconfig 来创建它。我调用了我的:GOOGLE_SERVICE_REVERSE_CLIENT_ID = {在 GoogleService-Info.plist 文件中找到的 REVERSE_CLIENT_ID}
- 将 Info.plist 中设置的硬编码 REVERSE_CLIENT_ID 替换为 $(GOOGLE_SERVICE_REVERSE_CLIENT_ID)
在 XCode 中打开您的项目并转到用户定义部分并为每个构建类型设置实际环境特定的 REVERSE_CLIENT_ID。目标 > 运行者 > build设置 > 搜索“用户” > 用户定义 > GOOGLE_SERVICES_REVERSE_CLIENT_ID >
Debug-dev = com.googleusercontent.apps.{dev client-id}
Debug-prod = com.googleusercontent.apps.{prod client-id}
Profile-dev = com.googleusercontent.apps.{dev client-id}
Profile-prod = com.googleusercontent.apps.{prod client-id}
Release-dev = com.googleusercontent.apps.{dev client-id}
Release-prod = com.googleusercontent.apps.{prod client-id}
关于ios - 如何避免将 REVERSED_CLIENT_ID 硬编码到 iOS Info.plist 中以进行开发/生产 Google 登录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54493380/