Crashlytics DSYM upload issue

Hi @viktorbenei,

I have added the latest Fabric.framework manually as we are not using cocoapods and they dont have a Carthage based implementation.

Thank you,
Mukund

Is it committed into the repo?

Yes, it is committed and we can see that Bitrise steps are generating the DSYMs.

Perfect!

Can you please try to run the ./Pods/Fabric/upload-symbols command from a Script step? See e.g. Unable to upload symbols (macOS High Sierra) Ā· Issue #9840 Ā· fastlane/fastlane Ā· GitHub - When running upload-symbols directly I am getting the following error message:

./Pods/Fabric/upload-symbols -a xxxx -p ios /Users/chris/Development/TheApp/TheApp/The App.app.dSYM.zip

Also, can you please copy paste a related bitrise.io buildā€™s URL?

Hi @viktorbenei,

I added the script step but it failed when I used the pods command.
I then changed the ā€œPodsā€ to ā€œFabric.frameworkā€ as we are not using Cocoapods and it still failed with:

"/var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/bitrise697172187/step_src/._script_cont: line 8: ./Fabric.framework/upload-symbols: No such file or directory"

The existing step ā€œfabric-crashlytics-beta-deployā€ is using the following path:

Submitting DSYM...
  /var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T/bitrise697172187/step_src/Fabric/upload-symbols -a "03313f28417cd1cd3595b819fd900244f0279465" -p ios "/Users/vagrant/deploy/NinjaAppEnterprise.dSYM.zip"

This uploads the DSYMs with the following warning:

2018-01-18 07:15:32.550 upload-symbols[9506:35342] Successfully submitted symbols for architecture arm64 with UUID 72f3b285570033cbb1d8f0ae5dd6751b in dSYM: /var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T///Users/vagrant/deploy/NinjaAppEnterprise.dSYM.zip.unzipped/__dsyms__121541944/72F3B285-5700-33CB-B1D8-F0AE5DD6751B.dSYM
warning: skipping Apple dSYM: /var/folders/90/5stft2v13fb_m_gv3c8x9nwc0000gn/T///Users/vagrant/deploy/NinjaAppEnterprise.dSYM.zip.unzipped/__dsyms__121541944/032500CD-693D-3842-8CF7-4857DACE9C5C.dSYM
w

Is this warning expected?
Also, is the fabric-crashlytics-beta-deploy step using upload-symbols script from the framework I checked in or is it using its own version of the script?
If itā€™s the later, is it possible that the fabric-crashlytics-beta-deploy step is outdated?

Build page: https://www.bitrise.io/build/b188ad1ae3402567

Thank you,
Mukund

It uses its own, the one in the Stepā€™s repo.

Thatā€™s exactly what I suspect to be the case here.

Can you please check the content of the framework (right click ā†’ show content, or similar) on your Mac and see where the upload-symbols is, and try to run the script with that again?

Hi @viktorbenei,

I spent some time looking for upload-symbols script inside the checked in frameworks. Apparently, its not part of the iOS frameworks instead they have another script called uploadDSYMs.
Itā€™s part of the MacOS app. I extracted it out and checked it in with my project and added a script step with the following command:

./FabricMacApp/upload-symbols -a "$FABRIC_API_KEY" -p ios "$BITRISE_DSYM_PATH"

The step did run and uploaded the DSYMs but, Fabric is still unable to decode the crash.
If I run the same upload-sumbols script locally on my machine then Fabric is able to decode the crash.

This means that the DSYMs being generated via the Bitrise route are not right and hence we see the

warning: skipping Apple dSYM:

during DSYMs upload.

I checked the project settings and the highest selectable stack in Bitrise is

Xcode 9.2.x (including betas), installed on macOS 10.12 (Sierra).

All of our machines in our office are on macOS 10.13.2 (High Sierra) running Xcode 9.2 (9C40b).

Could this be causing the incorrect DSYM generation on Bitrise?

Thank you,
Mukund

I guess thereā€™s a chance, but Iā€™d be surprised if OS version would be the issue.

