📜 ⬆️ ⬇️

Mobile App Distribution Services for iOS. Part 4 (final): Fabric (Crashlytics)

Introduction


The fourth part of the review will be devoted to the Fabric service (the first part of the review , the second part of the review , the third part of the review ).

A fairly well-known service Crashlytics since the fall of 2014 is part of Fabric - a set of specialized SDKs (or, as stated on the official website, “modular, cross-platform mobile development suite”), each of which can be integrated separately or together. In my review, I will focus only on the Crashlytics Kit - service and SDK, responsible for the distribution of mobile applications.

Evaluation system: services are evaluated on a 10-point scale for each of the sections (Registration and Integration, Main Functionality, Additional Functionality, Continuous Integration). The total score will determine the winner.

Fabric


Registration and Integration


')
Registration in the service is based on the declarative principle - anyone who wants to create a new account can leave a request, which, based on our experience, will be considered as soon as possible (not so long ago, our employee’s application was approved within an hour). In addition, the SDK Fabric integration is quick and easy. No other distribution service provides such a convenient step-by-step integration wizard. It is better to go through this process independently, a rare case when routine work, as a rule, is enjoyable and is performed with interest.










Rating: 9/10.

Main functionality


Note (updated June 15, 2015): speaking of the distribution of iOS applications, you need to remember that at the moment all services except Apple's TestFlight still have to take into account the limit on the number of devices available using AdHoc provisional profiles. Consequently, the maximum of the devices used is 100 for each family of devices (this condition was changed on June 8, 2015, after announcing at WWDC that all developers programs are combined into one), which also includes devices used directly by developers. The biggest limitation is that the list of registered devices can be “zeroed out” only once a year, after the subscription to the iOS Developer Program is renewed (it is possible later that this condition will be changed).

In terms of the core functionality, Fabric is conceptually different from all the other services considered. So, for example, adding a new project (“applications” in the terminology of Fabric) is carried out not on the website of the service, but in the desktop client:



Adding new users / testers is possible both with the help of the client application and on the website of the service. In the first case, it is possible to add a tester without including him in any group:



In the second case, you must select an existing group or create a new one, where all new team members will be added:

Note: The service provides the ability to import a list of testers from an old version of TestFlight: dev.twitter.com/crashlytics/beta-distribution/testflight-migration . But this functionality will be useful if you have taken care of exporting the list in advance, since the old version of TestFlight has been unavailable since March 2015.

Importing a list of testers is possible from a CSV file, its format should be as follows:
First name,Last name,E-mail 


Subsequent steps are the same as other services: invitation letter, device registration, installation of a test application.



Installing previous versions of the application is very simple; under the button for installing the latest version there is a list of all versions available to a particular user:



Rating: 9/10.

Additional functionality


In the previous parts of the review, we have already considered several options for implementing additional functionality that helps speed up the process of developing and correcting errors.

Let's see what Fabric offers.

The first is the symbolization of reports about the fall of the application. And it is obvious even from the original name of the service: Crashlytics.

SDK developers are making efforts to collect and process reports that work like hours and with maximum efficiency. Without bothering to retell, I will simply quote the list from the official site:


More information can be obtained here and from the press release to the 3rd version of the SDK .

After sending the report from the device to the Fabric server (this happens after restarting the “fallen” application), the service sends email notifications and also displays an alert on computers with an installed client:

As a drawback, it can be noted that in the second case, there is no possibility of launching Xcode with the desired project, class and selected line of code (as was done in the HockeyApp client).

It is also possible to configure integration with trackers and other services, after which notifications will be transmitted there. A big plus is the ability to connect multiple services at once. A disadvantage is the scarcity of reference information related to this functionality.



Note: in the test project, integration with Bitbucket and Hipchat was configured. As a result, messages about new drops came only in Hipchat, new tickets in Bitbucket were not created.

Fabric provides an opportunity to increase the usefulness of reports related to the fall of information with the help of three additional tools:

Custom keys: The framework provides special methods that allow you to save the values ​​of variables that are critical for later analysis.

 + (void)setObjectValue:(id)value forKey:(NSString *)key; + (void)setIntValue:(int)value forKey:(NSString *)key; + (void)setBoolValue:(BOOL)value forKey:(NSString *)key; + (void)setFloatValue:(float)value forKey:(NSString *)key; 


