Merge branch 'release/2.2.2'

* release/2.2.2:
  Some more 2 space indentation fixes
  fix example
  Set the delegate for Hockey and Quincy
  Remove unit test files and target
  Add appstore detection property
  Add workaround for not requiring -all_load linker flag and some Xcode project adjustments
  Updated manager for quincy logging and new delegate
  One more 2 space indentation fixes
  Add new delegate which fires when the user selected "Send Always" in the alert
  Fix for an older commit in QuincyKit being only half complete
  Don't treat empty server responses as success
  Added optional logging for debugging help
  set HOCKEYLIB_STATIC_LIBRARY define
  as a library, build for armv6 & armv7
  add xcworkspacedata
  add default xcodeproj
  Removing returning shared instance before dispatch_once is invoked
This commit is contained in:
Andreas Linde 2011-12-13 18:46:41 +01:00
commit 92f531b5f9
17 changed files with 859 additions and 397 deletions

1
.gitignore vendored
View File

@ -7,7 +7,6 @@ build/*
*.perspective *.perspective
*.perspectivev3 *.perspectivev3
!default.perspectivev3 !default.perspectivev3
*.xcworkspace
!default.xcworkspace !default.xcworkspace
xcuserdata xcuserdata
profile profile

View File

@ -123,8 +123,6 @@ static NSString *kHockeyErrorDomain = @"HockeyErrorDomain";
static BWHockeyManager *sharedInstance = nil; static BWHockeyManager *sharedInstance = nil;
static dispatch_once_t pred; static dispatch_once_t pred;
if (sharedInstance) return sharedInstance;
dispatch_once(&pred, ^{ dispatch_once(&pred, ^{
sharedInstance = [BWHockeyManager alloc]; sharedInstance = [BWHockeyManager alloc];
sharedInstance = [sharedInstance init]; sharedInstance = [sharedInstance init];

View File

@ -29,6 +29,8 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#define BWQuincyLog(fmt, ...) do { if([BWQuincyManager sharedQuincyManager].isLoggingEnabled) { NSLog((@"[QuincyLib] %s/%d " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__); }} while(0)
#define kQuincyBundleName @"Quincy.bundle" #define kQuincyBundleName @"Quincy.bundle"
NSBundle *quincyBundle(void); NSBundle *quincyBundle(void);
@ -137,6 +139,9 @@ typedef enum CrashReportStatus {
// Invoked before the user is asked to send a crash report, so you can do additional actions. E.g. to make sure not to ask the user for an app rating :) // Invoked before the user is asked to send a crash report, so you can do additional actions. E.g. to make sure not to ask the user for an app rating :)
-(void) willShowSubmitCrashReportAlert; -(void) willShowSubmitCrashReportAlert;
// Invoked after the user did choose to send crashes always in the alert
-(void) userDidChooseSendAlways;
@end @end
@interface BWQuincyManager : NSObject <NSXMLParserDelegate> { @interface BWQuincyManager : NSObject <NSXMLParserDelegate> {
@ -144,6 +149,7 @@ typedef enum CrashReportStatus {
id <BWQuincyManagerDelegate> _delegate; id <BWQuincyManagerDelegate> _delegate;
BOOL _loggingEnabled;
BOOL _showAlwaysButton; BOOL _showAlwaysButton;
BOOL _feedbackActivated; BOOL _feedbackActivated;
BOOL _autoSubmitCrashReport; BOOL _autoSubmitCrashReport;
@ -189,6 +195,10 @@ typedef enum CrashReportStatus {
/////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////////////
// settings // settings
// if YES, states will be logged using NSLog. Only enable this for debugging!
// if NO, nothing will be logged. (default)
@property (nonatomic, assign, getter=isLoggingEnabled) BOOL loggingEnabled;
// nil, using the default localization files (Default) // nil, using the default localization files (Default)
// set to another string which will be appended to the Quincy localization file name, "Alternate" is another provided text set // set to another string which will be appended to the Quincy localization file name, "Alternate" is another provided text set
@property (nonatomic, retain) NSString *languageStyle; @property (nonatomic, retain) NSString *languageStyle;

View File

@ -87,12 +87,12 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
@synthesize autoSubmitDeviceUDID = _autoSubmitDeviceUDID; @synthesize autoSubmitDeviceUDID = _autoSubmitDeviceUDID;
@synthesize languageStyle = _languageStyle; @synthesize languageStyle = _languageStyle;
@synthesize didCrashInLastSession = _didCrashInLastSession; @synthesize didCrashInLastSession = _didCrashInLastSession;
@synthesize loggingEnabled = _loggingEnabled;
@synthesize appIdentifier = _appIdentifier; @synthesize appIdentifier = _appIdentifier;
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000 #if __IPHONE_OS_VERSION_MIN_REQUIRED >= 40000
+(BWQuincyManager *)sharedQuincyManager +(BWQuincyManager *)sharedQuincyManager {
{
static BWQuincyManager *sharedInstance = nil; static BWQuincyManager *sharedInstance = nil;
static dispatch_once_t pred; static dispatch_once_t pred;
@ -127,6 +127,7 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
_sendingInProgress = NO; _sendingInProgress = NO;
_languageStyle = nil; _languageStyle = nil;
_didCrashInLastSession = NO; _didCrashInLastSession = NO;
_loggingEnabled = NO;
self.delegate = nil; self.delegate = nil;
self.feedbackActivated = NO; self.feedbackActivated = NO;
@ -175,13 +176,13 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
// Enable the Crash Reporter // Enable the Crash Reporter
if (![crashReporter enableCrashReporterAndReturnError: &error]) if (![crashReporter enableCrashReporterAndReturnError: &error])
NSLog(@"Warning: Could not enable crash reporter: %@", error); NSLog(@"WARNING: Could not enable crash reporter: %@", error);
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startManager) name:BWQuincyNetworkBecomeReachable object:nil]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(startManager) name:BWQuincyNetworkBecomeReachable object:nil];
} }
if (!quincyBundle()) { if (!quincyBundle()) {
NSLog(@"WARNING: Quincy.bundle is missing in the app bundle!"); NSLog(@"WARNING: Quincy.bundle is missing, will send reports automatically!");
} }
} }
return self; return self;
@ -256,9 +257,9 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
if (!_sendingInProgress && [self hasPendingCrashReport]) { if (!_sendingInProgress && [self hasPendingCrashReport]) {
_sendingInProgress = YES; _sendingInProgress = YES;
if (!quincyBundle()) { if (!quincyBundle()) {
NSLog(@"Quincy.bundle is missing, sending report automatically!"); NSLog(@"WARNING: Quincy.bundle is missing, sending reports automatically!");
[self _sendCrashReports]; [self _sendCrashReports];
} else if (!self.autoSubmitCrashReport && [self hasNonApprovedCrashReports]) { } else if (![self autoSendCrashReports] && [self hasNonApprovedCrashReports]) {
if (self.delegate != nil && [self.delegate respondsToSelector:@selector(willShowSubmitCrashReportAlert)]) { if (self.delegate != nil && [self.delegate respondsToSelector:@selector(willShowSubmitCrashReportAlert)]) {
[self.delegate willShowSubmitCrashReportAlert]; [self.delegate willShowSubmitCrashReportAlert];
@ -318,6 +319,7 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
} }
if ([_crashFiles count] > 0) { if ([_crashFiles count] > 0) {
BWQuincyLog(@"Pending crash reports found.");
return YES; return YES;
} else } else
return NO; return NO;
@ -383,12 +385,21 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
case 1: case 1:
[self _sendCrashReports]; [self _sendCrashReports];
break; break;
case 2: case 2: {
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kAutomaticallySendCrashReports]; [[NSUserDefaults standardUserDefaults] setBool:YES forKey:kAutomaticallySendCrashReports];
[[NSUserDefaults standardUserDefaults] synchronize];
if (self.delegate != nil && [self.delegate respondsToSelector:@selector(userDidChooseSendAlways)]) {
[self.delegate userDidChooseSendAlways];
}
[self _sendCrashReports]; [self _sendCrashReports];
break; break;
} }
default:
_sendingInProgress = NO;
[self _cleanCrashReports];
break;
}
} }
} }
@ -531,6 +542,7 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
[[NSUserDefaults standardUserDefaults] synchronize]; [[NSUserDefaults standardUserDefaults] synchronize];
if (crashes != nil) { if (crashes != nil) {
BWQuincyLog(@"Sending crash reports:\n%@", crashes);
[self _postXML:[NSString stringWithFormat:@"<crashes>%@</crashes>", crashes] [self _postXML:[NSString stringWithFormat:@"<crashes>%@</crashes>", crashes]
toURL:[NSURL URLWithString:self.submissionURL]]; toURL:[NSURL URLWithString:self.submissionURL]];
@ -559,7 +571,8 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
- (void)_checkForFeedbackStatus { - (void)_checkForFeedbackStatus {
NSMutableURLRequest *request = nil; NSMutableURLRequest *request = nil;
request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@api/2/apps/%@/crashes/%@", request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString:[NSString stringWithFormat:@"%@api/2/apps/%@/crashes/%@",
self.submissionURL, self.submissionURL,
[self.appIdentifier stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding], [self.appIdentifier stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding],
_feedbackRequestID _feedbackRequestID
@ -583,6 +596,8 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
} }
_urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; _urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
BWQuincyLog(@"Requesting feedback status.");
} }
- (void)_postXML:(NSString*)xml toURL:(NSURL*)url { - (void)_postXML:(NSString*)xml toURL:(NSURL*)url {
@ -590,7 +605,8 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
NSString *boundary = @"----FOO"; NSString *boundary = @"----FOO";
if (self.appIdentifier) { if (self.appIdentifier) {
request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@api/2/apps/%@/crashes", request = [NSMutableURLRequest requestWithURL:
[NSURL URLWithString:[NSString stringWithFormat:@"%@api/2/apps/%@/crashes",
self.submissionURL, self.submissionURL,
[self.appIdentifier stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding] [self.appIdentifier stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]
] ]
@ -633,7 +649,10 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
_urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; _urlConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
if (!_urlConnection) { if (!_urlConnection) {
BWQuincyLog(@"Sending crash reports could not start!");
_sendingInProgress = NO; _sendingInProgress = NO;
} else {
BWQuincyLog(@"Sending crash reports started.");
} }
} }
@ -658,11 +677,13 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
[self.delegate connectionClosed]; [self.delegate connectionClosed];
} }
BWQuincyLog(@"ERROR: %@", [error localizedDescription]);
_sendingInProgress = NO; _sendingInProgress = NO;
} }
- (void)connectionDidFinishLoading:(NSURLConnection *)connection { - (void)connectionDidFinishLoading:(NSURLConnection *)connection {
if (_statusCode >= 200 && _statusCode < 400) { if (_statusCode >= 200 && _statusCode < 400 && _responseData != nil && [_responseData length] > 0) {
[self _cleanCrashReports]; [self _cleanCrashReports];
_feedbackRequestID = nil; _feedbackRequestID = nil;
@ -672,6 +693,8 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
mutabilityOption:NSPropertyListMutableContainersAndLeaves mutabilityOption:NSPropertyListMutableContainersAndLeaves
format:nil format:nil
errorDescription:NULL]; errorDescription:NULL];
BWQuincyLog(@"Received API response: %@", response);
_serverResult = (CrashReportStatus)[[response objectForKey:@"status"] intValue]; _serverResult = (CrashReportStatus)[[response objectForKey:@"status"] intValue];
if ([response objectForKey:@"id"]) { if ([response objectForKey:@"id"]) {
_feedbackRequestID = [[NSString alloc] initWithString:[response objectForKey:@"id"]]; _feedbackRequestID = [[NSString alloc] initWithString:[response objectForKey:@"id"]];
@ -680,6 +703,8 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
_feedbackDelayInterval *= 0.01; _feedbackDelayInterval *= 0.01;
} }
} else { } else {
BWQuincyLog(@"Received API response: %@", [[[NSString alloc] initWithBytes:[_responseData bytes] length:[_responseData length] encoding: NSUTF8StringEncoding] autorelease]);
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:_responseData]; NSXMLParser *parser = [[NSXMLParser alloc] initWithData:_responseData];
// Set self as the delegate of the parser so that it will receive the parser delegate methods callbacks. // Set self as the delegate of the parser so that it will receive the parser delegate methods callbacks.
[parser setDelegate:self]; [parser setDelegate:self];
@ -705,6 +730,12 @@ NSString *BWQuincyLocalize(NSString *stringToken) {
[self showCrashStatusMessage]; [self showCrashStatusMessage];
} }
} }
} else {
if (_responseData == nil || [_responseData length] == 0) {
BWQuincyLog(@"ERROR: Sending failed with an empty response!");
} else {
BWQuincyLog(@"ERROR: Sending failed with status code: %i", _statusCode);
}
} }
[_responseData release]; [_responseData release];

View File

@ -0,0 +1,25 @@
//
// CNSFixCategoryBug.h
// HockeySDK
//
// Created by Andreas Linde on 12/7/11.
// Copyright (c) 2011 Andreas Linde. All rights reserved.
//
#ifndef HockeySDK_CNSFixCategoryBug_h
#define HockeySDK_CNSFixCategoryBug_h
/**
Add this macro before each category implementation, so we don't have to use
-all_load or -force_load to load object files from static libraries that only contain
categories and no classes.
See http://developer.apple.com/library/mac/#qa/qa2006/qa1490.html for more info.
Shamelessly borrowed from Three20
*/
#define CNS_FIX_CATEGORY_BUG(name) @interface CNS_FIX_CATEGORY_BUG##name @end \
@implementation CNS_FIX_CATEGORY_BUG##name @end
#endif

