Jira Mobile Connect includes a number of very cool features, such as the ability for users to attach annotated screenshots/
Previously if you wanted a free/open-source crash reporting framework for iOS your options were basically limited to QuincyKit, which is a serviceable but basic solution. Sadly, the backing architecture used by the QuincyKit server is not well designed and scales very poorly with the number of crash reports in the system.
Once you have around 5,000 you’ll notice the server slowing down significantly, and go much beyond 10,000 that and the system grinds to an unusable halt. With a day or so of database and code refactoring, these scalability issues can be resolved, creating a system performant enough to track millions of error logs or more. But that’s a subject for another time.
The point for today is that despite its basic level of functionality and flawed server architecture, there are a few key areas in which QuincyKit blows the default implementation of Jira Mobile Connect out of the water:
-Automatic grouping of crash reports.
-Automatic symbolication of error logs.
If you have any experience whatsoever with supporting multiple high-volume iOS applications you will instantly realize that these are features that you want. They might even be features that you want more than annotated screenshots, audio feedback, user chat, or seamless integration with Jira and all the awesomeness that Jira brings. In short, Jira Mobile Connect’s lack of support for these two key features may cause serious developers to pass it over in favor of other solutions.
Without grouping every single crash will be creating a new ticket in Jira that you need to track and resolve. Multiple instances of the same crash will have to be manually flagged as duplicates within Jira. And without symbolication trying to actually map back from an error log to the line of code that caused it is an exercise in futility, or at best, tedium.
In any case, rather than abandon the excellent potential shown by Jira Mobile Connect I decided that instead I would attempt to patch it up and add the missing features myself. It’s all open-source code, after-all, and if the tangled mess of PHP that is QuincyKit server can provide these features then they can’t be that difficult to implement. Unfortunately I had to change too many files in too many different places to show the code here, but if you want the short version of it I was able to implement both grouping and symbolication, and you’re welcome to view the complete diffs on bitbucket:
One interesting side-effect of adding groups was that it became possible for multiple client UID’s to be associated with a single Jira ticket. This had an important implication for feedback notifications/
There is one caveat with my server implementation, in that it assumes the existence of the ‘symbolicatecrash‘
Also note that the native iOS code has been restructured to build a universal iOS framework as opposed to an architecture-
When using the iOS framework, be aware that you will need to set the ‘-all_load‘
Regardless, if you do a lot of iOS development and are already using Jira (like you should be) then I encourage you to check this out. This is the Jira Mobile Connect plugin, now with automatic grouping and error log symbolication.
# # #
iApps, a member of the Apple Developer community, is an Australian based company specializing in the design of applications for the Apple iPad, iPhone, iPod touch and other Mobile Device technologies.
We provide software design and development services for iPhone, Mobile, Mac and the Web. And the iPad, naturally.
Our customers include individual consumers, corporate, SME's and industry clients. Our teams of innovative and experienced industry professionals combine their technical skills with their innate ability to 'think outside the square' to deliver high quality, effective and user-friendly applications.
iApps work in partnership with recognized leading industry experts to develop software that meets the needs of the business and achieve greater profits by increasing the productivity and efficiency of employees, whilst reducing costs.
For more information, please visit http://www.iapps.net.au/