Note: the maximum number of variables is 64. Details can be found here .

Custom logging: using the “CLS_LOG” macro allows you to write service messages to the device log, but unlike the standard NSLog, when using this macro, the log will be attached to the crash report ( for more information ).

Note: the entire log is saved in the report since the launch of the application. It is possible to search the log using regular expressions.

User information: it is also possible to identify the application user (ID, name and email address - for more information ). When using, Apple's privacy policy must be considered.

Answers , the analytics service that became part of Fabric in the summer of 2014, is a good addition to the fall reporting service. It allows you to get real-time information about the use of the application (both “instant” indicators and summary / statistical data are displayed):

The service tries to give a positive, for example sending such letters:

No additional actions are required for use, provided the Fabric SDK is integrated, all information will be collected automatically. More information about the service can be found here .

Rating: 8/10.

Continuous integration


Note: The following nuances of using services as part of continuous integration (continuous integration) in this review imply that it will be made on the basis of the solution proposed by Apple. That is, with the help of Mac OS X Server and Xcode bots - in detail on the organization of such integration, I will not stop, perhaps this will be the topic for a separate article. Those interested can familiarize themselves with the topic, for example, by referring to Apple’s official guide .

To use the application’s download API, you need to get API_KEY and BUILD_SECRE. You can find them on the page “Settings -> Organizations -> page with detailed information for a specific organization -> hidden fields under the name of the organization”:



Downloading is carried out using a special utility, which is included in the framework, an example of use:

 /path/to/Crashlytics.framework/submit <API_KEY> <BUILD_SECRET> -ipaPath /path/to/my.ipa -emails TestEmail@crashlytics.com,AmazingTester@twitter.com -notesPath ~/Notes/ReleaseNotes.txt -groupAliases GroupAlias,GroupAlias2 


Note: emails, notesPath and groupAliases are optional parameters.

Full list of parameters:

  -emails list of individual addresses (comma-separated)-groupAliases list of group aliases from web dashboard (comma-separated) -notesPath absolute path to .txt file -notifications enables/disables email notification to testers (YES|NO) 


Reference page on the official website: http://support.crashlytics.com

Rating: 8/10.

Total cumulative score in all sections: 34 points.

Conclusion


In my review, I tried to consider the pros and cons of the four distribution services for mobile applications for iOS, as well as evaluate them. I admit, initially it seemed to me that the winner is obvious, but in the end, after a more thorough study, everything is not so simple.

According to the formal criteria for the total assessment, the services were distributed as follows:

  1. Fabric - 34 points.
  2. HockeyApp - 33 points.
  3. Ubertesters - 32 points.
  4. Testflight - 15 points.


In the first place, Fabric, the biggest advantages of this service are free of charge, high efficiency in the collection and processing of reports of falls. Among the shortcomings, some focus on developers * and the lack of a built-in system for collecting feedback can be noted.

* Here I mean the narrow specialization of the service: if any member of the team is not a developer, then no other additional functionality is available to him in the application (except what is required from the application for specification). And if the application works without crashes, it will be necessary to use some other service to provide feedback.

The second and third place in HockeyApp and Ubertesters - the difference in estimates of only 1 point.

The advantages of HockeyApp are support for the symbolization of crash reports and closer, in comparison with other services, integration with Xcode (opening a project / class on the line that caused the application to crash). Among the shortcomings can be noted the absence of a normal free tariff plan and the limitations of the existing system for collecting feedback.

Ubertesters at the moment looks the most interesting from the point of view of future prospects, service. A developed system of collecting feedback and tracking system testers actions allows you to solve a specific range of tasks with maximum efficiency. The lack of built-in support for symbolizing crash reports at the moment is a disadvantage, but I believe that with further development it will be eliminated. The presence of a free tariff plan with access to all the basic functionality is also a big advantage of the service.

TestFlight , which occupies the last place, looks like an outsider, but I think that this is a temporary situation and with the further development of both the service and the entire eco-development system from Apple, it may well press the current leaders, the latest news from WWDC 2015 inspires some optimism .

I hope that the series of reviews turned out to be useful and was able to someone with the choice of a suitable service to distribute their application. I will be glad to answer additional questions.

Source: https://habr.com/ru/post/260019/


All Articles