Crash Reporting Solution Whitepaper April 2016

Page 1

No More Sad Apps-Every Developer should Know About Light Weight Crash Reporting Solution (Crashlytics Fabric)

Author Name: Rajiv Kumar Email: rajiv.kr.147@gmail.com Date: 26th April 2016

1


NO MORE SAD APPS-EVERY DEVELOPER SHOULD KNOW ABOUT LIGHT WEIGHT CRASH REPORTING SOLUTION (CRASHLYTICS FABRIC) Abstract In the past few years, smartphones have been flooding our world, and many of us have become used to depending on certain apps to get through our day-to-day lives. However, along with an abundance of these mobile apps comes the issue of reliability, and it is not uncommon to experience app crashes. You’ve probably faced it. You download an app, open it and *boom* – there it goes! Crashed. I’ve heard people talk about how mobile app crashes when they open it. There are a ton of reasons things could go wrong and cause the app to crash and can result in users submitting one star rating with negative review comments (which affects your organization's reputation). Crashes can also result in users deleting your app altogether (which affects your organization's profitability). Even if a fix comes some time later the user may not go back to that app. Every mobile user knows that it is extremely frustrating when apps don’t work. Even when an app has plenty of 3 star, 4 star or 5 star reviews, there are always a small number of people that just cannot get the app working the right way. There are a number of reasons for this, one of the reason is the mobile app developers cannot test their app with every product that is available in the market as well and many people run older versions. Additionally, there may be a lot of other apps on your phone, which may also cause conflicts with the app that will not work. As the app vendor, you invested months in designing and developing the app, followed by weeks of testing before submitting the app to the app stores. Reviews had been positive ... until now. The first of what could be many one star reviews are published, discouraging potential users. The worst thing is, no information is available to understand and diagnose the issue. You can try to contact the user to collect data (device model, OS version, app version, stack traces, etc), but there's a chance you can't even contact the user. Concerns such as privacy, a large user base, and other reasons could impede contact. Even if you can contact a few users, they might not know how to reproduce the issue. Obtaining logs and other device information can require a lot of work and possibly technical expertise. The user probably can't provide you with this data. Installing a crash reporting system in your app allows you to obtain all the information you need to be able to fix these annoyances. When it comes to troubleshooting, the more information that is collected — such as the OS version, the device type, and the application version — the more details you have to track down the source of the bug and fix it. That way, you can turn each crash incident into an opportunity to improve your app! Here comes the “Crashlytics Fabric” (Acquired by Twitter), it is one of the lightweight crash reporting solutions. Its feature helps developers to pinpoint the cause and deal with one of the largest bottlenecks in the development lifecycle: the time it takes to resolve unanticipated exceptions.

2


What is Crash Reporting Tool? A crash reporting tool is actually a combination of two components: a reporting library and a server-side collector. You can think of these items in terms of a restaurant: the reporting library is the kitchen and the collector is the waiter. The developer — i.e. you — plays the part the customer. You can have the best organized kitchen in the world, but you’ll never eat anything if there isn’t a waiter to bring food to the table. Likewise, your waiter can provide excellent service, but if the food is not well prepared, your experience will not be a good one! As a great restaurant should include a great kitchen and great waiters, a crash reporting tool should include a great reporting library and a great server-side collector. The role of the reporting library is to prepare the details about a crash. The role of the server-side component is to collect the crash data and present it in a meaningful way.

Crashlytics Fabric Reporting Tool Crashlytics produces a software package that allows developers to collect and analyze data each time their apps crash on Mobile devices.

Powerful Impact The Crashlytics Fabric SDK uses a multi-step symbolication process to provide progressively higher levels of detail. Once a crash report makes it into the system, stack frames are then re-processed against your application's dSYM on their servers.

Lightweight - Negligible impact on your applications The Crashlytics Fabric SDK has no negative impact on your app’s performance. ð Crashlytics Fabric adds less than the size of a single image to the weight of your application. ð Linking of any additional frameworks or libraries is not required. ð When initialized at start-up, Crashlytics Fabric performs the minimal amount of required work and submits the rest until a few seconds after app startup completes. ð It cares the stability of your app and the experience for your users. If for any reason SDK fails, it has no impact on your app or to your users. ð When the device is in airplane mode or experiencing a bad network connection, it will queue the crash reports with no impact on your app's performance and you will get all the crashes.

3


