GoogleService-Info.plist : 是不是复制捆绑资源

Posted

技术标签:

【中文标题】GoogleService-Info.plist : 是不是复制捆绑资源【英文标题】:GoogleService-Info.plist : Copy bundle resources or notGoogleService-Info.plist : 是否复制捆绑资源 【发布时间】:2020-01-07 19:31:47 【问题描述】:

我使用 Flutter 风格(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 build 中得到了这个错误(但在本地运行良好)

错误:找不到构建输入文件:>'/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 中都能正常工作,我应该保持什么正确设置?

更新:经过一番琢磨,看来(1)是正确的设置。 > GoogleServices-Info.plist 应该是复制捆绑资源的一部分。 >此外,Runner/GoogleServices-Info.plist 必须在 build >starts 之前存在。所以我在目录中放置了一个默认的 plist 文件,它可以工作。 >我的构建阶段脚本将覆盖这个默认的 plist 文件以 >基于风格的适当文件

【问题讨论】:

您是否在“构建”步骤的“构建参数”部分指定了风格?例如--flavor prod -t ./lib/main.dart 是的,我正在指定。构建在 (1) 本地运行正常 【参考方案1】:

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

另外,Runner/GoogleServices-Info.plist 必须在构建开始之前存在。所以我在目录中放置了一个默认的 plist 文件,它可以工作。我的 Build Phases 脚本会将此默认 plist 文件覆盖为>基于风格的适当文件

【讨论】:

以上是关于GoogleService-Info.plist : 是不是复制捆绑资源的主要内容,如果未能解决你的问题,请参考以下文章

Firebase:Xcode 找不到配置文件:“GoogleService-Info.plist”

GoogleService-info.plist 存储在 ios 应用程序的啥位置?

在不使用 GoogleService-Info.plist 的情况下使用适用于 iOS 的 Google 服务

在单个 XCode 项目中使用两个 GoogleService-Info.plist

Xcode 项目浏览器未显示“GoogleService-Info.plist”,即使它位于目录中

在 Ionic 项目中手动将 GoogleService-Info.plist 复制到哪里?