flutterfire_cli
flutterfire_cli copied to clipboard
ios post build script require flutterfire to be available globally
Description
When running flutterfire configure
(0.3.0-dev.19), post build scripts are added to ios. Those post build scripts require flutterfire to be installed on the machine building the ios application.
This is a problem because the flutterfire installed locally might not be the same version with which configure was run. Currently, for example, I'm using an hard coded version of the flutterfire cli in this github action so the build process can run https://github.com/cedvdb/action-flutter-build-ios/blob/main/action.yml#L54
I'd propose to use flutterfire_cli installed as a dev_dependency instead and fallback to a global one, so everyone, the CI and all developers can use the same version deterministically.
Related:
- https://github.com/invertase/flutterfire_cli/issues/242
- https://github.com/invertase/flutterfire_cli/issues/14
Reasoning
It should be deterministic
Additional context and comments
No response
I noticed this issue today as well and came up with a manual workaround for building my iOS app via Codemagic. First, here's the error I got on codemagic:
/Users/builder/Library/Developer/Xcode/DerivedData/Runner-edaimyiflreloheqntgnhkmwcclv/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner.build/Script-EAEA39BC9122492C49AD1220.sh: line 5: flutterfire: command not found
Command PhaseScriptExecution failed with a nonzero exit code
This (flutterfire: command not found) makes sense because unlike my local dev environment, Codemagic never ran dart pub global activate flutterfire_cli 0.3.0-dev.20 --overwrite
anywhere.
My workround was to manually add dart pub global activate flutterfire_cli 0.3.0-dev.20 --overwrite
to the FlutterFire: flutterfire upload-crashlytics-symbols
script that flutterfire configure
originally created.
I noticed this issue today as well and came up with a manual workaround for building my iOS app via Codemagic. First, here's the error I got on codemagic:
/Users/builder/Library/Developer/Xcode/DerivedData/Runner-edaimyiflreloheqntgnhkmwcclv/Build/Intermediates.noindex/ArchiveIntermediates/Runner/IntermediateBuildFilesPath/Runner.build/Release-iphoneos/Runner.build/Script-EAEA39BC9122492C49AD1220.sh: line 5: flutterfire: command not found Command PhaseScriptExecution failed with a nonzero exit code
This (flutterfire: command not found) makes sense because unlike my local dev environment, Codemagic never ran
dart pub global activate flutterfire_cli 0.3.0-dev.20 --overwrite
anywhere.My workround was to manually add
dart pub global activate flutterfire_cli 0.3.0-dev.20 --overwrite
to theFlutterFire: flutterfire upload-crashlytics-symbols
script thatflutterfire configure
originally created.![]()
Do you need to install firebase tools too? Or upload-crashlytics-symbols doesn't require them?
Do you need to install firebase tools too? Or upload-crashlytics-symbols doesn't require them?
No, flutterfire_cli is enough. I just added pre-build script (in Codemagic):
#!/bin/bash
dart pub global activate flutterfire_cli
Do you need to install firebase tools too? Or upload-crashlytics-symbols doesn't require them?
No, flutterfire_cli is enough. I just added pre-build script (in Codemagic):
#!/bin/bash dart pub global activate flutterfire_cli
Works!!!