Capture what you need in real time Defensive Reporting Processes that crash often end up sustaining considerable damage before the kernel takes action to terminate them. This can result in secondary crashes, where the crash handling code itself is unable to operate correctly and fails. Crashlytics make files handling code extremely defensive, so parsing cache files can’t crash unexpectedly. Stack Unwinding One of the most abstruse aspects of crash detection is stack unwinding, the seemingly omniscient ability to determine historic code execution that directly lead to the crash. Crashlytics determines the calling instruction that works in the case of objc_msgSend and many other methods that conform to Apple’s iOS ABI (Application Binary Interface - is the interface between two program modules, one of which is often a library or operating system, at the level of machine code). Mach Exceptions Crashlytics capture crashes using the lowest level system available on iOS and OS X. The Mach Exception API makes it possible for it to capture every crash, consistently, and without some of the indeterminate behavior of other mechanisms. This also gives the data that much more closely matches what a developer would see in Xcode. Uncaught Exception Reporting When your app throws an uncaught exception, Crashlytics quickly records the stack trace and state of the device at the time the exception was thrown and sends the crash information to the servers for processing. You get complete visibility for every crash, effortlessly. Caught Exception Reporting Crashlytics isn't just for uncaught exceptions! Adding a single line of code in your catch block will report caught exceptions to Crashlytics for processing, and you are still free to handle the exception however is best for your users. You get the full stack trace and all the same device information that collect for fatal crashes, so you can identify and fix bugs even if your app doesn't crash!

Smart Dashboard and Proactive Alerting: Intelligent Alerts in Real-Time It is more important to get the timely and actionable data. Crashlytics Fabric built a layer of intelligent post-processing to alert you about key events within your app as they happen.

4


Fig: Crashlytics Fabric Dashboard

5


You no need to keep revisiting your dashboard to stay on top of your apps. Its real-time notification system will proactively alert you when key events happen in your app. You’ll get actionable crash reports, performance metrics and the analyses report delivered right to your inbox.

No need to stay glued to your monitor, fabric web dashboard will proactively alert you as crashes happen and intelligently update its notifications on the spot.

Crashlytics Fabric reporting dashboard allows you to classify crashes according to their resolution. You can mark a crash resolved and it’ll never appear again. Mark it unresolved to take care of it later with your developers. Crash reports have lots of details to help you identify and resolve issues, including but not limited to application version, platform, screen resolution, RAM, disk, battery level, operating system and platform.

6


7


Built-in Control Panel for Developers Crashlytics Fabric gives you a complete control panel so you can manage the settings across your account, apps, organizations and notifications. รฐ You can dynamically search all your applications, organizations and team members instantly access their settings. รฐ Adding or removing members from your org are very easy. รฐ You can easily set your preferences on access privileges of team members and can send new invites for all of your apps. รฐ You can see the complete list of application under each organization and instantly turn notifications on/off within the same dashboard.

Notifications -

Crashlytics Fabric dashboard allows you to set and adjust all your preferences in one place. You can manage your notification preferences across crashes, testers activity, performance metrics, and more.

8


Integrated With Top 3rd Party Tools Crashlytics Fabric is integrated with 3rd party popular developer tools such as: - Appaloosa - Asana - Bitbucket - Campfire - ChatWork - Flock - GitHub - GitLab - HipChat - JIRA - Pivotal - Slack - Redmine and many more‌

Smart Account System To building great mobile apps require teamwork, and often with multiple teams of stakeholders. Fabric allows you collaborate with your team, and also work seamlessly with multiple counterparts. Join as many other teams as you would like and assign owners or transfer ownership of teams. If you’re a mobile development company, you can easily relinquish control to your client once your project is completed.

9


For more Information: http://support.crashlytics.com/knowledgebase/articles/349354-how-do-i-manage-permissions-formy-organization http://support.crashlytics.com/knowledgebase/articles/349350-how-do-i-create-a-neworganization http://support.crashlytics.com/knowledgebase/articles/349346-how-do-i-add-a-new-teammember http://support.crashlytics.com/knowledgebase/articles/130381-how-do-i-transfer-my-app-toanother-organization

10


Integrating mobile crash reports is as easy as 1-2-3 Once you have logged into the Crashlytics site, you’ll be prompted to download a Mac application. This application will guide you through the process of configuring your iOS/Android application to work with the Crashlytics service. The application in iOS works like a wizard. It first asks you to pick an Xcode project on your disk. Next, it will install the Crashlytics framework, and finally, it will add a step to the building phase of your project. And you are done!

Data collected from devices Crash error info

• • • •

Device metrics

• • • • • •

Device metrics

• • • • • •

Other device status

• • • •

Error stack Fatal or non-fatal Crash log Running time Current RAM usage Total RAM Current disk usage Total disk Current battery usage Total battery OS and version Manufacturer Device Resolution Application version CPU type Rooted or not Jailbroken or not Online or not Airplane mode or not

11


The Bottom Line In my opinion for the mobile apps development work Crashlytics crash reporting tool is the best. It’s free, with tons of features and a very usable back-end with fully automated reporting process.

References https://get.fabric.io/ https://docs.fabric.io/ http://support.crashlytics.com/ https://twittercommunity.com/c/fabric https://www.raywenderlich.com/33669/overview-of-ios-crash-reporting-tools-part-1 https://en.wikipedia.org/wiki/Application_binary_interface

12


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.