When user configures multi-environment (e.g development, production, etc) , it breaks de-obfuscation of stack traces on the Firebase console. It works fine when using default Firebase app configuration. Not sure if this is a result of the upload-symbols
script on firebase-ios-sdk's FirebaseCrashlytics pod or an issue on Firebase console.
flutter pub get
in root of project.cd ios
&& xed .
to open Xcode and ensure code signing is setup appropriately for your Apple account.--overwrite
argument).dart pub global activate flutterfire_cli 0.3.0-dev.19 --overwrite
..
to get back to root of project.flutterfire configure --yes --project=[FIREBASE PROJECT NAME] --platforms=ios --ios-build-config=Debug-development --ios-bundle-id=com.example.verygoodcore.crashlytics-symbols.dev --ios-out=ios/development-environment
flutter run --debug --flavor=development --target=lib/main_production.dart
Test Crashlytics reproduction
a couple of times.flutterfire configure --yes --project=[FIREBASE PROJECT NAME] --platforms=ios --ios-build-config=Release-production --ios-bundle-id=com.example.verygoodcore.crashlytics-symbols --ios-out=ios/release-environment
--split-debug-info
argument):flutter build ios --flavor=production --release --obfuscate --split-debug-info=[ABSOLUTE PATH TO A DIRECTORY IN THE PROJECT] --target=lib/main_production.dart --verbose | tee release.logs
The above command will also create a "release.logs" with all the Xcode build logs for viewing. You can see the logs contain output which indicates uploading the symbols was a success.
flutter install --flavor=production --release
This will install the app on your phone. Open it and press the button Test Crashlytics reproduction
to send crash reports (should occur immediately as they are set to "fatal").
Open the Firebase console and see that the dSYMs have been uploaded successfully (You can check the debug symbol ID in the console against the ID that was output in the "release.logs").
The stack traces are not deobfuscated. This is the issue
TXT
version of an obfuscated stack trace from the Firebase console for the com.example.verygoodcore.crashlytics-symbols
app and create a new file in the project, paste into a file called stacktrace.txt
. Now run this command (be sure to update the path specified earlier for "--split-debug-info" argument):flutter symbolize -i stacktrace.txt -d [PATH TO "--split-debug-info" ARG SPECIFIED EARLIER]/app.ios-arm64.symbol]
You will see it successfully de-obfuscate the stack trace.
dart pub global activate --source="path" . --executable="flutterfire" --overwrite
which will now point to the local version of FlutterFire CLI.--split-debug-info
argument):flutter build ios --flavor=production --release --obfuscate --split-debug-info=[ABSOLUTE PATH TO A DIRECTORY IN THE PROJECT] --target=lib/main_production.dart --verbose | tee release.logs
script/upload.dart
.dart script/upload.dart
to replicate what FlutterFire CLI is doing under the hood. You can also check the path variables are correct by rooting to them from your terminal. They all appear to be correct.