Update version and files to v3.6 Beta 2

This commit is contained in:
Andreas Linde
2014-06-26 15:54:30 +02:00
parent 57f52c7459
commit da8a544fa6
12 changed files with 40 additions and 235 deletions

View File

@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'HockeySDK'
s.version = '3.6-b.1'
s.version = '3.6-b.2'
s.summary = 'Collect live crash reports, get feedback from your users, distribute your betas, and analyze your test coverage with HockeyApp.'
s.description = <<-DESC
@@ -12,7 +12,7 @@ Pod::Spec.new do |s|
DESC
s.homepage = 'http://hockeyapp.net/'
s.documentation_url = 'http://hockeyapp.net/help/sdk/ios/3.6-b.1/'
s.documentation_url = 'http://hockeyapp.net/help/sdk/ios/3.6-b.2/'
s.license = 'MIT'
s.author = { 'Andreas Linde' => 'mail@andreaslinde.de', 'Thomas Dohmke' => "thomas@dohmke.de" }
@@ -24,7 +24,7 @@ Pod::Spec.new do |s|
s.frameworks = 'CoreText', 'QuartzCore', 'SystemConfiguration', 'CoreGraphics', 'UIKit', 'Security', 'AssetsLibrary', 'MobileCoreServices', 'QuickLook'
s.ios.vendored_frameworks = 'Vendor/CrashReporter.framework'
s.xcconfig = {'GCC_PREPROCESSOR_DEFINITIONS' => %{$(inherited) BITHOCKEY_VERSION="@\\"#{s.version}\\"" BITHOCKEY_C_VERSION="\\"#{s.version}\\"" BITHOCKEY_BUILD="@\\"29\\"" BITHOCKEY_C_BUILD="\\"29\\""} }
s.xcconfig = {'GCC_PREPROCESSOR_DEFINITIONS' => %{$(inherited) BITHOCKEY_VERSION="@\\"#{s.version}\\"" BITHOCKEY_C_VERSION="\\"#{s.version}\\"" BITHOCKEY_BUILD="@\\"30\\"" BITHOCKEY_C_BUILD="\\"30\\""} }
s.resource_bundle = { 'HockeySDKResources' => ['Resources/*.png', 'Resources/*.lproj'] }
s.preserve_paths = 'Resources', 'Support'

View File

@@ -31,10 +31,10 @@ The main SDK class is `BITHockeyManager`. It initializes all modules and provide
## Installation & Setup
- [Installation & Setup](http://www.hockeyapp.net/help/sdk/ios/3.6-b.1/docs/docs/Guide-Installation-Setup.html) (Recommended)
- [Installation & Setup Advanced](http://www.hockeyapp.net/help/sdk/ios/3.6-b.1/docs/docs/Guide-Installation-Setup-Advanced.html) (Using Git submodule and Xcode sub-project)
- [Identify and authenticate users of Ad-Hoc or Enterprise builds](http://www.hockeyapp.net/help/sdk/ios/3.6-b.1/docs/docs/HowTo-Authenticating-Users-on-iOS.html)
- [Migration from previous SDK Versions](http://www.hockeyapp.net/help/sdk/ios/3.6-b.1/docs/docs/Guide-Migration-Kits.html)
- [Installation & Setup](http://www.hockeyapp.net/help/sdk/ios/3.6-b.2/docs/docs/Guide-Installation-Setup.html) (Recommended)
- [Installation & Setup Advanced](http://www.hockeyapp.net/help/sdk/ios/3.6-b.2/docs/docs/Guide-Installation-Setup-Advanced.html) (Using Git submodule and Xcode sub-project)
- [Identify and authenticate users of Ad-Hoc or Enterprise builds](http://www.hockeyapp.net/help/sdk/ios/3.6-b.2/docs/docs/HowTo-Authenticating-Users-on-iOS.html)
- [Migration from previous SDK Versions](http://www.hockeyapp.net/help/sdk/ios/3.6-b.2/docs/docs/Guide-Migration-Kits.html)
- [Mac Desktop Uploader](http://support.hockeyapp.net/kb/how-tos/how-to-upload-to-hockeyapp-on-a-mac)
@@ -48,4 +48,4 @@ This documentation provides integrated help in Xcode for all public APIs and a s
3. Copy the content into ~`/Library/Developer/Shared/Documentation/DocSets`
The documentation is also available via the following URL: [http://hockeyapp.net/help/sdk/ios/3.6-b.1/](http://hockeyapp.net/help/sdk/ios/3.6-b.1/)
The documentation is also available via the following URL: [http://hockeyapp.net/help/sdk/ios/3.6-b.2/](http://hockeyapp.net/help/sdk/ios/3.6-b.2/)

View File

@@ -1,7 +1,7 @@
#include "HockeySDK.xcconfig"
BUILD_NUMBER = 29
VERSION_STRING = 3.6-b.1
BUILD_NUMBER = 30
VERSION_STRING = 3.6-b.2
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) BITHOCKEY_VERSION="@\""$(VERSION_STRING)"\"" BITHOCKEY_BUILD="@\""$(BUILD_NUMBER)"\"" BITHOCKEY_C_VERSION="\""$(VERSION_STRING)"\"" BITHOCKEY_C_BUILD="\""$(BUILD_NUMBER)"\""
BIT_ARM_ARCHS = armv7 armv7s arm64
BIT_SIM_ARCHS = x86_64 i386

View File

@@ -1,3 +1,17 @@
## Version 3.6.0 Beta 2
- [NEW] `BITFeedbackManager`: Screenshot feature is now part of the public API
- [UPDATE] `BITFeedbackManager`: Various improvements for the screenshot feature
- [UPDATE] `BITFeedbackManager`: Added `BITHockeyAttachment` for more customizable attachments to feedback (`content-type`, `filename`)
- [UPDATE] `BITUpdateManager`: Improved algorithm for fetching an optimal sized app icon for the Update View
- [UPDATE] `BITUpdateManager`: Properly consider paragraphs in releases notes when presenting them in the Update View
- [UPDATE] `BITCrashManager`: Updated PLCrashReporter to version 1.2
- [UPDATE] `BITCrashManager`: Added `osVersion` and `osBuild` properties to `BITCrashDetails`
- [BUGFIX] `BITCrashManager`: Use correct filename for crash report attachments
- [UPDATE] Property `delegate` in all components is now private. Set the delegate on `BITHockeyManager` only!
- [BUGFIX] Various additional fixes
<br /><br/>
## Version 3.6.0 Beta 1
- [NEW] Minimum iOS Deployment version is now iOS 6.0

View File

@@ -1,6 +1,6 @@
## Version 3.5 Beta 1
## Version 3.6 Beta 2
- [Changelog](http://www.hockeyapp.net/help/sdk/ios/3.6-b.1/docs/docs/Changelog.html)
- [Changelog](http://www.hockeyapp.net/help/sdk/ios/3.6-b.2/docs/docs/Changelog.html)
## Introduction
@@ -150,10 +150,13 @@ Instead of manually adding the missing frameworks, you can also use our bundled
**Important note:** Check if you overwrite any of the build settings and add a missing `$(inherited)` entry on the projects build settings level, so the `HockeySDK.xcconfig` settings will be passed through successfully.
4. If you are getting build warnings, then the `.xcconfig` setting wasn't included successfully or its settings in `Other Linker Flags` get ignored because `$(inherited)` is missing on project or target level. Either add `$(inherited)` or link the following frameworks manually in `Link Binary With Libraries` under `Build Phases`:
- `AssetsLibrary`
- `CoreText`
- `CoreGraphics`
- `Foundation`
- `MobileCoreServices`
- `QuartzCore`
- `QuickLook`
- `Security`
- `SystemConfiguration`
- `UIKit`

View File

@@ -1,6 +1,6 @@
## Version 3.6 Beta 1
## Version 3.6 Beta 2
- [Changelog](http://www.hockeyapp.net/help/sdk/ios/3.6-b.1/docs/docs/Changelog.html)
- [Changelog](http://www.hockeyapp.net/help/sdk/ios/3.6-b.2/docs/docs/Changelog.html)
## Introduction
@@ -93,9 +93,9 @@ The Mac Desktop Uploader can provide easy uploading of your app versions to Hock
This documentation provides integrated help in Xcode for all public APIs and a set of additional tutorials and how-tos.
1. Copy `de.bitstadium.HockeySDK-iOS-3.5.5.docset` into ~`/Library/Developer/Shared/Documentation/DocSets`
1. Copy `de.bitstadium.HockeySDK-iOS-3.6-b.2.docset` into ~`/Library/Developer/Shared/Documentation/DocSets`
The documentation is also available via the following URL: [http://hockeyapp.net/help/sdk/ios/3.6-b.1/](http://hockeyapp.net/help/sdk/ios/3.6-b.1/)
The documentation is also available via the following URL: [http://hockeyapp.net/help/sdk/ios/3.6-b.2/](http://hockeyapp.net/help/sdk/ios/3.6-b.2/)
### Set up with xcconfig
@@ -124,10 +124,13 @@ Instead of manually adding the missing frameworks, you can also use our bundled
**Important note:** Check if you overwrite any of the build settings and add a missing `$(inherited)` entry on the projects build settings level, so the `HockeySDK.xcconfig` settings will be passed through successfully.
7. If you are getting build warnings, then the `.xcconfig` setting wasn't included successfully or its settings in `Other Linker Flags` get ignored because `$(inherited)` is missing on project or target level. Either add `$(inherited)` or link the following frameworks manually in `Link Binary With Libraries` under `Build Phases`:
- `AssetsLibrary`
- `CoreText`
- `CoreGraphics`
- `Foundation`
- `MobileCoreServices`
- `QuartzCore`
- `QuickLook`
- `Security`
- `SystemConfiguration`
- `UIKit`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

View File

@@ -1,97 +0,0 @@
## Introduction
For some types of crashes it is helpful to have more data available, than a crash report itself can provide, e.g. application specific log data.
Since the crash report can only be send on the next start, you need to store the log data into a log file. And to make that as fast as possible it should not block the main thread. We highly recommend using [CocoaLumberjack](https://github.com/robbiehanson/CocoaLumberjack/) or [NSLogger](https://github.com/fpillet/NSLogger) or even both in combination using the [NSLogger-CocoaLumberjack-connector](https://github.com/steipete/NSLogger-CocoaLumberjack-connector).
CocoaLumberjack can write log data to multiple destinations non blocking (!!), like the Xcode console or files, and NSLogger has the ability to stream log data over Bonjour to it's Mac application. We do *NOT* recommend to use `NSLog`!
**Important:** Make sure *NOT* to include personalized data into the log data because of privacy reasons! Also don't send too much data that you will never use. The crash report and the log data should be small in size, so they get send quickly even under bad mobile network conditions.
## HowTo
1. Setup the logging framework of choice
2. Implement `[BITCrashManagerDelegate applicationLogForCrashManager:]`
3. Return the log data
## Example
This example code is based on CocoaLumberjack logging into log files:
@interface BITAppDelegate () <BITCrashManagerDelegate> {}
@property (nonatomic) DDFileLogger *fileLogger;
@end
@implementation BITAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window makeKeyAndVisible];
// initialize before HockeySDK, so the delegate can access the file logger!
_fileLogger = [[DDFileLogger alloc] init];
_fileLogger.maximumFileSize = (1024 * 64); // 64 KByte
_fileLogger.logFileManager.maximumNumberOfLogFiles = 1;
[_fileLogger rollLogFile];
[DDLog addLogger:_fileLogger];
[[BITHockeyManager sharedHockeyManager] configureWithIdentifier:@"<>"
delegate:nil];
[[BITHockeyManager sharedHockeyManager] startManager];
// add Xcode console logger if not running in the App Store
if (![[BITHockeyManager sharedHockeyManager] isAppStoreEnvironment]) {
PSDDFormatter *psLogger = [[[PSDDFormatter alloc] init] autorelease];
[[DDTTYLogger sharedInstance] setLogFormatter:psLogger];
[DDLog addLogger:[DDTTYLogger sharedInstance]];
[DDLog addLogger:[DDNSLoggerLogger sharedInstance]];
}
return YES;
}
// get the log content with a maximum byte size
- (NSString *) getLogFilesContentWithMaxSize:(NSInteger)maxSize {
NSMutableString *description = [NSMutableString string];
NSArray *sortedLogFileInfos = [[_fileLogger logFileManager] sortedLogFileInfos];
NSUInteger count = [sortedLogFileInfos count];
// we start from the last one
for (NSUInteger index = count - 1; index >= 0; index--) {
DDLogFileInfo *logFileInfo = [sortedLogFileInfos objectAtIndex:index];
NSData *logData = [[NSFileManager defaultManager] contentsAtPath:[logFileInfo filePath]];
if ([logData length] > 0) {
NSString *result = [[NSString alloc] initWithBytes:[logData bytes]
length:[logData length]
encoding: NSUTF8StringEncoding];
[description appendString:result];
[result release];
}
}
if ([description length] > maxSize) {
description = (NSMutableString *)[description substringWithRange:NSMakeRange([description length]-maxSize-1, maxSize)];
}
return description;
}
#pragma mark - BITCrashManagerDelegate
- (NSString *)applicationLogForCrashManager:(BITCrashManager *)crashManager {
NSString *description = [self getLogFilesContentWithMaxSize:5000]; // 5000 bytes should be enough!
if ([description length] == 0) {
return nil;
} else {
return description;
}
}
@end

View File

@@ -1,78 +0,0 @@
## Introduction
To catch and send crashes that occur while the app is starting up, the app has to get adjusted a little bit to make this work.
The challenges in this scenario are:
- Sending crash reports needs to be asynchronous, otherwise it would block the main thread or bad network conditions could make it even worse
- If the startup takes too long or the main thread is blocking too long, the watchdog process will kill the app
- The app might crash again before the crash report could have been send
## HowTo
1. Setup the SDK
2. Check if the app crashed in the last session by checking `[BITCrashManager didCrashInLastSession]`
3. Check if `[BITCrashManager timeintervalCrashInLastSessionOccured]` is below a treshhold that you define. E.g. say your app usually requires 2 seconds for startup, and giving sending a crash report some time, you mighe choose `5` seconds as the treshhold
4. If the crash happened in that timeframe, delay your app initialization and show an intermediate screen
5. Implement the `BITCrashManagerDelegate` protocol methods `- (void)crashManagerWillCancelSendingCrashReport:(BITCrashManager *)crashManager`, `- (void)crashManager:(BITCrashManager *)crashManager didFailWithError:(NSError *)error;` and `- (void)crashManagerDidFinishSendingCrashReport:(BITCrashManager *)crashManager;` and continue app initialization
## Example
@interface BITAppDelegate () <BITCrashManagerDelegate> {}
@end
@implementation BITAppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self.window makeKeyAndVisible];
[[BITHockeyManager sharedHockeyManager] configureWithIdentifier:@"<>"
delegate:nil];
// optionally enable logging to get more information about states.
[BITHockeyManager sharedHockeyManager].debugLogEnabled = YES;
[[BITHockeyManager sharedHockeyManager] startManager];
if ([self didCrashInLastSessionOnStartup]) {
// show intermediate UI
} else {
[self setupApplication];
}
return YES;
}
- (BOOL)didCrashInLastSessionOnStartup {
return ([[BITHockeyManager sharedHockeyManager].crashManager didCrashInLastSession] &&
[[BITHockeyManager sharedHockeyManager].crashManager timeintervalCrashInLastSessionOccured] < 5);
}
- (void)setupApplication {
// setup your app specific code
}
#pragma mark - BITCrashManagerDelegate
- (void)crashManagerWillCancelSendingCrashReport:(BITCrashManager *)crashManager {
if ([self didCrashInLastSessionOnStartup]) {
[self setupApplication];
}
}
- (void)crashManager:(BITCrashManager *)crashManager didFailWithError:(NSError *)error {
if ([self didCrashInLastSessionOnStartup]) {
[self setupApplication];
}
}
- (void)crashManagerDidFinishSendingCrashReport:(BITCrashManager *)crashManager {
if ([self didCrashInLastSessionOnStartup]) {
[self setupApplication];
}
}
@end

View File

@@ -1,40 +0,0 @@
## Symbolication doesn't work
In most cases the symbolication process doesn't work, since there is no dSYM uploaded to HockeyApp, or the dSYM doesn't match the application binary. So this is also about the rules of binary UUIDs and dSYMs.
**IMPORTANT:** Each time you run the build command, your app gets a new unique UUID which is placed into the crash report to idenfiy the build. You also get a new dSYM package which contains the same UUID. So if you upload a new binary to the app store, you also have to upload the new dSYM to HockeyApp!
Here are some tips on how to find out which UUID is used where:
1. Find the UUID in the crash report:
- Scroll down the crash report until you find `Binary Images:`.
- The first line below that shows something like the following:
0x1000 - 0x222fff +AppName armv7 <1234567890abcdef1234567890abcdef> /var/mobile/Applications/ABCDEF01-1234-5678-9ABC-DEF012345678/AppName.app/AppName
`1234567890abcdef1234567890abcdef` is the UUID of your binary for the `armv7` architecture.
2. Find the UUID in the app binary (1 line for each architecture):
dwarfdump --uuid AppName.app/AppName
The result will look like:
UUID: 12345678-90AB-CDEF-1234-567890ABCDEF (armv7) AppName.app/AppName
3. Find the UUID in the dSYM (1 line for each architecture):
dwarfdump --uuid AppName.app.dSYM
The result will look like:
UUID: 12345678-90AB-CDEF-1234-567890ABCDEF (armv7) AppName.app.dSYM/Contents/Resources/DWARF/AppName
4. Find the dSYM for a specific UUID on your computer:
mdfind "com_apple_xcode_dsym_uuids == 12345678-90AB-CDEF-1234-567890ABCDEF"
The string "12345678-90AB-CDEF-1234-567890ABCDEF" is the UUID string from the crash report reformatted to uppercase and 8-4-4-4-12 groups.
If you found the correct dSYM, please upload it again and HockeyApp will process the crash logs a second time.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

View File

@@ -28,19 +28,19 @@ The main SDK class is `BITHockeyManager`. It initializes all modules and provide
- [Installation & Setup Advanced](Guide-Installation-Setup-Advanced) (Using Git submodule and Xcode sub-project)
- [Identify and authenticate users of Ad-Hoc or Enterprise builds](HowTo-Authenticating-Users-on-iOS)
- [Migration from previous SDK Versions](Guide-Migration-Kits)
- [Mac Desktop Uploader](Guide-Installation-Mac-App)
- [Mac Desktop Uploader](http://support.hockeyapp.net/kb/services-webhooks-desktop-apps/how-to-upload-to-hockeyapp-on-a-mac)
## HowTos
- [How to do app versioning](HowTo-App-Versioning)
- [How to upload symbols for crash reporting](HowTo-Upload-Symbols)
- [How to handle crashes on startup](HowTo-Handle-Crashes-On-Startup)
- [How to add application specific log data](HowTo-Add-Application-Log)
- [How to handle crashes on startup](http://support.hockeyapp.net/kb/client-integration-ios-mac-os-x/how-to-handle-crashes-during-startup-on-ios)
- [How to add application specific log data](http://support.hockeyapp.net/kb/client-integration-ios-mac-os-x/how-to-add-application-specific-log-data-on-ios)
- [How to ask the user for more details about a crash](HowTo-Set-Custom-AlertViewHandler)
## Troubleshooting
- [Symbolication doesn't work](Troubleshooting-Symbolication-Doesnt-Work) (Or the rules of binary UUIDs and dSYMs)
- [Symbolication doesn't work](http://support.hockeyapp.net/kb/client-integration-ios-mac-os-x/how-to-solve-symbolication-problems) (Or the rules of binary UUIDs and dSYMs)
- [Crash Reporting is not working](Troubleshooting-Crash-Reporting-Not-Working)
## Xcode Documentation