diff --git a/Classes/BITCrashReportTextFormatter.m b/Classes/BITCrashReportTextFormatter.m index 55a3415fee..76d8c50a37 100644 --- a/Classes/BITCrashReportTextFormatter.m +++ b/Classes/BITCrashReportTextFormatter.m @@ -277,7 +277,8 @@ NSString *const BITXamarinStackTraceDelimiter = @"Xamarin Exception Stack:"; if (codeType != nil) break; } - +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wdeprecated-declarations" /* If we were unable to determine the code type, fall back on the legacy architecture value. */ if (codeType == nil) { switch (report.systemInfo.architecture) { @@ -303,7 +304,8 @@ NSString *const BITXamarinStackTraceDelimiter = @"Xamarin Exception Stack:"; lp64 = true; break; } - } + } +#pragma GCC diagnostic pop } { diff --git a/HockeySDK-Source.podspec b/HockeySDK-Source.podspec index eb399c64de..4cc3e0821c 100644 --- a/HockeySDK-Source.podspec +++ b/HockeySDK-Source.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'HockeySDK-Source' - s.version = '4.1.1' + s.version = '4.1.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 @@ -25,7 +25,7 @@ Pod::Spec.new do |s| s.frameworks = 'AssetsLibrary', 'CoreGraphics', 'CoreTelephony', 'CoreText', 'MobileCoreServices', 'Photos', 'QuartzCore', 'QuickLook', 'Security', 'SystemConfiguration', 'UIKit' s.libraries = 'c++', 'z' s.vendored_frameworks = 'Vendor/CrashReporter.framework' - s.pod_target_xcconfig = {'GCC_PREPROCESSOR_DEFINITIONS' => %{$(inherited) BITHOCKEY_VERSION="@\\"#{s.version}\\"" BITHOCKEY_C_VERSION="\\"#{s.version}\\"" BITHOCKEY_BUILD="@\\"96\\"" BITHOCKEY_C_BUILD="\\"96\\""} } + s.pod_target_xcconfig = {'GCC_PREPROCESSOR_DEFINITIONS' => %{$(inherited) BITHOCKEY_VERSION="@\\"#{s.version}\\"" BITHOCKEY_C_VERSION="\\"#{s.version}\\"" BITHOCKEY_BUILD="@\\"97\\"" BITHOCKEY_C_BUILD="\\"97\\""} } s.resource_bundle = { 'HockeySDKResources' => ['Resources/*.png', 'Resources/*.lproj'] } s.preserve_paths = 'Resources', 'Support' s.private_header_files = 'Classes/*Private.h' diff --git a/HockeySDK.podspec b/HockeySDK.podspec index c80e9f0ad3..4e6548c634 100644 --- a/HockeySDK.podspec +++ b/HockeySDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = 'HockeySDK' - s.version = '4.1.1' + s.version = '4.1.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 @@ -32,7 +32,7 @@ Pod::Spec.new do |s| s.subspec 'CrashOnlyLib' do |ss| ss.frameworks = 'UIKit' ss.libraries = 'z' - ss.resource_bundle = { 'HockeySDKResources' => ['HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/*.lproj'] } + ss.resource_bundle = { 'HockeySDKResources' => ['HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDKResources.bundle/*.lproj'] } ss.vendored_frameworks = 'HockeySDK-iOS/HockeySDKCrashOnly/HockeySDK.framework' end @@ -41,7 +41,7 @@ Pod::Spec.new do |s| end s.subspec 'DefaultLib' do |ss| - ss.resource_bundle = { 'HockeySDKResources' => ['HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/*.png', 'HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/*.lproj'] } + ss.resource_bundle = { 'HockeySDKResources' => ['HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDKResources.bundle/*.png', 'HockeySDK-iOS/HockeySDK.embeddedframework/HockeySDKResources.bundle/*.lproj'] } ss.frameworks = 'AssetsLibrary', 'CoreGraphics', 'CoreText', 'CoreTelephony', 'MobileCoreServices', 'QuartzCore', 'QuickLook', 'UIKit' ss.libraries = 'z' @@ -49,7 +49,7 @@ Pod::Spec.new do |s| end s.subspec 'AllFeaturesLib' do |ss| - ss.resource_bundle = { 'HockeySDKResources' => ['HockeySDK-iOS/HockeySDKAllFeatures/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/*.png', 'HockeySDK-iOS/HockeySDKAllFeatures/HockeySDK.embeddedframework/HockeySDK.framework/Versions/A/Resources/HockeySDKResources.bundle/*.lproj'] } + ss.resource_bundle = { 'HockeySDKResources' => ['HockeySDK-iOS/HockeySDKAllFeatures/HockeySDK.embeddedframework/HockeySDKResources.bundle/*.png', 'HockeySDK-iOS/HockeySDKAllFeatures/HockeySDK.embeddedframework/HockeySDKResources.bundle/*.lproj'] } ss.frameworks = 'AssetsLibrary', 'CoreGraphics', 'CoreText', 'CoreTelephony', 'MobileCoreServices', 'Photos', 'QuartzCore', 'QuickLook', 'UIKit' ss.libraries = 'z' diff --git a/README.md b/README.md index 6428360374..2c966a2ef5 100644 --- a/README.md +++ b/README.md @@ -2,18 +2,20 @@ [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) [![Version](http://cocoapod-badges.herokuapp.com/v/HockeySDK/badge.png)](http://cocoadocs.org/docsets/HockeySDK) -## Version 4.1.1 +## Version 4.1.2 -- [Changelog](http://www.hockeyapp.net/help/sdk/ios/4.1.1/docs/docs/Changelog.html) +- [Changelog](http://www.hockeyapp.net/help/sdk/ios/4.1.2/docs/docs/Changelog.html) + +**NOTE** If your are using the binary integration of our SDK, make sure that the `HockeySDKResources.bundle` inside the `HockeySDK.embeddedframework`-folder has been added to your application. ### Feedback and iOS 10 **4.1.1 of the HockeySDK removes the Feedback feature from the default version of the SDK.** -The reason for this is that iOS 10 requires developers to add a usage string to their Info.plist in case they include the photos framework in their app. If this string is missing, the app will be rejected when submitting the app to the app store. As HockeyApp's Feedback feature includes a dependency to the photos framework. This means that if you include HockeyApp into your app, adding the usage string would be a requirement even for developers who don't use the Feedback feature. If you don't use Feedback in your app, simply upgrade HockeySDK to version 4.1.1. If you are using Feedback, please have a look at the [Feedback section](#feedback). +The reason for this is that iOS 10 requires developers to add a usage string to their Info.plist in case they include the photos framework in their app. If this string is missing, the app will be rejected when submitting the app to the app store. As HockeyApp's Feedback feature includes a dependency to the photos framework. This means that if you include HockeyApp into your app, adding the usage string would be a requirement even for developers who don't use the Feedback feature. If you don't use Feedback in your app, simply upgrade HockeySDK to version 4.1.1 or newer. If you are using Feedback, please have a look at the [Feedback section](#feedback). -We **strongly** suggest upgrading to version 4.1.1 of the SDK. Not specifying the usage description string and using previous versions of the HockeySDK-iOS will cause the app to crash at runtime as soon as the user taps the "attach image"-button or in case you have enabled `BITFeedbackObservationModeOnScreenshot`. +We **strongly** suggest upgrading to version 4.1.1 or a later version of the SDK. Not specifying the usage description string and using previous versions of the HockeySDK-iOS will cause the app to crash at runtime as soon as the user taps the "attach image"-button or in case you have enabled `BITFeedbackObservationModeOnScreenshot`. -If you are using an older version of the SDK, you have to add a `NSPhotoLibraryUsageDescription` to your `Info.plist` to avoid a AppStore rejection during upload of your app (please have a look at the [Feedback section](#feedback)). +If you are using an older version of the SDK, you must add a `NSPhotoLibraryUsageDescription` to your `Info.plist` to avoid a AppStore rejection during upload of your app (please have a look at the [Feedback section](#feedback)). ## Introduction @@ -82,7 +84,7 @@ From our experience, 3rd-party libraries usually reside inside a subdirectory (l The SDK comes in four flavours: - * Default SDK without Feedback `HockeySDK.embeddedframework` + * Default SDK without Feedback: `HockeySDK.embeddedframework` * Full featured SDK with Feedback: `HockeySDK.embeddedframework` in the subfolder `HockeySDKAllFeatures`. * Crash reporting only: `HockeySDK.framework` in the subfolder `HockeySDKCrashOnly`. * Crash reporting only for extensions: `HockeySDK.framework` in the subfolder `HockeySDKCrashOnlyExtension` (which is required to be used for extensions). @@ -283,6 +285,8 @@ To add HockeySDK to your project, simply put this line into your `Cartfile`: and then follow the steps described in the [Carthage documentation](https://github.com/Carthage/Carthage#if-youre-building-for-ios-tvos-or-watchos). +For now, this will integrate the **full-featured SDK** so you must include the `NSPhotoLibraryUsageDescription` and read the [feedback section](#feedback). + ### 3.4 iOS Extensions @@ -385,7 +389,7 @@ The following options only show some of possibilities to interact and fine-tune #### 3.6.1 Disable Crash Reporting The HockeySDK enables crash reporting **per default**. Crashes will be immediately sent to the server the next time the app is launched. -To provide you with the best crash reporting, we are using [PLCrashReporter]("https://github.com/plausiblelabs/plcrashreporter") in [Version 1.2 / Commit 356901d7f3ca3d46fbc8640f469304e2b755e461]("https://github.com/plausiblelabs/plcrashreporter/commit/356901d7f3ca3d46fbc8640f469304e2b755e461"). +To provide you with the best crash reporting, we are using [PLCrashReporter]("https://github.com/plausiblelabs/plcrashreporter") in [Version 1.3 / Commit 05d34741d3a90bbed51214983110943831ae5943]("https://github.com/plausiblelabs/plcrashreporter/commit/05d34741d3a90bbed51214983110943831ae5943"). This feature can be disabled as follows: @@ -467,9 +471,11 @@ and set the delegate: ### 3.7 User Metrics HockeyApp automatically provides you with nice, intelligible, and informative metrics about how your app is used and by whom. + - **Sessions**: A new session is tracked by the SDK whenever the containing app is restarted (this refers to a 'cold start', i.e. when the app has not already been in memory prior to being launched) or whenever it becomes active again after having been in the background for 20 seconds or more. - **Users**: The SDK anonymously tracks the users of your app by creating a random UUID that is then securely stored in the iOS keychain. Because this anonymous ID is stored in the keychain it persists across reinstallations. - **Custom Events**: With HockeySDK 4.1.0 you can now track Custom Events in your app, understand user actions and see the aggregates on the HockeyApp portal. +- **Batching & offline behavior**: The SDK batches up to 50 events or waits for 15s and then persist and send the events, whichever comes first. So for sessions, this might actually mean we send 1 single event per batch. If you are sending Custom Events, it can be 1 session event plus X of your Custom Events (up to 50 events per batch total). In case the device is offline, up to 300 events are stored until the SDK starts to drop new events. Just in case you want to opt-out of the automatic collection of anonymous users and sessions statistics, there is a way to turn this functionality off at any time: @@ -508,7 +514,7 @@ metricsManager.trackEventWithName(eventName) #### 3.7.2 Attaching custom properties and measurements to a custom event -It's possible to attach porperties and/or measurements to a custom event. +It's possible to attach properties and/or measurements to a custom event. There is one limitation to attaching properties and measurements. They currently don't show up in the HockeyApp dashboard but you have to link your app to Application Insights to be able to query them. Please have a look at [our blogpost](https://www.hockeyapp.net/blog/2016/08/30/custom-events-public-preview.html) to find out how to do that. - Properties have to be a string. - Measurements have to be of a numeric type. @@ -538,7 +544,6 @@ let metricsManager = BITHockeyManager.sharedHockeyManager().metricsManager metricsManager.trackEventWithName(eventName, properties: myProperties, myMeasurements: measurements) ``` - ### 3.8 Feedback @@ -629,7 +634,7 @@ To check if data is send properly to HockeyApp and also see some additional SDK ## 4. Documentation -Our documentation can be found on [HockeyApp](http://hockeyapp.net/help/sdk/ios/4.1.1/index.html). +Our documentation can be found on [HockeyApp](http://hockeyapp.net/help/sdk/ios/4.1.2/index.html). ## 5.Troubleshooting @@ -643,7 +648,7 @@ Our documentation can be found on [HockeyApp](http://hockeyapp.net/help/sdk/ios/ Make sure none of the following files are copied into your app bundle, check under app target, `Build Phases`, `Copy Bundle Resources` or in the `.app` bundle after building: - `HockeySDK.framework` (except if you build a dynamic framework version of the SDK yourself!) - - `de.bitstadium.HockeySDK-iOS-4.1.1.docset` + - `de.bitstadium.HockeySDK-iOS-4.1.2.docset` ### Feature are not working as expected diff --git a/Support/HockeySDK.xcodeproj/project.pbxproj b/Support/HockeySDK.xcodeproj/project.pbxproj index f46ed6a783..6631a9b41e 100644 --- a/Support/HockeySDK.xcodeproj/project.pbxproj +++ b/Support/HockeySDK.xcodeproj/project.pbxproj @@ -1775,7 +1775,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "# Default config\n# Sets the target folders and the final framework product.\nFMK_NAME=HockeySDK\nFMK_RESOURCE_BUNDLE=HockeySDKResources\nFMK_iOS8_NAME=\"HockeySDK Framework\"\n\n# Documentation\nHOCKEYSDK_DOCSET_VERSION_NAME=\"de.bitstadium.${HOCKEYSDK_DOCSET_NAME}-${VERSION_STRING}\"\n\n# Install dir will be the final output to the framework.\n# The following line creates it in the root folder of the current project.\nPRODUCTS_DIR=${SRCROOT}/../Products\nZIP_FOLDER=HockeySDK-iOS\nTEMP_DIR=${PRODUCTS_DIR}/${ZIP_FOLDER}\nINSTALL_DIR=${TEMP_DIR}/${FMK_NAME}.framework\nALL_FEATURES_INSTALL_DIR=${TEMP_DIR}/HockeySDKAllFeatures/${FMK_NAME}.framework\n\n# Working dir will be deleted after the framework creation.\nWRK_DIR=build\nDEVICE_DIR=${WRK_DIR}/Release-iphoneos\nSIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator\nDEVICE_DIR_ALL_FEATURES=${WRK_DIR}/ReleaseAllFeatures-iphoneos\nSIMULATOR_DIR_ALL_FEATURES=${WRK_DIR}/ReleaseAllFeatures-iphonesimulator\nDEVICE_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnly-iphoneos\nSIMULATOR_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnly-iphonesimulator\nDEVICE_EXTENSIONS_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnlyExtensions-iphoneos\nSIMULATOR_EXTENSIONS_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnlyExtensions-iphonesimulator\nDEVICE_WATCH_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnlyWatchOS-iphoneos\nSIMULATOR_WATCH_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnlyWatchOS-iphonesimulator\n\n# //////////////////////////////\n# Building the SDK with all features except the Feedback Feature\n# //////////////////////////////\n\n# Building both architectures.\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"Release\" -target \"${FMK_NAME}\" -sdk iphoneos\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"Release\" -target \"${FMK_NAME}\" -sdk iphonesimulator\n\n# Cleaning the oldest.\nif [ -d \"${TEMP_DIR}\" ]\nthen\nrm -rf \"${TEMP_DIR}\"\nfi\n\n# Creates and renews the final product folder.\nmkdir -p \"${INSTALL_DIR}\"\nmkdir -p \"${INSTALL_DIR}/Headers\"\nmkdir -p \"${INSTALL_DIR}/Modules\"\n\n# Copy the swift import file\ncp -f \"${SRCROOT}/module_default.modulemap\" \"${INSTALL_DIR}/Modules/module.modulemap\"\n\n# Copies the headers and resources files to the final product folder.\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITAuthenticator.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITCrashAttachment.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITCrashDetails.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITCrashManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITCrashManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITCrashMetaData.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITHockeyAttachment.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITHockeyBaseManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITHockeyBaseViewController.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITHockeyManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITHockeyManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITMetricsManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITStoreUpdateManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITStoreUpdateManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITUpdateManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITUpdateManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITUpdateViewController.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/HockeySDK.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/HockeySDKEnums.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/HockeySDKFeatureConfig.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/HockeySDKNullability.h\" \"${INSTALL_DIR}/Headers/\"\n\n# Copy the resource bundle\n#cp -R \"${DEVICE_DIR}/${FMK_RESOURCE_BUNDLE}.bundle\" \"${INSTALL_DIR}/Resources/\"\n\n# Copy the patched feature header\ncp -f \"${SRCROOT}/HockeySDKFeatureConfigDefault.h\" \"${INSTALL_DIR}/Headers/HockeySDKFeatureConfig.h\"\n\n# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.\nlipo -create \"${DEVICE_DIR}/lib${FMK_NAME}.a\" \"${SIMULATOR_DIR}/lib${FMK_NAME}.a\" -output \"${INSTALL_DIR}/${FMK_NAME}\"\n\n# Combine the CrashReporter static library into a new Hockey static library file if they are not already present and copy the public headers too\nif [ -z $(otool -L \"${INSTALL_DIR}/${FMK_NAME}\" | grep 'libCrashReporter') ]\nthen\nlibtool -static -o \"${INSTALL_DIR}/${FMK_NAME}\" \"${INSTALL_DIR}/${FMK_NAME}\" \"${SRCROOT}/../Vendor/CrashReporter.framework/Versions/A/CrashReporter\"\nfi\n\n# build embeddedframework folder and move framework into it\nmkdir \"${INSTALL_DIR}/../${FMK_NAME}.embeddedframework\"\nmv \"${INSTALL_DIR}\" \"${INSTALL_DIR}/../${FMK_NAME}.embeddedframework/${FMK_NAME}.framework\"\nmv \"${DEVICE_DIR}/${FMK_RESOURCE_BUNDLE}.bundle\" \"${TEMP_DIR}/${FMK_NAME}.embeddedframework/\"\n\nrm -r \"${WRK_DIR}\"\n\n# //////////////////////////////\n# Building the full featured SDK\n# //////////////////////////////\n\n# Building both architectures.\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseAllFeatures\" -target \"${FMK_NAME}\" -sdk iphoneos\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseAllFeatures\" -target \"${FMK_NAME}\" -sdk iphonesimulator\n\n# Creates and renews the final product folder.\nmkdir -p \"${ALL_FEATURES_INSTALL_DIR}\"\nmkdir -p \"${ALL_FEATURES_INSTALL_DIR}/Headers\"\nmkdir -p \"${ALL_FEATURES_INSTALL_DIR}/Modules\"\n\n# Copy the swift import file\ncp -f \"${SRCROOT}/module_allfeatures.modulemap\" \"${ALL_FEATURES_INSTALL_DIR}/Modules/module.modulemap\"\n\n# Copies the headers and resources files to the final product folder.\ncp -R \"${DEVICE_DIR_ALL_FEATURES}/include/HockeySDK/\" \"${ALL_FEATURES_INSTALL_DIR}/Headers/\"\n\n# Use the Lipo Tool to merge both binary files (i386/x86_64 + armv7/armv7s/arm64) into one Universal final product.\nlipo -create \"${DEVICE_DIR_ALL_FEATURES}/lib${FMK_NAME}.a\" \"${SIMULATOR_DIR_ALL_FEATURES}/lib${FMK_NAME}.a\" -output \"${ALL_FEATURES_INSTALL_DIR}/${FMK_NAME}\"\n\n# Combine the CrashReporter static library into a new Hockey static library file if they are not already present and copy the public headers too\nif [ -z $(otool -L \"${ALL_FEATURES_INSTALL_DIR}/${FMK_NAME}\" | grep 'libCrashReporter') ]\nthen\nlibtool -static -o \"${ALL_FEATURES_INSTALL_DIR}/${FMK_NAME}\" \"${ALL_FEATURES_INSTALL_DIR}/${FMK_NAME}\" \"${SRCROOT}/../Vendor/CrashReporter.framework/Versions/A/CrashReporter\"\nfi\n\n# build embeddedframework folder and move framework into it\nmkdir \"${ALL_FEATURES_INSTALL_DIR}/../${FMK_NAME}.embeddedframework\"\nmv \"${ALL_FEATURES_INSTALL_DIR}/\" \"${ALL_FEATURES_INSTALL_DIR}/../${FMK_NAME}.embeddedframework/${FMK_NAME}.framework\"\nmv \"${DEVICE_DIR_ALL_FEATURES}/${FMK_RESOURCE_BUNDLE}.bundle\" \"${TEMP_DIR}/HockeySDKAllFeatures/${FMK_NAME}.embeddedframework/\"\n\n# do some cleanup\nrm -r \"${WRK_DIR}\"\n\n# /////////////////////////////////////////////\n# Building the crash only SDK without resources\n# /////////////////////////////////////////////\n\n# Building both architectures.\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseCrashOnly\" -target \"${FMK_NAME}\" -sdk iphoneos\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseCrashOnly\" -target \"${FMK_NAME}\" -sdk iphonesimulator\n\n# Creates and renews the final product folder.\nmkdir -p \"${INSTALL_DIR}\"\nmkdir -p \"${INSTALL_DIR}/Headers\"\nmkdir -p \"${INSTALL_DIR}/Modules\"\n\n# Copy the swift import file\ncp -f \"${SRCROOT}/module_crashonly.modulemap\" \"${INSTALL_DIR}/Modules/module.modulemap\"\n\n# Copies the headers without the resources files to the final product folder.\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}\"/include/HockeySDK/BITCrash*.h \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/BITMetricsManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyAttachment.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyBaseManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDK.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDKNullability.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDKEnums.h\" \"${INSTALL_DIR}/Headers/\"\n\n# Copy the patched feature header\ncp -f \"${SRCROOT}/HockeySDKCrashOnlyConfig.h\" \"${INSTALL_DIR}/Headers/HockeySDKFeatureConfig.h\"\n\n# Uses the Lipo Tool to merge both binary files (i386/x86_64 + armv7/armv7s/arm64) into one Universal final product.\nlipo -create \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/lib${FMK_NAME}.a\" \"${SRCROOT}/${SIMULATOR_CRASH_ONLY_DIR}/lib${FMK_NAME}.a\" -output \"${INSTALL_DIR}/${FMK_NAME}\"\n\n# Combine the CrashReporter static library into a new Hockey static library file if they are not already present and copy the public headers too\nif [ -z $(otool -L \"${INSTALL_DIR}/${FMK_NAME}\" | grep 'libCrashReporter') ]\nthen\nlibtool -static -o \"${INSTALL_DIR}/${FMK_NAME}\" \"${INSTALL_DIR}/${FMK_NAME}\" \"${SRCROOT}/../Vendor/CrashReporter.framework/Versions/A/CrashReporter\"\nfi\n\n# Move the crash reporting only framework into a new folder\nmkdir \"${INSTALL_DIR}/../${FMK_NAME}CrashOnly\"\nmv \"${INSTALL_DIR}\" \"${INSTALL_DIR}/../${FMK_NAME}CrashOnly/${FMK_NAME}.framework\"\n\nrm -r \"${WRK_DIR}\"\n\n# ////////////////////////////////////////////////////////\n# Building the extensions crash only SDK without resources\n# ////////////////////////////////////////////////////////\n\n# Building both architectures.\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseCrashOnlyExtensions\" -target \"${FMK_NAME}\" -sdk iphoneos\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseCrashOnlyExtensions\" -target \"${FMK_NAME}\" -sdk iphonesimulator\n\n# Creates and renews the final product folder.\nmkdir -p \"${INSTALL_DIR}\"\nmkdir -p \"${INSTALL_DIR}/Headers\"\nmkdir -p \"${INSTALL_DIR}/Modules\"\n\n# Copy the swift import file\ncp -f \"${SRCROOT}/module_crashonly.modulemap\" \"${INSTALL_DIR}/Modules/module.modulemap\"\n\n# Copies the headers without the resources files to the final product folder.\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}\"/include/HockeySDK/BITCrash*.h \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyAttachment.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyBaseManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDK.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDKNullability.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDKEnums.h\" \"${INSTALL_DIR}/Headers/\"\n\n# Copy the patched feature header\ncp -f \"${SRCROOT}/HockeySDKCrashOnlyExtensionConfig.h\" \"${INSTALL_DIR}/Headers/HockeySDKFeatureConfig.h\"\n\n# Uses the Lipo Tool to merge both binary files (i386/x86_64 + armv7/armv7s/arm64) into one Universal final product.\nlipo -create \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/lib${FMK_NAME}.a\" \"${SRCROOT}/${SIMULATOR_EXTENSIONS_CRASH_ONLY_DIR}/lib${FMK_NAME}.a\" -output \"${INSTALL_DIR}/${FMK_NAME}\"\n\n# Combine the CrashReporter static library into a new Hockey static library file if they are not already present and copy the public headers too\nif [ -z $(otool -L \"${INSTALL_DIR}/${FMK_NAME}\" | grep 'libCrashReporter') ]\nthen\nlibtool -static -o \"${INSTALL_DIR}/${FMK_NAME}\" \"${INSTALL_DIR}/${FMK_NAME}\" \"${SRCROOT}/../Vendor/CrashReporter.framework/Versions/A/CrashReporter\"\nfi\n\n# Move the crash reporting only framework into a new folder\nmkdir \"${INSTALL_DIR}/../${FMK_NAME}CrashOnlyExtension\"\nmv \"${INSTALL_DIR}\" \"${INSTALL_DIR}/../${FMK_NAME}CrashOnlyExtension/${FMK_NAME}.framework\"\n\nrm -r \"${WRK_DIR}\"\n\n# //////////////////////////////\n# Final steps: move documentation and create zip-file\n# //////////////////////////////\n\n# copy license, changelog, documentation, integration json\ncp -f \"${SRCROOT}/../Docs/Changelog-template.md\" \"${TEMP_DIR}/CHANGELOG\"\ncp -f \"${SRCROOT}/../Docs/Guide-Installation-Setup-template.md\" \"${TEMP_DIR}/README.md\"\ncp -f \"${SRCROOT}/../LICENSE\" \"${TEMP_DIR}\"\nmkdir \"${TEMP_DIR}/${HOCKEYSDK_DOCSET_VERSION_NAME}.docset\"\ncp -R \"${SRCROOT}/../documentation/docset/Contents\" \"${TEMP_DIR}/${HOCKEYSDK_DOCSET_VERSION_NAME}.docset\"\n\n# build zip\ncd \"${PRODUCTS_DIR}\"\nrm -f \"${FMK_NAME}-iOS-${VERSION_STRING}.zip\"\nzip -yr \"${FMK_NAME}-iOS-${VERSION_STRING}.zip\" \"${ZIP_FOLDER}\" -x \\*/.*\n\ncd \"${ZIP_FOLDER}\"\nrm -f \"${FMK_NAME}-iOS-documentation-${VERSION_STRING}.zip\"\nzip -yr \"${FMK_NAME}-iOS-documentation-${VERSION_STRING}.zip\" \"${HOCKEYSDK_DOCSET_VERSION_NAME}.docset\" -x \\*/.*\nmv \"${FMK_NAME}-iOS-documentation-${VERSION_STRING}.zip\" \"../\"\n"; + shellScript = "#Original\n\n# Default config\n# Sets the target folders and the final framework product.\nFMK_NAME=HockeySDK\nFMK_RESOURCE_BUNDLE=HockeySDKResources\nFMK_iOS8_NAME=\"HockeySDK Framework\"\n\n# Documentation\nHOCKEYSDK_DOCSET_VERSION_NAME=\"de.bitstadium.${HOCKEYSDK_DOCSET_NAME}-${VERSION_STRING}\"\n\n# Install dir will be the final output to the framework.\n# The following line creates it in the root folder of the current project.\nPRODUCTS_DIR=${SRCROOT}/../Products\nZIP_FOLDER=HockeySDK-iOS\nTEMP_DIR=${PRODUCTS_DIR}/${ZIP_FOLDER}\nINSTALL_DIR=${TEMP_DIR}/${FMK_NAME}.framework\nALL_FEATURES_INSTALL_DIR=${TEMP_DIR}/HockeySDKAllFeatures/${FMK_NAME}.framework\n\n# Working dir will be deleted after the framework creation.\nWRK_DIR=build\nDEVICE_DIR=${WRK_DIR}/ReleaseDefault-iphoneos\nSIMULATOR_DIR=${WRK_DIR}/ReleaseDefault-iphonesimulator\nDEVICE_DIR_ALL_FEATURES=${WRK_DIR}/Release-iphoneos\nSIMULATOR_DIR_ALL_FEATURES=${WRK_DIR}/Release-iphonesimulator\nDEVICE_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnly-iphoneos\nSIMULATOR_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnly-iphonesimulator\nDEVICE_EXTENSIONS_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnlyExtensions-iphoneos\nSIMULATOR_EXTENSIONS_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnlyExtensions-iphonesimulator\nDEVICE_WATCH_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnlyWatchOS-iphoneos\nSIMULATOR_WATCH_CRASH_ONLY_DIR=${WRK_DIR}/ReleaseCrashOnlyWatchOS-iphonesimulator\n\n# //////////////////////////////\n# Building the SDK with all features except the Feedback Feature\n# //////////////////////////////\n\n# Building both architectures.\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseDefault\" -target \"${FMK_NAME}\" -sdk iphoneos\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseDefault\" -target \"${FMK_NAME}\" -sdk iphonesimulator\n\n# Cleaning the oldest.\nif [ -d \"${TEMP_DIR}\" ]\nthen\nrm -rf \"${TEMP_DIR}\"\nfi\n\n# Creates and renews the final product folder.\nmkdir -p \"${INSTALL_DIR}\"\nmkdir -p \"${INSTALL_DIR}/Headers\"\nmkdir -p \"${INSTALL_DIR}/Modules\"\n\n# Copy the swift import file\ncp -f \"${SRCROOT}/module_default.modulemap\" \"${INSTALL_DIR}/Modules/module.modulemap\"\n\n# Copies the headers and resources files to the final product folder.\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITAuthenticator.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITCrashAttachment.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITCrashDetails.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITCrashManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITCrashManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITCrashMetaData.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITHockeyAttachment.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITHockeyBaseManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITHockeyBaseViewController.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITHockeyManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITHockeyManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITMetricsManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITStoreUpdateManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITStoreUpdateManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITUpdateManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITUpdateManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/BITUpdateViewController.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/HockeySDK.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/HockeySDKEnums.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/HockeySDKFeatureConfig.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_DIR}/include/HockeySDK/HockeySDKNullability.h\" \"${INSTALL_DIR}/Headers/\"\n\n# Copy the resource bundle\n#cp -R \"${DEVICE_DIR}/${FMK_RESOURCE_BUNDLE}.bundle\" \"${INSTALL_DIR}/Resources/\"\n\n# Copy the patched feature header\ncp -f \"${SRCROOT}/HockeySDKFeatureConfigDefault.h\" \"${INSTALL_DIR}/Headers/HockeySDKFeatureConfig.h\"\n\n# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.\nlipo -create \"${DEVICE_DIR}/lib${FMK_NAME}.a\" \"${SIMULATOR_DIR}/lib${FMK_NAME}.a\" -output \"${INSTALL_DIR}/${FMK_NAME}\"\n\n# Combine the CrashReporter static library into a new Hockey static library file if they are not already present and copy the public headers too\nif [ -z $(otool -L \"${INSTALL_DIR}/${FMK_NAME}\" | grep 'libCrashReporter') ]\nthen\nlibtool -static -o \"${INSTALL_DIR}/${FMK_NAME}\" \"${INSTALL_DIR}/${FMK_NAME}\" \"${SRCROOT}/../Vendor/CrashReporter.framework/Versions/A/CrashReporter\"\nfi\n\n# build embeddedframework folder and move framework into it\nmkdir \"${INSTALL_DIR}/../${FMK_NAME}.embeddedframework\"\nmv \"${INSTALL_DIR}\" \"${INSTALL_DIR}/../${FMK_NAME}.embeddedframework/${FMK_NAME}.framework\"\nmv \"${DEVICE_DIR}/${FMK_RESOURCE_BUNDLE}.bundle\" \"${TEMP_DIR}/${FMK_NAME}.embeddedframework/\"\n\nrm -r \"${WRK_DIR}\"\n\n# //////////////////////////////\n# Building the full featured SDK\n# //////////////////////////////\n\n# Building both architectures.\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"Release\" -target \"${FMK_NAME}\" -sdk iphoneos\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"Release\" -target \"${FMK_NAME}\" -sdk iphonesimulator\n\n# Creates and renews the final product folder.\nmkdir -p \"${ALL_FEATURES_INSTALL_DIR}\"\nmkdir -p \"${ALL_FEATURES_INSTALL_DIR}/Headers\"\nmkdir -p \"${ALL_FEATURES_INSTALL_DIR}/Modules\"\n\n# Copy the swift import file\ncp -f \"${SRCROOT}/module_allfeatures.modulemap\" \"${ALL_FEATURES_INSTALL_DIR}/Modules/module.modulemap\"\n\n# Copies the headers and resources files to the final product folder.\ncp -R \"${DEVICE_DIR_ALL_FEATURES}/include/HockeySDK/\" \"${ALL_FEATURES_INSTALL_DIR}/Headers/\"\n\n# Use the Lipo Tool to merge both binary files (i386/x86_64 + armv7/armv7s/arm64) into one Universal final product.\nlipo -create \"${DEVICE_DIR_ALL_FEATURES}/lib${FMK_NAME}.a\" \"${SIMULATOR_DIR_ALL_FEATURES}/lib${FMK_NAME}.a\" -output \"${ALL_FEATURES_INSTALL_DIR}/${FMK_NAME}\"\n\n# Combine the CrashReporter static library into a new Hockey static library file if they are not already present and copy the public headers too\nif [ -z $(otool -L \"${ALL_FEATURES_INSTALL_DIR}/${FMK_NAME}\" | grep 'libCrashReporter') ]\nthen\nlibtool -static -o \"${ALL_FEATURES_INSTALL_DIR}/${FMK_NAME}\" \"${ALL_FEATURES_INSTALL_DIR}/${FMK_NAME}\" \"${SRCROOT}/../Vendor/CrashReporter.framework/Versions/A/CrashReporter\"\nfi\n\n# build embeddedframework folder and move framework into it\nmkdir \"${ALL_FEATURES_INSTALL_DIR}/../${FMK_NAME}.embeddedframework\"\nmv \"${ALL_FEATURES_INSTALL_DIR}/\" \"${ALL_FEATURES_INSTALL_DIR}/../${FMK_NAME}.embeddedframework/${FMK_NAME}.framework\"\nmv \"${DEVICE_DIR_ALL_FEATURES}/${FMK_RESOURCE_BUNDLE}.bundle\" \"${TEMP_DIR}/HockeySDKAllFeatures/${FMK_NAME}.embeddedframework/\"\n\n# do some cleanup\nrm -r \"${WRK_DIR}\"\n\n# /////////////////////////////////////////////\n# Building the crash only SDK without resources\n# /////////////////////////////////////////////\n\n# Building both architectures.\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseCrashOnly\" -target \"${FMK_NAME}\" -sdk iphoneos\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseCrashOnly\" -target \"${FMK_NAME}\" -sdk iphonesimulator\n\n# Creates and renews the final product folder.\nmkdir -p \"${INSTALL_DIR}\"\nmkdir -p \"${INSTALL_DIR}/Headers\"\nmkdir -p \"${INSTALL_DIR}/Modules\"\n\n# Copy the swift import file\ncp -f \"${SRCROOT}/module_crashonly.modulemap\" \"${INSTALL_DIR}/Modules/module.modulemap\"\n\n# Copies the headers without the resources files to the final product folder.\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}\"/include/HockeySDK/BITCrash*.h \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/BITMetricsManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyAttachment.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyBaseManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDK.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDKNullability.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDKEnums.h\" \"${INSTALL_DIR}/Headers/\"\n\n# Copy the patched feature header\ncp -f \"${SRCROOT}/HockeySDKCrashOnlyConfig.h\" \"${INSTALL_DIR}/Headers/HockeySDKFeatureConfig.h\"\n\n# Uses the Lipo Tool to merge both binary files (i386/x86_64 + armv7/armv7s/arm64) into one Universal final product.\nlipo -create \"${SRCROOT}/${DEVICE_CRASH_ONLY_DIR}/lib${FMK_NAME}.a\" \"${SRCROOT}/${SIMULATOR_CRASH_ONLY_DIR}/lib${FMK_NAME}.a\" -output \"${INSTALL_DIR}/${FMK_NAME}\"\n\n# Combine the CrashReporter static library into a new Hockey static library file if they are not already present and copy the public headers too\nif [ -z $(otool -L \"${INSTALL_DIR}/${FMK_NAME}\" | grep 'libCrashReporter') ]\nthen\nlibtool -static -o \"${INSTALL_DIR}/${FMK_NAME}\" \"${INSTALL_DIR}/${FMK_NAME}\" \"${SRCROOT}/../Vendor/CrashReporter.framework/Versions/A/CrashReporter\"\nfi\n\n# Move the crash reporting only framework into a new folder\nmkdir \"${INSTALL_DIR}/../${FMK_NAME}CrashOnly\"\nmv \"${INSTALL_DIR}\" \"${INSTALL_DIR}/../${FMK_NAME}CrashOnly/${FMK_NAME}.framework\"\n\nrm -r \"${WRK_DIR}\"\n\n# ////////////////////////////////////////////////////////\n# Building the extensions crash only SDK without resources\n# ////////////////////////////////////////////////////////\n\n# Building both architectures.\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseCrashOnlyExtensions\" -target \"${FMK_NAME}\" -sdk iphoneos\nxcodebuild -project \"HockeySDK.xcodeproj\" -configuration \"ReleaseCrashOnlyExtensions\" -target \"${FMK_NAME}\" -sdk iphonesimulator\n\n# Creates and renews the final product folder.\nmkdir -p \"${INSTALL_DIR}\"\nmkdir -p \"${INSTALL_DIR}/Headers\"\nmkdir -p \"${INSTALL_DIR}/Modules\"\n\n# Copy the swift import file\ncp -f \"${SRCROOT}/module_crashonly.modulemap\" \"${INSTALL_DIR}/Modules/module.modulemap\"\n\n# Copies the headers without the resources files to the final product folder.\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}\"/include/HockeySDK/BITCrash*.h \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyAttachment.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyBaseManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyManager.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/BITHockeyManagerDelegate.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDK.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDKNullability.h\" \"${INSTALL_DIR}/Headers/\"\ncp -R \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/include/HockeySDK/HockeySDKEnums.h\" \"${INSTALL_DIR}/Headers/\"\n\n# Copy the patched feature header\ncp -f \"${SRCROOT}/HockeySDKCrashOnlyExtensionConfig.h\" \"${INSTALL_DIR}/Headers/HockeySDKFeatureConfig.h\"\n\n# Uses the Lipo Tool to merge both binary files (i386/x86_64 + armv7/armv7s/arm64) into one Universal final product.\nlipo -create \"${SRCROOT}/${DEVICE_EXTENSIONS_CRASH_ONLY_DIR}/lib${FMK_NAME}.a\" \"${SRCROOT}/${SIMULATOR_EXTENSIONS_CRASH_ONLY_DIR}/lib${FMK_NAME}.a\" -output \"${INSTALL_DIR}/${FMK_NAME}\"\n\n# Combine the CrashReporter static library into a new Hockey static library file if they are not already present and copy the public headers too\nif [ -z $(otool -L \"${INSTALL_DIR}/${FMK_NAME}\" | grep 'libCrashReporter') ]\nthen\nlibtool -static -o \"${INSTALL_DIR}/${FMK_NAME}\" \"${INSTALL_DIR}/${FMK_NAME}\" \"${SRCROOT}/../Vendor/CrashReporter.framework/Versions/A/CrashReporter\"\nfi\n\n# Move the crash reporting only framework into a new folder\nmkdir \"${INSTALL_DIR}/../${FMK_NAME}CrashOnlyExtension\"\nmv \"${INSTALL_DIR}\" \"${INSTALL_DIR}/../${FMK_NAME}CrashOnlyExtension/${FMK_NAME}.framework\"\n\nrm -r \"${WRK_DIR}\"\n\n# //////////////////////////////\n# Final steps: move documentation and create zip-file\n# //////////////////////////////\n\n# copy license, changelog, documentation, integration json\ncp -f \"${SRCROOT}/../Docs/Changelog-template.md\" \"${TEMP_DIR}/CHANGELOG\"\ncp -f \"${SRCROOT}/../Docs/Guide-Installation-Setup-template.md\" \"${TEMP_DIR}/README.md\"\ncp -f \"${SRCROOT}/../LICENSE\" \"${TEMP_DIR}\"\nmkdir \"${TEMP_DIR}/${HOCKEYSDK_DOCSET_VERSION_NAME}.docset\"\ncp -R \"${SRCROOT}/../documentation/docset/Contents\" \"${TEMP_DIR}/${HOCKEYSDK_DOCSET_VERSION_NAME}.docset\"\n\n# build zip\ncd \"${PRODUCTS_DIR}\"\nrm -f \"${FMK_NAME}-iOS-${VERSION_STRING}.zip\"\nzip -yr \"${FMK_NAME}-iOS-${VERSION_STRING}.zip\" \"${ZIP_FOLDER}\" -x \\*/.*\n\ncd \"${ZIP_FOLDER}\"\nrm -f \"${FMK_NAME}-iOS-documentation-${VERSION_STRING}.zip\"\nzip -yr \"${FMK_NAME}-iOS-documentation-${VERSION_STRING}.zip\" \"${HOCKEYSDK_DOCSET_VERSION_NAME}.docset\" -x \\*/.*\nmv \"${FMK_NAME}-iOS-documentation-${VERSION_STRING}.zip\" \"../\"\n"; }; 1E8E66B215BC3D8200632A2E /* ShellScript */ = { isa = PBXShellScriptBuildPhase; @@ -2347,13 +2347,13 @@ }; name = Debug; }; - 1E4F61EC1621AD970033EFC5 /* Release */ = { + 1E4F61EC1621AD970033EFC5 /* ReleaseDefault */ = { isa = XCBuildConfiguration; buildSettings = { PRODUCT_BUNDLE_IDENTIFIER = net.hockeyapp.sdk.ios; PRODUCT_NAME = HockeySDK.framework; }; - name = Release; + name = ReleaseDefault; }; 1E5954F015B6F24A00A03429 /* Debug */ = { isa = XCBuildConfiguration; @@ -2382,7 +2382,7 @@ }; name = Debug; }; - 1E5954F115B6F24A00A03429 /* Release */ = { + 1E5954F115B6F24A00A03429 /* ReleaseDefault */ = { isa = XCBuildConfiguration; buildSettings = { "ARCHS[sdk=iphonesimulator*]" = "$(BIT_SIM_ARCHS)"; @@ -2408,7 +2408,7 @@ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(BIT_SIM_ARCHS)"; WATCHOS_DEPLOYMENT_TARGET = 2.0; }; - name = Release; + name = ReleaseDefault; }; 1E59551515B6F45800A03429 /* Debug */ = { isa = XCBuildConfiguration; @@ -2423,7 +2423,7 @@ }; name = Debug; }; - 1E59551615B6F45800A03429 /* Release */ = { + 1E59551615B6F45800A03429 /* ReleaseDefault */ = { isa = XCBuildConfiguration; buildSettings = { GCC_THUMB_SUPPORT = NO; @@ -2434,7 +2434,7 @@ SKIP_INSTALL = YES; WRAPPER_EXTENSION = bundle; }; - name = Release; + name = ReleaseDefault; }; 1E5A45A016F0DFC200B55C04 /* Debug */ = { isa = XCBuildConfiguration; @@ -2499,7 +2499,7 @@ }; name = Debug; }; - 1E5A45A116F0DFC200B55C04 /* Release */ = { + 1E5A45A116F0DFC200B55C04 /* ReleaseDefault */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -2557,7 +2557,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; VALIDATE_PRODUCT = YES; }; - name = Release; + name = ReleaseDefault; }; 1E7DE39019D44D88009AB8E5 /* ReleaseCrashOnly */ = { isa = XCBuildConfiguration; @@ -2730,14 +2730,14 @@ }; name = Debug; }; - 1E8E66AF15BC3D7700632A2E /* Release */ = { + 1E8E66AF15BC3D7700632A2E /* ReleaseDefault */ = { isa = XCBuildConfiguration; buildSettings = { GCC_THUMB_SUPPORT = NO; PRODUCT_BUNDLE_IDENTIFIER = net.hockeyapp.sdk.ios; PRODUCT_NAME = "$(TARGET_NAME)"; }; - name = Release; + name = ReleaseDefault; }; 1EB617531B0A30480035A986 /* Debug */ = { isa = XCBuildConfiguration; @@ -2787,7 +2787,7 @@ }; name = Debug; }; - 1EB617551B0A30480035A986 /* Release */ = { + 1EB617551B0A30480035A986 /* ReleaseDefault */ = { isa = XCBuildConfiguration; buildSettings = { "ARCHS[sdk=iphonesimulator*]" = "$(BIT_SIM_ARCHS)"; @@ -2835,7 +2835,7 @@ VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Release; + name = ReleaseDefault; }; 1EB617561B0A30480035A986 /* ReleaseCrashOnly */ = { isa = XCBuildConfiguration; @@ -2957,7 +2957,7 @@ }; name = Debug; }; - 1EB6175A1B0A30480035A986 /* Release */ = { + 1EB6175A1B0A30480035A986 /* ReleaseDefault */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -3022,7 +3022,7 @@ VALIDATE_PRODUCT = YES; VALID_ARCHS = "armv7 arm64"; }; - name = Release; + name = ReleaseDefault; }; 1EB6175B1B0A30480035A986 /* ReleaseCrashOnly */ = { isa = XCBuildConfiguration; @@ -3091,7 +3091,7 @@ }; name = ReleaseCrashOnly; }; - B29855441D85EBC9007FF452 /* ReleaseAllFeatures */ = { + B29855441D85EBC9007FF452 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = B29855421D85EB5D007FF452 /* allfeatures.xcconfig */; buildSettings = { @@ -3133,9 +3133,9 @@ SDKROOT = iphoneos; VALIDATE_PRODUCT = NO; }; - name = ReleaseAllFeatures; + name = Release; }; - B29855451D85EBC9007FF452 /* ReleaseAllFeatures */ = { + B29855451D85EBC9007FF452 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { "ARCHS[sdk=iphonesimulator*]" = "$(BIT_SIM_ARCHS)"; @@ -3161,9 +3161,9 @@ "VALID_ARCHS[sdk=iphonesimulator*]" = "$(BIT_SIM_ARCHS)"; WATCHOS_DEPLOYMENT_TARGET = 2.0; }; - name = ReleaseAllFeatures; + name = Release; }; - B29855461D85EBC9007FF452 /* ReleaseAllFeatures */ = { + B29855461D85EBC9007FF452 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -3221,9 +3221,9 @@ PRODUCT_NAME = "$(TARGET_NAME)"; VALIDATE_PRODUCT = YES; }; - name = ReleaseAllFeatures; + name = Release; }; - B29855471D85EBC9007FF452 /* ReleaseAllFeatures */ = { + B29855471D85EBC9007FF452 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { GCC_THUMB_SUPPORT = NO; @@ -3234,9 +3234,9 @@ SKIP_INSTALL = YES; WRAPPER_EXTENSION = bundle; }; - name = ReleaseAllFeatures; + name = Release; }; - B29855481D85EBC9007FF452 /* ReleaseAllFeatures */ = { + B29855481D85EBC9007FF452 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { "ARCHS[sdk=iphonesimulator*]" = "$(BIT_SIM_ARCHS)"; @@ -3284,9 +3284,9 @@ VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = ReleaseAllFeatures; + name = Release; }; - B29855491D85EBC9007FF452 /* ReleaseAllFeatures */ = { + B29855491D85EBC9007FF452 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; @@ -3351,24 +3351,24 @@ VALIDATE_PRODUCT = YES; VALID_ARCHS = "armv7 arm64"; }; - name = ReleaseAllFeatures; + name = Release; }; - B298554A1D85EBC9007FF452 /* ReleaseAllFeatures */ = { + B298554A1D85EBC9007FF452 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { GCC_THUMB_SUPPORT = NO; PRODUCT_BUNDLE_IDENTIFIER = net.hockeyapp.sdk.ios; PRODUCT_NAME = "$(TARGET_NAME)"; }; - name = ReleaseAllFeatures; + name = Release; }; - B298554B1D85EBC9007FF452 /* ReleaseAllFeatures */ = { + B298554B1D85EBC9007FF452 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { PRODUCT_BUNDLE_IDENTIFIER = net.hockeyapp.sdk.ios; PRODUCT_NAME = HockeySDK.framework; }; - name = ReleaseAllFeatures; + name = Release; }; E400563C148D79B500EB22B9 /* Debug */ = { isa = XCBuildConfiguration; @@ -3421,7 +3421,7 @@ }; name = Debug; }; - E400563D148D79B500EB22B9 /* Release */ = { + E400563D148D79B500EB22B9 /* ReleaseDefault */ = { isa = XCBuildConfiguration; baseConfigurationReference = 1E45A90E1B78DB0C002CA772 /* default.xcconfig */; buildSettings = { @@ -3463,7 +3463,7 @@ SDKROOT = iphoneos; VALIDATE_PRODUCT = NO; }; - name = Release; + name = ReleaseDefault; }; /* End XCBuildConfiguration section */ @@ -3472,97 +3472,97 @@ isa = XCConfigurationList; buildConfigurations = ( 1E4F61EB1621AD970033EFC5 /* Debug */, - 1E4F61EC1621AD970033EFC5 /* Release */, - B298554B1D85EBC9007FF452 /* ReleaseAllFeatures */, + 1E4F61EC1621AD970033EFC5 /* ReleaseDefault */, + B298554B1D85EBC9007FF452 /* Release */, 1E7DE39419D44D88009AB8E5 /* ReleaseCrashOnly */, 1E27E6131B74F03000192AE2 /* ReleaseCrashOnlyExtensions */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = ReleaseAllFeatures; + defaultConfigurationName = Release; }; 1E5954EF15B6F24A00A03429 /* Build configuration list for PBXNativeTarget "HockeySDK" */ = { isa = XCConfigurationList; buildConfigurations = ( 1E5954F015B6F24A00A03429 /* Debug */, - 1E5954F115B6F24A00A03429 /* Release */, - B29855451D85EBC9007FF452 /* ReleaseAllFeatures */, + 1E5954F115B6F24A00A03429 /* ReleaseDefault */, + B29855451D85EBC9007FF452 /* Release */, 1E7DE39119D44D88009AB8E5 /* ReleaseCrashOnly */, 1E27E60D1B74F03000192AE2 /* ReleaseCrashOnlyExtensions */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = ReleaseAllFeatures; + defaultConfigurationName = Release; }; 1E59551415B6F45800A03429 /* Build configuration list for PBXNativeTarget "HockeySDKResources" */ = { isa = XCConfigurationList; buildConfigurations = ( 1E59551515B6F45800A03429 /* Debug */, - 1E59551615B6F45800A03429 /* Release */, - B29855471D85EBC9007FF452 /* ReleaseAllFeatures */, + 1E59551615B6F45800A03429 /* ReleaseDefault */, + B29855471D85EBC9007FF452 /* Release */, 1E7DE39219D44D88009AB8E5 /* ReleaseCrashOnly */, 1E27E60F1B74F03000192AE2 /* ReleaseCrashOnlyExtensions */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = ReleaseAllFeatures; + defaultConfigurationName = Release; }; 1E5A45A216F0DFC200B55C04 /* Build configuration list for PBXNativeTarget "HockeySDKTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 1E5A45A016F0DFC200B55C04 /* Debug */, - 1E5A45A116F0DFC200B55C04 /* Release */, - B29855461D85EBC9007FF452 /* ReleaseAllFeatures */, + 1E5A45A116F0DFC200B55C04 /* ReleaseDefault */, + B29855461D85EBC9007FF452 /* Release */, 1E7DE39519D44D88009AB8E5 /* ReleaseCrashOnly */, 1E27E60E1B74F03000192AE2 /* ReleaseCrashOnlyExtensions */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = ReleaseAllFeatures; + defaultConfigurationName = Release; }; 1E8E66B015BC3D7700632A2E /* Build configuration list for PBXAggregateTarget "HockeySDK Documentation" */ = { isa = XCConfigurationList; buildConfigurations = ( 1E8E66AE15BC3D7700632A2E /* Debug */, - 1E8E66AF15BC3D7700632A2E /* Release */, - B298554A1D85EBC9007FF452 /* ReleaseAllFeatures */, + 1E8E66AF15BC3D7700632A2E /* ReleaseDefault */, + B298554A1D85EBC9007FF452 /* Release */, 1E7DE39319D44D88009AB8E5 /* ReleaseCrashOnly */, 1E27E6121B74F03000192AE2 /* ReleaseCrashOnlyExtensions */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = ReleaseAllFeatures; + defaultConfigurationName = Release; }; 1EB617521B0A30480035A986 /* Build configuration list for PBXNativeTarget "HockeySDK Framework" */ = { isa = XCConfigurationList; buildConfigurations = ( 1EB617531B0A30480035A986 /* Debug */, - 1EB617551B0A30480035A986 /* Release */, - B29855481D85EBC9007FF452 /* ReleaseAllFeatures */, + 1EB617551B0A30480035A986 /* ReleaseDefault */, + B29855481D85EBC9007FF452 /* Release */, 1EB617561B0A30480035A986 /* ReleaseCrashOnly */, 1E27E6101B74F03000192AE2 /* ReleaseCrashOnlyExtensions */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = ReleaseAllFeatures; + defaultConfigurationName = Release; }; 1EB617571B0A30480035A986 /* Build configuration list for PBXNativeTarget "HockeySDK FrameworkTests" */ = { isa = XCConfigurationList; buildConfigurations = ( 1EB617581B0A30480035A986 /* Debug */, - 1EB6175A1B0A30480035A986 /* Release */, - B29855491D85EBC9007FF452 /* ReleaseAllFeatures */, + 1EB6175A1B0A30480035A986 /* ReleaseDefault */, + B29855491D85EBC9007FF452 /* Release */, 1EB6175B1B0A30480035A986 /* ReleaseCrashOnly */, 1E27E6111B74F03000192AE2 /* ReleaseCrashOnlyExtensions */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = ReleaseAllFeatures; + defaultConfigurationName = Release; }; E4005614148D79B500EB22B9 /* Build configuration list for PBXProject "HockeySDK" */ = { isa = XCConfigurationList; buildConfigurations = ( E400563C148D79B500EB22B9 /* Debug */, - E400563D148D79B500EB22B9 /* Release */, - B29855441D85EBC9007FF452 /* ReleaseAllFeatures */, + E400563D148D79B500EB22B9 /* ReleaseDefault */, + B29855441D85EBC9007FF452 /* Release */, 1E7DE39019D44D88009AB8E5 /* ReleaseCrashOnly */, 1E27E60C1B74F03000192AE2 /* ReleaseCrashOnlyExtensions */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = ReleaseAllFeatures; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/Support/HockeySDKBase.xcconfig b/Support/HockeySDKBase.xcconfig index d1554d3233..1fdce14d7a 100644 --- a/Support/HockeySDKBase.xcconfig +++ b/Support/HockeySDKBase.xcconfig @@ -1,5 +1,5 @@ -BUILD_NUMBER = 96 -VERSION_STRING = 4.1.1 +BUILD_NUMBER = 97 +VERSION_STRING = 4.1.2 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(HOCKEYSDK_GCC_PREPROCESSOR_DEFINITIONS) HOCKEYSDK_CONFIGURATION_$(CONFIGURATION) 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 @@ -16,4 +16,4 @@ OTHER_CFLAGS[sdk=iphonesimulator10.*] = $(HOCKEYSDK_WARNING_FLAGS) -fembed-bitco OTHER_LDFLAGS=$(inherited) -framework CrashReporter -framework AssetsLibrary -framework CoreTelephony -framework CoreText -framework CoreGraphics -framework Foundation -framework MobileCoreServices -framework Photos -framework QuartzCore -framework QuickLook -framework Security -framework SystemConfiguration -framework UIKit -lc++ -lz HOCKEYSDK_DOCSET_NAME=HockeySDK-iOS HOCKEYSDK_GCC_PREPROCESSOR_DEFINITIONS=$(inherited) $(XCODEBUILD_GCC_PREPROCESSOR_DEFINITIONS) -HOCKEYSDK_WARNING_FLAGS = -Wshorten-64-to-32 -Wall \ No newline at end of file +HOCKEYSDK_WARNING_FLAGS = -Wshorten-64-to-32 -Wall diff --git a/Support/HockeySDKTests/BITHockeyHelperTests.m b/Support/HockeySDKTests/BITHockeyHelperTests.m index 8c95135a07..a627230ccb 100644 --- a/Support/HockeySDKTests/BITHockeyHelperTests.m +++ b/Support/HockeySDKTests/BITHockeyHelperTests.m @@ -116,6 +116,8 @@ // Regular icon names NSString *validIconPath = @"AppIcon"; NSString *validIconPath2x = @"AppIcon@2x"; + NSString *expected = ([UIScreen mainScreen].scale == 2.0f) ? validIconPath2x : validIconPath; + // No valid icons defined at all [given([mockBundle objectForInfoDictionaryKey:@"CFBundleIconFiles"]) willReturn:nil]; @@ -133,7 +135,8 @@ [given([mockBundle objectForInfoDictionaryKey:@"CFBundleIconFile"]) willReturn:nil]; resultString = bit_validAppIconFilename(mockBundle, resourceBundle); - assertThat(resultString, equalTo(validIconPath2x)); + + assertThat(resultString, equalTo(expected)); // CFBundleIcons contains valid dictionary filenames [given([mockBundle objectForInfoDictionaryKey:@"CFBundleIconFiles"]) willReturn:@[@"invalidFilename.png"]]; @@ -148,7 +151,7 @@ [given([mockBundle objectForInfoDictionaryKey:@"CFBundleIconFile"]) willReturn:nil]; resultString = bit_validAppIconFilename(mockBundle, resourceBundle); - assertThat(resultString, equalTo(validIconPath2x)); + assertThat(resultString, equalTo(expected)); // CFBundleIcons contains valid filenames [given([mockBundle objectForInfoDictionaryKey:@"CFBundleIconFiles"]) willReturn:@[@"invalidFilename.png"]]; @@ -157,7 +160,7 @@ [given([mockBundle objectForInfoDictionaryKey:@"CFBundleIconFile"]) willReturn:nil]; resultString = bit_validAppIconFilename(mockBundle, resourceBundle); - assertThat(resultString, equalTo(validIconPath2x)); + assertThat(resultString, equalTo(expected)); // CFBundleIcon contains valid filename [given([mockBundle objectForInfoDictionaryKey:@"CFBundleIconFiles"]) willReturn:@[@"invalidFilename.png"]]; @@ -166,7 +169,7 @@ [given([mockBundle objectForInfoDictionaryKey:@"CFBundleIconFile"]) willReturn:validIconPath]; resultString = bit_validAppIconFilename(mockBundle, resourceBundle); - assertThat(resultString, equalTo(validIconPath2x)); + assertThat(resultString, equalTo(expected)); } #ifndef CI diff --git a/Support/base.xcconfig b/Support/base.xcconfig index c2f62068b6..1c0b0377f7 100644 --- a/Support/base.xcconfig +++ b/Support/base.xcconfig @@ -1,7 +1,7 @@ #include "HockeySDK.xcconfig" -BUILD_NUMBER = 96 -VERSION_STRING = 4.1.1 +BUILD_NUMBER = 97 +VERSION_STRING = 4.1.2 GCC_PREPROCESSOR_DEFINITIONS = $(inherited) $(HOCKEYSDK_GCC_PREPROCESSOR_DEFINITIONS) HOCKEYSDK_CONFIGURATION_$(CONFIGURATION) 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 diff --git a/Vendor/CrashReporter.framework/Versions/A/CrashReporter b/Vendor/CrashReporter.framework/Versions/A/CrashReporter index 6262df86c5..3b18fa0571 100644 Binary files a/Vendor/CrashReporter.framework/Versions/A/CrashReporter and b/Vendor/CrashReporter.framework/Versions/A/CrashReporter differ diff --git a/Vendor/CrashReporter.framework/Versions/A/Headers/CrashReporter.h b/Vendor/CrashReporter.framework/Versions/A/Headers/CrashReporter.h index c654319112..26caf3dd62 100644 --- a/Vendor/CrashReporter.framework/Versions/A/Headers/CrashReporter.h +++ b/Vendor/CrashReporter.framework/Versions/A/Headers/CrashReporter.h @@ -95,7 +95,13 @@ typedef enum { PLCrashReporterErrorCrashReportInvalid = 2, /** An attempt to use a resource which was in use at the time in a manner which would have conflicted with the request. */ - PLCrashReporterErrorResourceBusy = 3 + PLCrashReporterErrorResourceBusy = 3, + + /** The requested resource could not be found. */ + PLCRashReporterErrorNotFound = 4, + + /** Allocation failed. */ + PLCRashReporterErrorInsufficientMemory = 4 } PLCrashReporterError; diff --git a/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashMacros.h b/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashMacros.h index 6629bc4683..a933f3a8bd 100644 --- a/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashMacros.h +++ b/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashMacros.h @@ -52,6 +52,12 @@ # define PLCR_CPP_BEGIN_NS namespace plcrash { # define PLCR_CPP_END_NS } # endif +# + /** @internal Define the plcrash::async namespace, automatically inserting an inline namespace containing the configured PLCRASHREPORTER_PREFIX, if any. */ +# define PLCR_CPP_BEGIN_ASYNC_NS PLCR_CPP_BEGIN_NS namespace async { + + /** @internal Close the definition of the `plcrash::async` namespace (and the PLCRASHREPORTER_PREFIX inline namespace, if any). */ +# define PLCR_CPP_END_ASYNC_NS PLCR_CPP_END_NS } #endif #ifdef __clang__ @@ -60,12 +66,56 @@ # define PLCR_PRAGMA_CLANG(_p) #endif +#ifdef __clang__ +# define PLCR_DEPRECATED __attribute__((deprecated)) +#else +# define PLCR_DEPRECATED +#endif + #if defined(__clang__) || defined(__GNUC__) # define PLCR_UNUSED __attribute__((unused)) #else # define PLCR_UNUSED #endif +#ifdef PLCR_PRIVATE +/** + * Marks a definition as deprecated only for for external clients, allowing + * uses of it internal fo the framework. + */ +#define PLCR_EXTERNAL_DEPRECATED + +/** + * @internal + * A macro to put above a definition marked PLCR_EXTERNAL_DEPRECATED that will + * silence warnings about there being a deprecation documentation marker but the + * definition not being marked deprecated. + */ +# define PLCR_EXTERNAL_DEPRECATED_NOWARN_PUSH() \ + PLCR_PRAGMA_CLANG("clang diagnostic push"); \ + PLCR_PRAGMA_CLANG("clang diagnostic ignored \"-Wdocumentation-deprecated-sync\"") + +/** + * @internal + * A macro to put below a definition marked PLCR_EXTERNAL_DEPRECATED that will + * silence warnings about there being a deprecation documentation marker but the + * definition not being marked deprecated. + */ +# define PLCR_EXTERNAL_DEPRECATED_NOWARN_POP() PLCR_PRAGMA_CLANG("clang diagnostic pop") +#else +# define PLCR_EXTERNAL_DEPRECATED PLCR_DEPRECATED +# define PLCR_EXTERNAL_DEPRECATED_NOWARN_PUSH() +# define PLCR_EXTERNAL_DEPRECATED_NOWARN_PUSH() +#endif /* PLCR_PRIVATE */ + +#ifdef PLCR_PRIVATE +# if defined(__clang__) && __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough") +# define PLCR_FALLTHROUGH [[clang::fallthrough]] +# else +# define PLCR_FALLTHROUGH do {} while (0) +# endif +#endif + #ifdef PLCR_PRIVATE /** * @internal diff --git a/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashNamespace.h b/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashNamespace.h index dba0200e5c..b352ca197a 100644 --- a/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashNamespace.h +++ b/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashNamespace.h @@ -247,8 +247,8 @@ #define plcrash_nasync_image_list_free PLNS(plcrash_nasync_image_list_free) #define plcrash_nasync_image_list_init PLNS(plcrash_nasync_image_list_init) #define plcrash_nasync_image_list_remove PLNS(plcrash_nasync_image_list_remove) -#define plcrash_nasync_macho_free PLNS(plcrash_nasync_macho_free) -#define plcrash_nasync_macho_init PLNS(plcrash_nasync_macho_init) +#define plcrash_async_macho_free PLNS(plcrash_async_macho_free) +#define plcrash_async_macho_init PLNS(plcrash_async_macho_init) #define plcrash_populate_error PLNS(plcrash_populate_error) #define plcrash_populate_mach_error PLNS(plcrash_populate_mach_error) #define plcrash_populate_posix_error PLNS(plcrash_populate_posix_error) diff --git a/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashReportSystemInfo.h b/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashReportSystemInfo.h index e98c969c81..1bc59a81b0 100644 --- a/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashReportSystemInfo.h +++ b/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashReportSystemInfo.h @@ -27,6 +27,8 @@ */ #import +#include "PLCrashMacros.h" +@class PLCrashReportProcessorInfo; /** * @ingroup constants @@ -55,7 +57,7 @@ typedef enum { * * Indicates the architecture under which a Crash Log was generated. * - * @deprecated The architecture value has been deprecated in v1.1 and later crash reports. All new reports + * @note The architecture value has been deprecated in v1.1 and later crash reports. All new reports * will make use of the new PLCrashReportProcessorInfo CPU type encodings. * * @internal @@ -77,7 +79,7 @@ typedef enum { * values. * @sa PLCrashReportArchitectureARMv6 */ - PLCrashReportArchitectureARM = PLCrashReportArchitectureARMv6, + PLCrashReportArchitectureARM PLCR_DEPRECATED = PLCrashReportArchitectureARMv6, /** PPC */ PLCrashReportArchitecturePPC = 3, @@ -94,7 +96,9 @@ typedef enum { extern PLCrashReportOperatingSystem PLCrashReportHostOperatingSystem; -extern PLCrashReportArchitecture PLCrashReportHostArchitecture; +PLCR_EXTERNAL_DEPRECATED_NOWARN_PUSH(); +extern PLCrashReportArchitecture PLCrashReportHostArchitecture PLCR_EXTERNAL_DEPRECATED; +PLCR_EXTERNAL_DEPRECATED_NOWARN_PUSH(); @interface PLCrashReportSystemInfo : NSObject { @private @@ -112,17 +116,27 @@ extern PLCrashReportArchitecture PLCrashReportHostArchitecture; /** Date crash report was generated. May be nil if the date is unknown. */ NSDate *_timestamp; + + /** Processor information. */ + PLCrashReportProcessorInfo *_processorInfo; } - (id) initWithOperatingSystem: (PLCrashReportOperatingSystem) operatingSystem operatingSystemVersion: (NSString *) operatingSystemVersion architecture: (PLCrashReportArchitecture) architecture - timestamp: (NSDate *) timestamp; + timestamp: (NSDate *) timestamp PLCR_DEPRECATED; - (id) initWithOperatingSystem: (PLCrashReportOperatingSystem) operatingSystem operatingSystemVersion: (NSString *) operatingSystemVersion operatingSystemBuild: (NSString *) operatingSystemBuild architecture: (PLCrashReportArchitecture) architecture + timestamp: (NSDate *) timestamp PLCR_DEPRECATED; + +- (id) initWithOperatingSystem: (PLCrashReportOperatingSystem) operatingSystem + operatingSystemVersion: (NSString *) operatingSystemVersion + operatingSystemBuild: (NSString *) operatingSystemBuild + architecture: (PLCrashReportArchitecture) architecture + processorInfo: (PLCrashReportProcessorInfo *) processorInfo timestamp: (NSDate *) timestamp; /** The operating system. */ @@ -137,9 +151,13 @@ extern PLCrashReportArchitecture PLCrashReportHostArchitecture; /** Architecture. @deprecated The architecture value has been deprecated in v1.1 and later crash reports. All new reports * include the CPU type as part of the crash report's machine info structure, using the PLCrashReportProcessorInfo * extensible encoding. */ -@property(nonatomic, readonly) PLCrashReportArchitecture architecture; +@property(nonatomic, readonly) PLCrashReportArchitecture architecture PLCR_DEPRECATED; /** Date and time that the crash report was generated. This may be unavailable, and this property will be nil. */ @property(nonatomic, readonly) NSDate *timestamp; +/** The processor type. For v1.2 reports and later, this is an alias to the machine info's processorInfo. + * For earlier reports, this will be synthesized from the deprecated architecture property. */ +@property(nonatomic, readonly) PLCrashReportProcessorInfo *processorInfo; + @end diff --git a/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashReporter.h b/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashReporter.h index 455c417ac7..fe74e27b1d 100644 --- a/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashReporter.h +++ b/Vendor/CrashReporter.framework/Versions/A/Headers/PLCrashReporter.h @@ -30,6 +30,7 @@ #import #import "PLCrashReporterConfig.h" +#import "PLCrashMacros.h" @class PLCrashMachExceptionServer; @class PLCrashMachExceptionPortSet; @@ -44,7 +45,7 @@ * @param uap The crash's threads context. * @param context The API client's supplied context value. * - * @sa @ref async_safety + * @sa The @ref async_safety documentation. * @sa PLCrashReporter::setPostCrashCallbacks: */ typedef void (*PLCrashReporterPostCrashSignalCallback)(siginfo_t *info, ucontext_t *uap, void *context); @@ -55,7 +56,7 @@ typedef void (*PLCrashReporterPostCrashSignalCallback)(siginfo_t *info, ucontext * This structure contains callbacks supported by PLCrashReporter to allow the host application to perform * additional tasks prior to program termination after a crash has occured. * - * @sa @ref async_safety + * @sa The @ref async_safety documentation. */ typedef struct PLCrashReporterCallbacks { /** The version number of this structure. If not one of the defined version numbers for this type, the behavior @@ -87,7 +88,7 @@ typedef struct PLCrashReporterCallbacks { /** YES if the crash reporter has been enabled */ BOOL _enabled; - + #if PLCRASH_FEATURE_MACH_EXCEPTIONS /** The backing Mach exception server, if any. Nil if the reporter has not been enabled, or if * the configured signal handler type is not PLCrashReporterSignalHandlerTypeMach. */ @@ -110,7 +111,7 @@ typedef struct PLCrashReporterCallbacks { NSString *_crashReportDirectory; } -+ (PLCrashReporter *) sharedReporter; ++ (PLCrashReporter *) sharedReporter PLCR_DEPRECATED; - (instancetype) initWithConfiguration: (PLCrashReporterConfig *) config; @@ -121,9 +122,11 @@ typedef struct PLCrashReporterCallbacks { - (NSData *) generateLiveReportWithThread: (thread_t) thread; - (NSData *) generateLiveReportWithThread: (thread_t) thread error: (NSError **) outError; +- (NSData *) generateLiveReportWithThread: (thread_t) thread exception: (NSException *) exception error: (NSError **) outError; - (NSData *) generateLiveReport; - (NSData *) generateLiveReportAndReturnError: (NSError **) outError; +- (NSData *) generateLiveReportWithException: (NSException *) exception error: (NSError **) outError; - (BOOL) purgePendingCrashReport; - (BOOL) purgePendingCrashReportAndReturnError: (NSError **) outError; diff --git a/Vendor/CrashReporter.framework/Versions/A/Resources/Info.plist b/Vendor/CrashReporter.framework/Versions/A/Resources/Info.plist index d83fe7d429..c4c6265fe1 100644 --- a/Vendor/CrashReporter.framework/Versions/A/Resources/Info.plist +++ b/Vendor/CrashReporter.framework/Versions/A/Resources/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 14F27 + 15G1004 CFBundleDevelopmentRegion English CFBundleExecutable @@ -27,16 +27,16 @@ DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 7A220 + 7D1014 DTPlatformVersion GM DTSDKBuild - 15A278 + 15E60 DTSDKName macosx10.11 DTXcode - 0700 + 0731 DTXcodeBuild - 7A220 + 7D1014 diff --git a/docs/Changelog-template.md b/docs/Changelog-template.md index 410b281bda..b388bc8080 100644 --- a/docs/Changelog-template.md +++ b/docs/Changelog-template.md @@ -1,3 +1,13 @@ +# 4.1.2 + +- [NEW] New `shouldDisplayUpdateAlertForUpdateManager`-API [#339](https://github.com/bitstadium/HockeySDK-iOS/pull/339) to make the moment of appearance for custom update UI even more customizable. +- [IMPROVEMENT] Fix static analyzer warnings. [#351](https://github.com/bitstadium/HockeySDK-iOS/pull/351) +- [IMPROVEMENT] Internal structure of embedded frameworks changed [#352](https://github.com/bitstadium/HockeySDK-iOS/pull/352) +- [IMPROVEMENT] Upgrade to PLCrashReporter 1.3 +- [BUGFIX] Enable bitcode in all configurations [#344](https://github.com/bitstadium/HockeySDK-iOS/pull/344) +- [BUGFIX] Fixed anonymisation of binary paths when running in the simulator [#347](https://github.com/bitstadium/HockeySDK-iOS/pull/347) +- - [BUGFIX] Rename configurations to not break Carthage integration [#353](https://github.com/bitstadium/HockeySDK-iOS/pull/353) + ## 4.1.1 **Attention** Due to changes in iOS 10, it is now necessary to include the `NSPhotoLibraryUsageDescription` in your app's Info.plist file if you want to use HockeySDK's Feedback feature. Since using the feature without the plist key present could lead to an App Store rejection, our default CocoaPods configuration does not include the Feedback feature anymore.