After Fabric IO upgrade, what did I experience in Jenkins build server?

And .. What did I learn about this process?

Upgrading Crashlytics to Fabric IO framework, is not very painful at all, unless you don’t use Jenkins build server for your build. In automated builds, I did stuck in situation like dSYM files weren’t uploaded automatically in every build.

So what are dSYM files ?

dSYM files store the debug symbols for your app. Services like Crashlytics uses these files to replace the symbols in the crash logs with the appropriate methods names, so it will be readable and will make sense.

In case of your users experience a crash, Crashlytics uses this file to point to the exact code line of your application source, which causes that crash.

What should you do to upgrade your Crashltyisc SDK to Fabric IO?

Well, Upgrading Crashltyics to Fabric IO is very easy. All you have to do is follow this steps.

  1. Go to Fabric IO’s upgrade page.
  2. Delete Crashltyics app, which you’ve previously used on your Mac.
  3. Download Fabric IO’s new app and install on your Mac.
  4. Open project that you want to upgrade in Xcode.
  5. In Fabric IO app you can use + New App button, to make a fresh clean start. Don’t worry, it will not erase crashs of your previous builds.
  6. After then, Fabric IO will guide you for further steps.

If you stuck in Running Process …

Check your 3 main things that;

  1. Your info.plist have Fabric entry.(If you don’t have Fabric entry in your info.plist, even if your application runs, it will crash in didfinishlaunch method.)
  2. Your run script doesn’t have special build macros (ifs and elses)

If Fabric.app is stuck on the build step, make sure you don’t have conditional logic for debug builds around your Run Script Build Phase or Crashlytics initialization code.

3. Check your didfinishlaunch method implementation is correct.

[Fabric with:@[[Crashlytics class]]];

If you stuck in Crash Reporting …

It’s probably about dSYM file of your application or application’s build settings.

Go to your applications Build Settings and check DEBUG_INFORMATION_FORMAT  it should be dSYM with DWARF.

sCFF9

Go to Build Phase and check Run scipt key is right and as below:

./Fabric.framework/run <FABRIC API KEY> <FABRIC API SECRET>

Also, check application delegate method –didFinishLaunchWithOptions implementation. You should use following bold lines also.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    ....
    [Crashlytics startWithAPIKey:@"YourAPIKey"];
    [Fabric with:@[[Crashlytics class]]];
    return YES;
}

In my crashltycs experience, everything was OK and went quick in my Mac. But I faced some problems in automated versions. Although, Jenkins build server created dSYM file while application build process, I guess, automatic upload failed with some reason. Builds was successful and crashes reached at Fabric side. Because I can see crash numbers exactly in every version as below (at Launch Status of application’s Crashlytics dashboard):

crashltyics

 

Although, numbers are exactly what I expect, I couldn’t see those crashes in issue list as detailed. After I spoke crashlytcs guys, they said me to upload dSYM file manually. It worked! with some little problem, I had to upload dSYM files for all builds. Otherwise, you will not see newest version’s crashes.

Other Tips

For any further information, Check this stackoverflow answer.

Crashltyics guys are very helpful. Ask them help.

Any further questions, you can also read Fabric IO’s migration guide page.

Wish you and your app a high crash-free users rate ! 🙂

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s