Flutter构建iOS IPA:uat环境找不到GoogleService-Info.plist文件
问题原因排查与解决办法
1. 文件版本控制与路径大小写问题
- CI环境(如GitHub Actions Runner)是大小写敏感的,而Xcode默认不区分。检查复制脚本里的文件路径,比如
uat目录名、GoogleService-Info.plist文件名的大小写是否和仓库里的实际文件完全一致,避免因大小写不匹配导致找不到文件。 - 确认UAT环境的
GoogleService-Info.plist已经提交到Git仓库。本地执行git ls-files flavors/ios/Runner/Firebase/uat/GoogleService-Info.plist,如果无输出,说明文件被.gitignore排除或未提交,需要执行git add和git commit将其加入版本控制。
2. 构建脚本的执行时机与逻辑验证
- 检查脚本在Xcode Build Phases中的执行顺序:必须把复制脚本拖到Compile Sources阶段之前,否则编译代码时文件还未被复制,会触发找不到文件的错误。
- 验证脚本的Configuration判断逻辑:脚本中是否正确使用
${CONFIGURATION}变量匹配UAT环境?比如脚本里是否写了类似if [ "${CONFIGURATION}" = "UAT" ]; then ...的判断?可以在脚本开头添加echo "当前构建Configuration: ${CONFIGURATION}",查看CI日志输出,确认环境识别是否正确。 - 检查脚本的目标路径:确认脚本是将文件复制到Xcode项目实际引用的位置(比如
$(SRCROOT)/Runner/GoogleService-Info.plist),避免目标路径错误导致编译时无法读取。
3. CI环境工作目录与缓存问题
- 在CI构建步骤中添加目录检查命令:比如
pwd && ls -la flavors/ios/Runner/Firebase/uat/,查看CI工作目录下该路径是否存在文件,确认文件是否被正确拉取到runner环境。 - 清理CI缓存:构建前执行
flutter clean或xcodebuild clean,避免旧缓存导致的文件引用异常。
4. Xcode项目配置检查
- 确认UAT Scheme对应的Configuration是否正确关联了包含复制脚本的Target:在Xcode中编辑UAT Scheme,检查
Build阶段是否勾选了对应的Target,确保脚本会在UAT构建时执行。 - 检查Xcode中
GoogleService-Info.plist的引用设置:将文件的Location设置为Relative to Project,避免本地相对路径在CI环境中失效。
内容的提问来源于stack exchange,提问作者stacktrace2234
相关产品推荐
相关产品推荐