Did you try to run that script on your Mac and see if the warning is present there?

Hi @viktorbenei,

When I run the script on my Mac, I donā€™t see the warning lines.
I checked the upload-symbols command and they are exactly the same i.e. no further debug argument being sent.

I was checking all the workflow steps and this one:

https://github.com/bitrise-io/steps-xcode-archive/releases

is the one which has been updated frequenty. I am just guessing but may be the new updates in step is causing the DSYM variation.

Do you think that could be the case considering OS version is less likely?

Thank you,
Mukund

Quite unlikely, as that Step (the Xcode Archive one) does not perform any transformation / modification, neither on the code nor on the ipa; all it does is it runs Xcode (xcodebuild) with the params appropriate for its input (Scheme, project file, etc.).


You say thereā€™s no warning if you run the upload from your Mac - thatā€™s a good lead!

Could you please download the dSYM from bitrise.io, from the buildā€™s page, and try to upload that from your Mac? Just to see what happens with the exact same dSYM.

Hi @viktorbenei,

Thanks for the explanation.
I downloaded the Bitrise generated DSYMs and uploaded them via the local script and I do see the same warning.

warning: skipping Apple dSYM: /var/folders/s6/8fb6jx9s6vd7jblm4sd8dhsm0000gp/T//Archive.zip.unzipped/C59C6DE1-A843-30F6-9FDD-21DBA994A038.dSYM
2018-01-19 14:38:44.455 upload-symbols[11935:396348] Successfully submitted symbols for architecture arm64 with UUID 2aabb75482c63ca1bcab03fa1b22a499 in dSYM: /var/folders/s6/8fb6jx9s6vd7jblm4sd8dhsm0000gp/T//Archive.zip.unzipped/NinjaTracking.framework.dSYM

When Xcode generates DSYMs on my machine, I end up with one DSYM per library.
The one generated by Bitrise step seems to be way more than that. And the additional ones seemed to be named with a UUID.
Do I need to change some setting to clean up the DSYM folder?

Thank you,
Mukund

Thatā€™s a good lead, so itā€™s the dSYM itself!

How do you generate the dSYM on your own Mac?

Also, can you please link a related bitrise.io buildā€™s URL? Iā€™d check its logs to see if I can spot something, if thatā€™s possible.

Hi @viktorbenei,

On Mac they are generated when I run the app under the same build scheme.

Please see below link to a related build: https://www.bitrise.io/build/f90998f03363a4bd

Thank you,
Mukund

1 Like

Are you sure that you Archived the same config? Same project file & same Scheme on your Mac?

Did you try to run the build locally with the Bitrise CLI ( How to experiment with Bitrise configs locally, on your Mac/Linux )? If you did not, can you please try to run it?

Hi @viktorbenei

Sorry, for the delay in response.
When running Bitrise CLI locally what is the correct way to make the code signing files available?
I tried downloading the *.mobileprovision and the *.p12 files and placing them in the same directory as the bitrise.yml but, still ran into the following error:

2018-02-07 17:57:04 +0000 [MT] Step failed: <IDEDistributionSigningAssetsStep: 0x7ff55ea76ba0>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed." UserInfo={NSLocalizedDescription=Locating signing assets failed., IDEDistributionSigningAssetStepUnderlyingErrors=(

Thank you,
Mukund

In general, as those files are already on your Mac, the related step(s) can safely be ignored/skipped. In fact the Certificate and Prov Profile installer step for example is configured to only run in ā€œCIā€ mode / in a CI environment and should be auto-skipped on your Mac.

Are you sure that you have the right signing files installed on your Mac? Can you archive the project in that directory from Xcode?

Iā€™d suggest you to simply double click those files, to install them in macOS, then it doesnā€™t matter where those files are, Xcode will be able to use them :slight_smile:

Could you develop a step that automates that - fetching of the App Store generated dSYM file? So then we can add a dSYM upload step after that.

Hi @moodagent, feel free to submit a #feature-request for that!

Hereā€™s the corresponding feature request, upvote pls!: