HockeyApp from Microsoft

HockeySDK 2.0 Release for OS X

2013-11-26

We are excited to announce the release of HockeySDK 2.0 for OS X! This major release provides the following improvements for using HockeyApp in your Mac apps:

Crash Reporting

HockeySDK for OS X comes with a massively improved PLCrashReporter, which is made possible through metadata that is added by Apple's compiler toolchain to each binary. It can be used to perform perfect backtraces – whether you've crashed in objc_msgSend, inside of a C++ function, or even inside of a custom assembly trampoline.

PLCrashReporter can access this metadata through both DWARF unwind data and Apple's compact unwind encoding. The compact unwind encoding provides a strict subset of the DWARF unwinding data, while consuming considerably less space, at the cost of only being able to represent a subset of the standard well-defined methods for unwinding a single frame. The DWARF format and implementation, on the other hand, is considerably more complex – it even includes a full, turing complete opcode interpreter that may be used during the unwinding process to express the location and steps to retrieve register values. The DWARF data can be used to express even the most complex and bizzare unwinding steps for a hand-written function.

As far as we're aware, HockeySDK with PLCrashReporter is the only crash reporting solution to provide full support for all three approaches: Compact and DWARF unwinding if the meta information are available, and the stack-based unwinding that was used in the previous version of HockeySDK.

This new version of PLCrashReporter is also included in the current release of HockeySDK for iOS!

Code Signing

The new SDK is now code signed out of the box, so if you are distributing beta versions of your apps or through your own store, there is no need to sign our framework again.

If you are targeting the Mac App Store, it is still required to sign every framework with your own signature. But since we integrated PLCrashReporter right into our framework, this is now easier than ever. Since Mavericks introduced some new behavior on code signing, we strongly recommend reading Craig Hockenberry's blog post about Code Signing and Mavericks.

It is possible to automate the signing by adding a build script phase with the following code and replace the placeholders:

LOCATION="${BUILT_PRODUCTS_DIR}"/"${FRAMEWORKS_FOLDER_PATH}"
IDENTITY="Developer ID Application: ENTERYOURDEVELOPERNAMEFORTHECERTIFICATE"
find "$LOCATION" -name '*.framework' -exec codesign --verbose --force --sign "$IDENTITY" {}/Versions/Current \;

Migration

We refactored the API of HockeySDK and it is now nearly identical to the iOS version. The setup was simplified to those two lines:

[[BITHockeyManager sharedHockeyManager] configureWithIdentifier:@"<APP_IDENTIFIER>" 
                                        companyName:@"My company" 
                                        delegate:self];
[[BITHockeyManager sharedHockeyManager] startManager];

There is no need to implement any delegates by default. We advise to check out our setup guide, especially the chapter on improved startup crashes handling. For a full list of changes to the delegate methods, e.g. how to attach log data to crash reports, please check out the Migration Guide.

Download

Download the release here: HockeySDK 2.0 for OS X


If you're interested, the full release notes are below:

Changelog

General

  • [NEW] Major refactoring of all classes. Please go through the setup or migration guide!
  • [NEW] Added docset with SDK documentation
  • [UPDATE] Updated installation instructions with notes about sandboxing, automatic sending of crash reports and code signing
  • [UPDATE] Improved documentation

Crash Reporting

  • [NEW] Integrated PLCrashReporter 1.2 beta 3
  • [NEW] Added optional support for Mach exceptions
  • [NEW] Check if additional uncaught exception handlers are installed and print a warning in the console
  • [UPDATE] Replaced exceptionInterception property in favor of new BITCrashReportExceptionApplication class to catch more exceptions. Check the README file for more details on how to use this.
  • [UPDATE] PLCrashReporter built with BIT namespace to avoid collisions
  • [UPDATE] Crash reporting is automatically disabled when the app is invoked with the debugger!
  • [UPDATE] Made all delegates fully optional to simplify setup
  • [UPDATE] Enabled Copy&Paste in crash report UI
  • [UPDATE] Crash report text in the dialog’s detail view can now be selected
  • [UPDATE] Adjusted privacy note in the dialog

Beta Updates

  • [NEW] Added used language to the Sparkle request keys in the BITSystemProfile helper class