View File

@ -80,6 +80,9 @@
// user for an app rating :) // user for an app rating :)
- (void)willShowSubmitCrashReportAlert; - (void)willShowSubmitCrashReportAlert;
// Invoked after the user did choose to send crashes always in the alert
-(void) userDidChooseSendAlways;
@end @end
@interface CNSHockeyManager : NSObject { @interface CNSHockeyManager : NSObject {
@ -201,6 +204,10 @@
// Default: HockeyComparisonResultGreater // Default: HockeyComparisonResultGreater
@property (nonatomic, assign) HockeyComparisonResult compareVersionType; @property (nonatomic, assign) HockeyComparisonResult compareVersionType;
// if YES the app is installed from the app store
// if NO the app is installed via ad-hoc or enterprise distribution
@property (nonatomic, readonly) BOOL isAppStoreEnvironment;
#pragma mark - Public Methods #pragma mark - Public Methods
// Returns the shared manager object // Returns the shared manager object

View File

@ -42,10 +42,6 @@
static CNSHockeyManager *sharedInstance = nil; static CNSHockeyManager *sharedInstance = nil;
static dispatch_once_t pred; static dispatch_once_t pred;
if (sharedInstance) {
return sharedInstance;
}
dispatch_once(&pred, ^{ dispatch_once(&pred, ^{
sharedInstance = [CNSHockeyManager alloc]; sharedInstance = [CNSHockeyManager alloc];
sharedInstance = [sharedInstance init]; sharedInstance = [sharedInstance init];
@ -149,10 +145,12 @@
- (BOOL)isLoggingEnabled { - (BOOL)isLoggingEnabled {
return [[BWHockeyManager sharedHockeyManager] isLoggingEnabled]; return [[BWHockeyManager sharedHockeyManager] isLoggingEnabled];
return [[BWQuincyManager sharedQuincyManager] isLoggingEnabled];
} }
- (void)setLoggingEnabled:(BOOL)loggingEnabled { - (void)setLoggingEnabled:(BOOL)loggingEnabled {
return [[BWHockeyManager sharedHockeyManager] setLoggingEnabled:loggingEnabled]; return [[BWHockeyManager sharedHockeyManager] setLoggingEnabled:loggingEnabled];
return [[BWQuincyManager sharedQuincyManager] setLoggingEnabled:loggingEnabled];
} }
#pragma mark - Public Instance Methods (Crash Reporting) #pragma mark - Public Instance Methods (Crash Reporting)
@ -299,6 +297,10 @@
[[BWHockeyManager sharedHockeyManager] setCompareVersionType:compareVersionType]; [[BWHockeyManager sharedHockeyManager] setCompareVersionType:compareVersionType];
} }
- (BOOL)isAppStoreEnvironment {
return [[BWHockeyManager sharedHockeyManager] isAppStoreEnvironment];
}
- (BOOL)isUpdateAvailable { - (BOOL)isUpdateAvailable {
return [[BWHockeyManager sharedHockeyManager] isUpdateAvailable]; return [[BWHockeyManager sharedHockeyManager] isUpdateAvailable];
} }
@ -348,11 +350,13 @@
- (void)configureQuincyManager { - (void)configureQuincyManager {
[[BWQuincyManager sharedQuincyManager] setAppIdentifier:appIdentifier]; [[BWQuincyManager sharedQuincyManager] setAppIdentifier:appIdentifier];
[[BWQuincyManager sharedQuincyManager] setDelegate:delegate];
} }
- (void)configureHockeyManager { - (void)configureHockeyManager {
[[BWHockeyManager sharedHockeyManager] setAppIdentifier:appIdentifier]; [[BWHockeyManager sharedHockeyManager] setAppIdentifier:appIdentifier];
[[BWHockeyManager sharedHockeyManager] setCheckForTracker:YES]; [[BWHockeyManager sharedHockeyManager] setCheckForTracker:YES];
[[BWHockeyManager sharedHockeyManager] setDelegate:delegate];
// Only if JMC is part of the project // Only if JMC is part of the project
if ([[self class] isJMCPresent]) { if ([[self class] isJMCPresent]) {

View File

@ -25,6 +25,10 @@
#import "NSString+HockeyAdditions.h" #import "NSString+HockeyAdditions.h"
#ifdef HOCKEYLIB_STATIC_LIBRARY
#import "CNSFixCategoryBug.h"
CNS_FIX_CATEGORY_BUG(NSString_HockeyAdditions)
#endif
@implementation NSString (HockeyAdditions) @implementation NSString (HockeyAdditions)
@ -47,8 +51,7 @@
return result; return result;
} }
- (NSComparisonResult)versionCompare:(NSString *)other - (NSComparisonResult)versionCompare:(NSString *)other {
{
// Extract plain version number from self // Extract plain version number from self
NSString *plainSelf = self; NSString *plainSelf = self;
NSRange letterRange = [plainSelf rangeOfCharacterFromSet: [NSCharacterSet letterCharacterSet]]; NSRange letterRange = [plainSelf rangeOfCharacterFromSet: [NSCharacterSet letterCharacterSet]];

View File

@ -26,6 +26,11 @@
#import "UIImage+HockeyAdditions.h" #import "UIImage+HockeyAdditions.h"
#import "BWGlobal.h" #import "BWGlobal.h"
#ifdef HOCKEYLIB_STATIC_LIBRARY
#import "CNSFixCategoryBug.h"
CNS_FIX_CATEGORY_BUG(UIImage_HockeyAdditionsPrivate)
#endif
// Private helper methods // Private helper methods
@interface UIImage (HockeyAdditionsPrivate) @interface UIImage (HockeyAdditionsPrivate)
- (void)addRoundedRectToPath:(CGRect)rect context:(CGContextRef)context ovalWidth:(CGFloat)ovalWidth ovalHeight:(CGFloat)ovalHeight; - (void)addRoundedRectToPath:(CGRect)rect context:(CGContextRef)context ovalWidth:(CGFloat)ovalWidth ovalHeight:(CGFloat)ovalHeight;
@ -219,6 +224,7 @@ CGImageRef CreateGradientImage(int pixelsWide, int pixelsHigh, float fromAlpha,
image = UIGraphicsGetImageFromCurrentImageContext(); image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext(); UIGraphicsEndImageContext();
) )
if (!image) { if (!image) {
// Try older method. // Try older method.
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

View File

@ -70,7 +70,7 @@ Drag & drop the HockeySDK folder from your project directory to your Xcode proje
1. Open your AppDelegate.m file. 1. Open your AppDelegate.m file.
2. Add the following line at the top of the file below your own #import statements:<pre><code>#import "BWHockeyManager.h"</code></pre> 2. Add the following line at the top of the file below your own #import statements:<pre><code>#import "CNSHockeyManager.h"</code></pre>
3. Search for the method application:didFinishLaunchingWithOptions: 3. Search for the method application:didFinishLaunchingWithOptions:

View File

@ -0,0 +1,372 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
1E322DAD148FCE2100077977 /* CNSFixCategoryBug.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E322DAC148FCE2100077977 /* CNSFixCategoryBug.h */; };
E400561E148D79B500EB22B9 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E400561D148D79B500EB22B9 /* Foundation.framework */; };
E41EB471148D7BF50015DEDC /* BWApp.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB459148D7BF50015DEDC /* BWApp.h */; };
E41EB472148D7BF50015DEDC /* BWApp.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB45A148D7BF50015DEDC /* BWApp.m */; };
E41EB473148D7BF50015DEDC /* BWGlobal.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB45B148D7BF50015DEDC /* BWGlobal.h */; };
E41EB474148D7BF50015DEDC /* BWGlobal.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB45C148D7BF50015DEDC /* BWGlobal.m */; };
E41EB475148D7BF50015DEDC /* BWHockeyManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB45D148D7BF50015DEDC /* BWHockeyManager.h */; };
E41EB476148D7BF50015DEDC /* BWHockeyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB45E148D7BF50015DEDC /* BWHockeyManager.m */; };
E41EB477148D7BF50015DEDC /* BWHockeySettingsViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB45F148D7BF50015DEDC /* BWHockeySettingsViewController.h */; };
E41EB478148D7BF50015DEDC /* BWHockeySettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB460148D7BF50015DEDC /* BWHockeySettingsViewController.m */; };
E41EB479148D7BF50015DEDC /* BWHockeyViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB461148D7BF50015DEDC /* BWHockeyViewController.h */; };
E41EB47A148D7BF50015DEDC /* BWHockeyViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB462148D7BF50015DEDC /* BWHockeyViewController.m */; };
E41EB47B148D7BF50015DEDC /* BWQuincyManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB463148D7BF50015DEDC /* BWQuincyManager.h */; };
E41EB47C148D7BF50015DEDC /* BWQuincyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB464148D7BF50015DEDC /* BWQuincyManager.m */; };
E41EB47D148D7BF50015DEDC /* CNSHockeyManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB465148D7BF50015DEDC /* CNSHockeyManager.h */; };
E41EB47E148D7BF50015DEDC /* CNSHockeyManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB466148D7BF50015DEDC /* CNSHockeyManager.m */; };
E41EB47F148D7BF50015DEDC /* NSString+HockeyAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB467148D7BF50015DEDC /* NSString+HockeyAdditions.h */; };
E41EB480148D7BF50015DEDC /* NSString+HockeyAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB468148D7BF50015DEDC /* NSString+HockeyAdditions.m */; };
E41EB481148D7BF50015DEDC /* PSAppStoreHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */; };
E41EB482148D7BF50015DEDC /* PSAppStoreHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */; };
E41EB483148D7BF50015DEDC /* PSStoreButton.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46B148D7BF50015DEDC /* PSStoreButton.h */; };
E41EB484148D7BF50015DEDC /* PSStoreButton.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46C148D7BF50015DEDC /* PSStoreButton.m */; };
E41EB485148D7BF50015DEDC /* PSWebTableViewCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */; };
E41EB486148D7BF50015DEDC /* PSWebTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */; };
E41EB487148D7BF50015DEDC /* UIImage+HockeyAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E41EB46F148D7BF50015DEDC /* UIImage+HockeyAdditions.h */; };
E41EB488148D7BF50015DEDC /* UIImage+HockeyAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = E41EB470148D7BF50015DEDC /* UIImage+HockeyAdditions.m */; };
E41EB48C148D7C4E0015DEDC /* CrashReporter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
1E322DAC148FCE2100077977 /* CNSFixCategoryBug.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNSFixCategoryBug.h; sourceTree = "<group>"; };
E400561A148D79B500EB22B9 /* libHockeySDK.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libHockeySDK.a; sourceTree = BUILT_PRODUCTS_DIR; };
E400561D148D79B500EB22B9 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
E400562B148D79B500EB22B9 /* SenTestingKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SenTestingKit.framework; path = Library/Frameworks/SenTestingKit.framework; sourceTree = DEVELOPER_DIR; };
E400562D148D79B500EB22B9 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = Library/Frameworks/UIKit.framework; sourceTree = DEVELOPER_DIR; };
E4005649148D7A3000EB22B9 /* Hockey.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Hockey.bundle; sourceTree = "<group>"; };
E400564A148D7A3000EB22B9 /* Quincy.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Quincy.bundle; sourceTree = "<group>"; };
E41EB459148D7BF50015DEDC /* BWApp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWApp.h; sourceTree = "<group>"; };
E41EB45A148D7BF50015DEDC /* BWApp.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWApp.m; sourceTree = "<group>"; };
E41EB45B148D7BF50015DEDC /* BWGlobal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWGlobal.h; sourceTree = "<group>"; };
E41EB45C148D7BF50015DEDC /* BWGlobal.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWGlobal.m; sourceTree = "<group>"; };
E41EB45D148D7BF50015DEDC /* BWHockeyManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWHockeyManager.h; sourceTree = "<group>"; };
E41EB45E148D7BF50015DEDC /* BWHockeyManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWHockeyManager.m; sourceTree = "<group>"; };
E41EB45F148D7BF50015DEDC /* BWHockeySettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWHockeySettingsViewController.h; sourceTree = "<group>"; };
E41EB460148D7BF50015DEDC /* BWHockeySettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWHockeySettingsViewController.m; sourceTree = "<group>"; };
E41EB461148D7BF50015DEDC /* BWHockeyViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWHockeyViewController.h; sourceTree = "<group>"; };
E41EB462148D7BF50015DEDC /* BWHockeyViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWHockeyViewController.m; sourceTree = "<group>"; };
E41EB463148D7BF50015DEDC /* BWQuincyManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BWQuincyManager.h; sourceTree = "<group>"; };
E41EB464148D7BF50015DEDC /* BWQuincyManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BWQuincyManager.m; sourceTree = "<group>"; };
E41EB465148D7BF50015DEDC /* CNSHockeyManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CNSHockeyManager.h; sourceTree = "<group>"; };
E41EB466148D7BF50015DEDC /* CNSHockeyManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CNSHockeyManager.m; sourceTree = "<group>"; };
E41EB467148D7BF50015DEDC /* NSString+HockeyAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+HockeyAdditions.h"; sourceTree = "<group>"; };
E41EB468148D7BF50015DEDC /* NSString+HockeyAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+HockeyAdditions.m"; sourceTree = "<group>"; };
E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSAppStoreHeader.h; sourceTree = "<group>"; };
E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSAppStoreHeader.m; sourceTree = "<group>"; };
E41EB46B148D7BF50015DEDC /* PSStoreButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSStoreButton.h; sourceTree = "<group>"; };
E41EB46C148D7BF50015DEDC /* PSStoreButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSStoreButton.m; sourceTree = "<group>"; };
E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PSWebTableViewCell.h; sourceTree = "<group>"; };
E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PSWebTableViewCell.m; sourceTree = "<group>"; };
E41EB46F148D7BF50015DEDC /* UIImage+HockeyAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIImage+HockeyAdditions.h"; sourceTree = "<group>"; };
E41EB470148D7BF50015DEDC /* UIImage+HockeyAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIImage+HockeyAdditions.m"; sourceTree = "<group>"; };
E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CrashReporter.framework; path = ../Vendor/CrashReporter.framework; sourceTree = "<group>"; };
E4E7335A148D7A5A00763A39 /* LICENSE.txt */ = {isa = PBXFileReference; lastKnownFileType = text; name = LICENSE.txt; path = ../LICENSE.txt; sourceTree = "<group>"; };
E4E7335B148D7A5A00763A39 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = text; name = README.md; path = ../README.md; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
E4005617148D79B500EB22B9 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
E400561E148D79B500EB22B9 /* Foundation.framework in Frameworks */,
E41EB48C148D7C4E0015DEDC /* CrashReporter.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
E400560F148D79B500EB22B9 = {
isa = PBXGroup;
children = (
E41EB489148D7BF90015DEDC /* HockeySDK */,
E400561C148D79B500EB22B9 /* Frameworks */,
E4005648148D7A3000EB22B9 /* Resources */,
E400561B148D79B500EB22B9 /* Products */,
E4E7335A148D7A5A00763A39 /* LICENSE.txt */,
E4E7335B148D7A5A00763A39 /* README.md */,
);
sourceTree = "<group>";
};
E400561B148D79B500EB22B9 /* Products */ = {
isa = PBXGroup;
children = (
E400561A148D79B500EB22B9 /* libHockeySDK.a */,
);
name = Products;
sourceTree = "<group>";
};
E400561C148D79B500EB22B9 /* Frameworks */ = {
isa = PBXGroup;
children = (
E41EB48B148D7C4E0015DEDC /* CrashReporter.framework */,
E400561D148D79B500EB22B9 /* Foundation.framework */,
E400562B148D79B500EB22B9 /* SenTestingKit.framework */,
E400562D148D79B500EB22B9 /* UIKit.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
E4005648148D7A3000EB22B9 /* Resources */ = {
isa = PBXGroup;
children = (
E4005649148D7A3000EB22B9 /* Hockey.bundle */,
E400564A148D7A3000EB22B9 /* Quincy.bundle */,
);
name = Resources;
path = ../Resources;
sourceTree = "<group>";
};
E41EB458148D7BF50015DEDC /* Classes */ = {
isa = PBXGroup;
children = (
E41EB48A148D7C150015DEDC /* Helper */,
E41EB459148D7BF50015DEDC /* BWApp.h */,
E41EB45A148D7BF50015DEDC /* BWApp.m */,
E41EB45B148D7BF50015DEDC /* BWGlobal.h */,
E41EB45C148D7BF50015DEDC /* BWGlobal.m */,
E41EB45D148D7BF50015DEDC /* BWHockeyManager.h */,
E41EB45E148D7BF50015DEDC /* BWHockeyManager.m */,
E41EB45F148D7BF50015DEDC /* BWHockeySettingsViewController.h */,
E41EB460148D7BF50015DEDC /* BWHockeySettingsViewController.m */,
E41EB461148D7BF50015DEDC /* BWHockeyViewController.h */,
E41EB462148D7BF50015DEDC /* BWHockeyViewController.m */,
E41EB463148D7BF50015DEDC /* BWQuincyManager.h */,
E41EB464148D7BF50015DEDC /* BWQuincyManager.m */,
E41EB465148D7BF50015DEDC /* CNSHockeyManager.h */,
E41EB466148D7BF50015DEDC /* CNSHockeyManager.m */,
);
name = Classes;
path = ../Classes;
sourceTree = "<group>";
};
E41EB489148D7BF90015DEDC /* HockeySDK */ = {
isa = PBXGroup;
children = (
E41EB458148D7BF50015DEDC /* Classes */,
);
name = HockeySDK;
sourceTree = "<group>";
};
E41EB48A148D7C150015DEDC /* Helper */ = {
isa = PBXGroup;
children = (
E41EB467148D7BF50015DEDC /* NSString+HockeyAdditions.h */,
E41EB468148D7BF50015DEDC /* NSString+HockeyAdditions.m */,
E41EB469148D7BF50015DEDC /* PSAppStoreHeader.h */,
E41EB46A148D7BF50015DEDC /* PSAppStoreHeader.m */,
E41EB46B148D7BF50015DEDC /* PSStoreButton.h */,
E41EB46C148D7BF50015DEDC /* PSStoreButton.m */,
E41EB46D148D7BF50015DEDC /* PSWebTableViewCell.h */,
E41EB46E148D7BF50015DEDC /* PSWebTableViewCell.m */,
E41EB46F148D7BF50015DEDC /* UIImage+HockeyAdditions.h */,
E41EB470148D7BF50015DEDC /* UIImage+HockeyAdditions.m */,
1E322DAC148FCE2100077977 /* CNSFixCategoryBug.h */,
);
name = Helper;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
E4005618148D79B500EB22B9 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
E41EB471148D7BF50015DEDC /* BWApp.h in Headers */,
E41EB473148D7BF50015DEDC /* BWGlobal.h in Headers */,
E41EB475148D7BF50015DEDC /* BWHockeyManager.h in Headers */,
E41EB477148D7BF50015DEDC /* BWHockeySettingsViewController.h in Headers */,
E41EB479148D7BF50015DEDC /* BWHockeyViewController.h in Headers */,
E41EB47B148D7BF50015DEDC /* BWQuincyManager.h in Headers */,
E41EB47D148D7BF50015DEDC /* CNSHockeyManager.h in Headers */,
E41EB47F148D7BF50015DEDC /* NSString+HockeyAdditions.h in Headers */,
E41EB481148D7BF50015DEDC /* PSAppStoreHeader.h in Headers */,
E41EB483148D7BF50015DEDC /* PSStoreButton.h in Headers */,
E41EB485148D7BF50015DEDC /* PSWebTableViewCell.h in Headers */,
E41EB487148D7BF50015DEDC /* UIImage+HockeyAdditions.h in Headers */,
1E322DAD148FCE2100077977 /* CNSFixCategoryBug.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
E4005619148D79B500EB22B9 /* HockeySDK */ = {
isa = PBXNativeTarget;
buildConfigurationList = E400563E148D79B500EB22B9 /* Build configuration list for PBXNativeTarget "HockeySDK" */;
buildPhases = (
E4005616148D79B500EB22B9 /* Sources */,
E4005617148D79B500EB22B9 /* Frameworks */,
E4005618148D79B500EB22B9 /* Headers */,
);
buildRules = (
);
dependencies = (
);
name = HockeySDK;
productName = HockeySDK;
productReference = E400561A148D79B500EB22B9 /* libHockeySDK.a */;
productType = "com.apple.product-type.library.static";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
E4005611148D79B500EB22B9 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 0420;
};
buildConfigurationList = E4005614148D79B500EB22B9 /* Build configuration list for PBXProject "HockeySDK" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
);
mainGroup = E400560F148D79B500EB22B9;
productRefGroup = E400561B148D79B500EB22B9 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
E4005619148D79B500EB22B9 /* HockeySDK */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
E4005616148D79B500EB22B9 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
E41EB472148D7BF50015DEDC /* BWApp.m in Sources */,
E41EB474148D7BF50015DEDC /* BWGlobal.m in Sources */,
E41EB476148D7BF50015DEDC /* BWHockeyManager.m in Sources */,
E41EB478148D7BF50015DEDC /* BWHockeySettingsViewController.m in Sources */,
E41EB47A148D7BF50015DEDC /* BWHockeyViewController.m in Sources */,
E41EB47C148D7BF50015DEDC /* BWQuincyManager.m in Sources */,
E41EB47E148D7BF50015DEDC /* CNSHockeyManager.m in Sources */,
E41EB480148D7BF50015DEDC /* NSString+HockeyAdditions.m in Sources */,
E41EB482148D7BF50015DEDC /* PSAppStoreHeader.m in Sources */,
E41EB484148D7BF50015DEDC /* PSStoreButton.m in Sources */,
E41EB486148D7BF50015DEDC /* PSWebTableViewCell.m in Sources */,
E41EB488148D7BF50015DEDC /* UIImage+HockeyAdditions.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
E400563C148D79B500EB22B9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = (
armv7,
armv6,
);
COPY_PHASE_STRIP = NO;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
HOCKEYLIB_STATIC_LIBRARY,
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_VERSION = "";
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
OTHER_CFLAGS = "";
SDKROOT = iphoneos;
};
name = Debug;
};
E400563D148D79B500EB22B9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ARCHS = (
armv7,
armv6,
);
COPY_PHASE_STRIP = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_PREPROCESSOR_DEFINITIONS = HOCKEYLIB_STATIC_LIBRARY;
GCC_VERSION = "";
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 3.0;
OTHER_CFLAGS = "";
SDKROOT = iphoneos;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
E400563F148D79B500EB22B9 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
DSTROOT = /tmp/HockeySDK.dst;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/../Vendor\"",
);
OTHER_LDFLAGS = "";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Debug;
};
E4005640148D79B500EB22B9 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
DSTROOT = /tmp/HockeySDK.dst;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)/../Vendor\"",
);
OTHER_LDFLAGS = "";
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
E4005614148D79B500EB22B9 /* Build configuration list for PBXProject "HockeySDK" */ = {
isa = XCConfigurationList;
buildConfigurations = (
E400563C148D79B500EB22B9 /* Debug */,
E400563D148D79B500EB22B9 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
E400563E148D79B500EB22B9 /* Build configuration list for PBXNativeTarget "HockeySDK" */ = {
isa = XCConfigurationList;
buildConfigurations = (
E400563F148D79B500EB22B9 /* Debug */,
E4005640148D79B500EB22B9 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = E4005611148D79B500EB22B9 /* Project object */;
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:HockeySDK.xcodeproj">
</FileRef>
</Workspace>