xcode - GoogleService-Info.plist : Copy bundle resources or not

标签 xcode firebase flutter codemagic

我使用 flutter flavors(dev 和 prod)并且我各自的 GoogleServices-Info.plist 文件分别存在于 Firebase/dev Firebase/prod 文件夹中

我使用“构建阶段”脚本在构建时使用以下脚本将文件复制到 Runner/目录

if [ "${CONFIGURATION}" == "Debug-prod" ] || [ "${CONFIGURATION}" == "Release-prod" ] || [ "${CONFIGURATION}" == "Release" ]; then
cp -r "${PROJECT_DIR}/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}/Firebase/dev/GoogleService-Info.plist" "${PROJECT_DIR}/Runner/GoogleService-Info.plist"

echo "Development plist copied"
fi

一切正常,直到我尝试将 CI/CD 与 codemagic 结合使用。

(1) 首先我从 codemagic 构建中得到这个错误(但在本地工作正常)

error: Build input file cannot be found: >'/Users/builder/clone/ios/Runner/GoogleService-Info.plist'

(2) 然后我从 Xcode 目标的“复制包资源”中删除了文件。现在我得到以下错误(本地和 codemagic):

error: Could not get GOOGLE_APP_ID in Google Services file from build environment

为了让构建在本地和 codemagic 中都正常工作,我应该保持什么样的正确设置?

Update: After a bit of pondering, looks like (1) is the correct setting. > GoogleServices-Info.plist should be part of the copy bundle resources. >ADDITIONALLY, Runner/GoogleServices-Info.plist MUST exist before build >starts. So I placed a default plist file in the directory and it worked. >My Build Phases script will override this default plist file to >appropriate file based on the flavor

最佳答案

经过一番琢磨,看起来(1)是正确的设置。 GoogleServices-Info.plist 应该是复制包资源的一部分。

另外,Runner/GoogleServices-Info.plist 必须在构建开始之前存在。所以我在目录中放置了一个默认的 plist 文件并且它起作用了。我的 Build Phases 脚本将覆盖此默认 plist 文件以 >根据风格选择合适的文件

关于xcode - GoogleService-Info.plist : Copy bundle resources or not,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57796294/

相关文章:

ios - iOS 10 上的 “self.refreshControl.endRefreshing()” 刷新动画/旋转轮不会停止/消失

xcode - github 上新创建的分支未显示在 Xcode "switch to branch"选项中

dart - ListView 和其他小部件之间的巨大空间

ios - 如何抑制 "Availability does not match previous declaration"警告

javascript - firebase - Firebase当前用户未存储正确的用户

firebase - 使用 Firebase 匿名身份验证是否允许我确保我的 Firestore 数据和云函数只能由我的应用程序访问?

angular - @firebase/database : Exception was thrown by user callback. 类型错误:无法读取未定义的属性 'myID'

flutter - 如何控制基于父项或子项的调整大小行为?

dart - 更改状态后屏幕不重新渲染

C# OrderBy 和 iOS 给出 JIT 错误