diff --git a/.travis.yml b/.travis.yml index 4d5172f8d..1d600c0c3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,5 +7,7 @@ matrix: env: SDK=iphonesimulator9.3 - osx_image: xcode7.2 env: SDK=iphonesimulator9.2 + - osx_image: xcode7.3 + env: SDK=appletvsimulator9.2 install: make bootstrap script: make test diff --git a/Bugsnag.podspec.json b/Bugsnag.podspec.json index 199b6c0cd..5f527cce3 100644 --- a/Bugsnag.podspec.json +++ b/Bugsnag.podspec.json @@ -14,7 +14,8 @@ "frameworks": "Foundation", "platforms": { "ios": "6.0", - "osx": "10.8" + "osx": "10.8", + "tvos": "9.0" }, "source_files": [ "Source/*.{m,h,mm,c,cpp}" diff --git a/Makefile b/Makefile index 3c6780590..0dbc29661 100644 --- a/Makefile +++ b/Makefile @@ -7,10 +7,16 @@ ifeq ($(BUILD_OSX), 1) BUILD_FLAGS=-workspace OSX.xcworkspace -scheme Bugsnag BUILD_ONLY_FLAGS=CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO else - PLATFORM=iOS - RELEASE_DIR=Release-iphoneos - BUILD_FLAGS=-workspace iOS.xcworkspace -scheme Bugsnag - BUILD_ONLY_FLAGS=-sdk $(SDK) -destination "platform=iOS Simulator,name=iPhone 5" -configuration Debug + ifeq ($(SDK),appletvsimulator9.2) + PLATFORM=tvOS + BUILD_FLAGS=-workspace tvOS.xcworkspace -scheme Bugsnag + BUILD_ONLY_FLAGS=-sdk $(SDK) -configuration Debug + else + PLATFORM=iOS + RELEASE_DIR=Release-iphoneos + BUILD_FLAGS=-workspace iOS.xcworkspace -scheme Bugsnag + BUILD_ONLY_FLAGS=-sdk $(SDK) -destination "platform=iOS Simulator,name=iPhone 5" -configuration Debug + endif endif XCODEBUILD=set -o pipefail && xcodebuild VERSION=$(shell cat VERSION) diff --git a/Source/BugsnagNotifier.m b/Source/BugsnagNotifier.m index e612ad05c..73f0a4d14 100644 --- a/Source/BugsnagNotifier.m +++ b/Source/BugsnagNotifier.m @@ -151,7 +151,9 @@ - (void) start { [self performSelectorInBackground:@selector(sendPendingReports) withObject:nil]; [self updateAutomaticBreadcrumbDetectionSettings]; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#if TARGET_OS_TV + [self.details setValue:@"tvOS Bugsnag Notifier" forKey:@"name"]; +#elif TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE [self.details setValue:@"iOS Bugsnag Notifier" forKey:@"name"]; [[NSNotificationCenter defaultCenter] @@ -252,7 +254,8 @@ - (void) metaDataChanged:(BugsnagMetaData *)metaData { } } -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#if TARGET_OS_TV +#elif TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE - (void)batteryChanged:(NSNotification *)notif { NSNumber *batteryLevel = [NSNumber numberWithFloat:[UIDevice currentDevice].batteryLevel]; @@ -348,7 +351,16 @@ - (void)updateAutomaticBreadcrumbDetectionSettings { } - (NSArray *)automaticBreadcrumbStateEvents { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#if TARGET_OS_TV + return @[NSUndoManagerDidUndoChangeNotification, + NSUndoManagerDidRedoChangeNotification, + UIWindowDidBecomeVisibleNotification, + UIWindowDidBecomeHiddenNotification, + UIWindowDidBecomeKeyNotification, + UIWindowDidResignKeyNotification, + UIScreenBrightnessDidChangeNotification, + UITableViewSelectionDidChangeNotification]; +#elif TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE return @[UIWindowDidBecomeHiddenNotification, UIWindowDidBecomeVisibleNotification, UIApplicationWillTerminateNotification, @@ -396,7 +408,9 @@ - (void)updateAutomaticBreadcrumbDetectionSettings { } - (NSArray *)automaticBreadcrumbMenuItemEvents { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#if TARGET_OS_TV + return @[]; +#elif TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE return nil; #elif TARGET_OS_MAC return @[NSMenuWillSendActionNotification]; @@ -426,7 +440,8 @@ - (void)sendBreadcrumbForNotification:(NSNotification *)note { } - (void)sendBreadcrumbForMenuItemNotification:(NSNotification *)notif { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#if TARGET_OS_TV +#elif TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE #elif TARGET_OS_MAC NSMenuItem *menuItem = [[notif userInfo] valueForKey:@"MenuItem"]; if ([menuItem isKindOfClass:[NSMenuItem class]]) { @@ -442,7 +457,8 @@ - (void)sendBreadcrumbForMenuItemNotification:(NSNotification *)notif { } - (void)sendBreadcrumbForControlNotification:(NSNotification *)note { -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#if TARGET_OS_TV +#elif TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE UIControl* control = note.object; [Bugsnag leaveBreadcrumbWithBlock:^(BugsnagBreadcrumb *_Nonnull breadcrumb) { breadcrumb.type = BSGBreadcrumbTypeUser; diff --git a/Tests/BugsnagSinkTests.m b/Tests/BugsnagSinkTests.m index 1ec61305a..86fa0f70d 100644 --- a/Tests/BugsnagSinkTests.m +++ b/Tests/BugsnagSinkTests.m @@ -72,7 +72,9 @@ - (void)testCorrectNotifierKeys { - (void)testNotifierName { NSString *name = self.processedData[@"notifier"][@"name"]; -#if TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE +#if TARGET_OS_TV + XCTAssertEqualObjects(name, @"tvOS Bugsnag Notifier"); +#elif TARGET_IPHONE_SIMULATOR || TARGET_OS_IPHONE XCTAssertEqualObjects(name, @"iOS Bugsnag Notifier"); #else XCTAssertEqualObjects(name, @"OSX Bugsnag Notifier"); diff --git a/tvOS.xcworkspace/contents.xcworkspacedata b/tvOS.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000..4081e9200 --- /dev/null +++ b/tvOS.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,10 @@ + + + + + + + diff --git a/tvOS/Bugsnag.xcodeproj/project.pbxproj b/tvOS/Bugsnag.xcodeproj/project.pbxproj new file mode 100644 index 000000000..080b326bb --- /dev/null +++ b/tvOS/Bugsnag.xcodeproj/project.pbxproj @@ -0,0 +1,461 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 8AB151171D41356800C9B218 /* Bugsnag.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8A8D51241D41343500D33797 /* Bugsnag.framework */; }; + 8AB151211D41361700C9B218 /* BugsnagBreadcrumbsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB1511D1D41361700C9B218 /* BugsnagBreadcrumbsTest.m */; }; + 8AB151221D41361700C9B218 /* BugsnagCrashReportTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB1511E1D41361700C9B218 /* BugsnagCrashReportTests.m */; }; + 8AB151231D41361700C9B218 /* BugsnagSinkTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB1511F1D41361700C9B218 /* BugsnagSinkTests.m */; }; + 8AB151241D41361700C9B218 /* report.json in Resources */ = {isa = PBXBuildFile; fileRef = 8AB151201D41361700C9B218 /* report.json */; }; + 8AB151361D41366400C9B218 /* Bugsnag.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB151271D41366400C9B218 /* Bugsnag.m */; }; + 8AB151371D41366400C9B218 /* BugsnagBreadcrumb.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB151291D41366400C9B218 /* BugsnagBreadcrumb.m */; }; + 8AB151381D41366400C9B218 /* BugsnagCollections.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB1512B1D41366400C9B218 /* BugsnagCollections.m */; }; + 8AB151391D41366400C9B218 /* BugsnagConfiguration.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB1512D1D41366400C9B218 /* BugsnagConfiguration.m */; }; + 8AB1513A1D41366400C9B218 /* BugsnagCrashReport.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB1512F1D41366400C9B218 /* BugsnagCrashReport.m */; }; + 8AB1513B1D41366400C9B218 /* BugsnagMetaData.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB151311D41366400C9B218 /* BugsnagMetaData.m */; }; + 8AB1513C1D41366400C9B218 /* BugsnagNotifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB151331D41366400C9B218 /* BugsnagNotifier.m */; }; + 8AB1513D1D41366400C9B218 /* BugsnagSink.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AB151351D41366400C9B218 /* BugsnagSink.m */; }; + 8AB1513F1D4136F100C9B218 /* KSCrash.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8AB1513E1D4136F100C9B218 /* KSCrash.framework */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 8AB151181D41356800C9B218 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8A8D511B1D41343500D33797 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8A8D51231D41343500D33797; + remoteInfo = Bugsnag; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 8A8D51241D41343500D33797 /* Bugsnag.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Bugsnag.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 8A8D51291D41343500D33797 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 8AB151121D41356800C9B218 /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AB151161D41356800C9B218 /* TestsInfo.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = TestsInfo.plist; path = ../TestsInfo.plist; sourceTree = ""; }; + 8AB1511D1D41361700C9B218 /* BugsnagBreadcrumbsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BugsnagBreadcrumbsTest.m; path = ../../Tests/BugsnagBreadcrumbsTest.m; sourceTree = ""; }; + 8AB1511E1D41361700C9B218 /* BugsnagCrashReportTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BugsnagCrashReportTests.m; path = ../../Tests/BugsnagCrashReportTests.m; sourceTree = ""; }; + 8AB1511F1D41361700C9B218 /* BugsnagSinkTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BugsnagSinkTests.m; path = ../../Tests/BugsnagSinkTests.m; sourceTree = ""; }; + 8AB151201D41361700C9B218 /* report.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = report.json; path = ../../Tests/report.json; sourceTree = ""; }; + 8AB151251D41366400C9B218 /* BSGKSCrashReportWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BSGKSCrashReportWriter.h; path = ../Source/BSGKSCrashReportWriter.h; sourceTree = ""; }; + 8AB151261D41366400C9B218 /* Bugsnag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Bugsnag.h; path = ../Source/Bugsnag.h; sourceTree = ""; }; + 8AB151271D41366400C9B218 /* Bugsnag.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Bugsnag.m; path = ../Source/Bugsnag.m; sourceTree = ""; }; + 8AB151281D41366400C9B218 /* BugsnagBreadcrumb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BugsnagBreadcrumb.h; path = ../Source/BugsnagBreadcrumb.h; sourceTree = ""; }; + 8AB151291D41366400C9B218 /* BugsnagBreadcrumb.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BugsnagBreadcrumb.m; path = ../Source/BugsnagBreadcrumb.m; sourceTree = ""; }; + 8AB1512A1D41366400C9B218 /* BugsnagCollections.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BugsnagCollections.h; path = ../Source/BugsnagCollections.h; sourceTree = ""; }; + 8AB1512B1D41366400C9B218 /* BugsnagCollections.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BugsnagCollections.m; path = ../Source/BugsnagCollections.m; sourceTree = ""; }; + 8AB1512C1D41366400C9B218 /* BugsnagConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BugsnagConfiguration.h; path = ../Source/BugsnagConfiguration.h; sourceTree = ""; }; + 8AB1512D1D41366400C9B218 /* BugsnagConfiguration.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BugsnagConfiguration.m; path = ../Source/BugsnagConfiguration.m; sourceTree = ""; }; + 8AB1512E1D41366400C9B218 /* BugsnagCrashReport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BugsnagCrashReport.h; path = ../Source/BugsnagCrashReport.h; sourceTree = ""; }; + 8AB1512F1D41366400C9B218 /* BugsnagCrashReport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BugsnagCrashReport.m; path = ../Source/BugsnagCrashReport.m; sourceTree = ""; }; + 8AB151301D41366400C9B218 /* BugsnagMetaData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BugsnagMetaData.h; path = ../Source/BugsnagMetaData.h; sourceTree = ""; }; + 8AB151311D41366400C9B218 /* BugsnagMetaData.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BugsnagMetaData.m; path = ../Source/BugsnagMetaData.m; sourceTree = ""; }; + 8AB151321D41366400C9B218 /* BugsnagNotifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BugsnagNotifier.h; path = ../Source/BugsnagNotifier.h; sourceTree = ""; }; + 8AB151331D41366400C9B218 /* BugsnagNotifier.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BugsnagNotifier.m; path = ../Source/BugsnagNotifier.m; sourceTree = ""; }; + 8AB151341D41366400C9B218 /* BugsnagSink.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BugsnagSink.h; path = ../Source/BugsnagSink.h; sourceTree = ""; }; + 8AB151351D41366400C9B218 /* BugsnagSink.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BugsnagSink.m; path = ../Source/BugsnagSink.m; sourceTree = ""; }; + 8AB1513E1D4136F100C9B218 /* KSCrash.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = KSCrash.framework; path = "../../../../Library/Developer/Xcode/DerivedData/tvOS-ebsbvpxsfrmszpejtqlahdcmtszc/Build/Products/Debug-appletvsimulator/KSCrash.framework"; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8A8D51201D41343500D33797 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AB1513F1D4136F100C9B218 /* KSCrash.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AB1510F1D41356800C9B218 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AB151171D41356800C9B218 /* Bugsnag.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 8A8D511A1D41343500D33797 = { + isa = PBXGroup; + children = ( + 8A8D51261D41343500D33797 /* tvOS */, + 8AB151131D41356800C9B218 /* Tests */, + 8A8D51251D41343500D33797 /* Products */, + 8AB151401D41370500C9B218 /* Framekworks */, + ); + sourceTree = ""; + }; + 8A8D51251D41343500D33797 /* Products */ = { + isa = PBXGroup; + children = ( + 8A8D51241D41343500D33797 /* Bugsnag.framework */, + 8AB151121D41356800C9B218 /* Tests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 8A8D51261D41343500D33797 /* tvOS */ = { + isa = PBXGroup; + children = ( + 8AB151251D41366400C9B218 /* BSGKSCrashReportWriter.h */, + 8AB151261D41366400C9B218 /* Bugsnag.h */, + 8AB151271D41366400C9B218 /* Bugsnag.m */, + 8AB151281D41366400C9B218 /* BugsnagBreadcrumb.h */, + 8AB151291D41366400C9B218 /* BugsnagBreadcrumb.m */, + 8AB1512A1D41366400C9B218 /* BugsnagCollections.h */, + 8AB1512B1D41366400C9B218 /* BugsnagCollections.m */, + 8AB1512C1D41366400C9B218 /* BugsnagConfiguration.h */, + 8AB1512D1D41366400C9B218 /* BugsnagConfiguration.m */, + 8AB1512E1D41366400C9B218 /* BugsnagCrashReport.h */, + 8AB1512F1D41366400C9B218 /* BugsnagCrashReport.m */, + 8AB151301D41366400C9B218 /* BugsnagMetaData.h */, + 8AB151311D41366400C9B218 /* BugsnagMetaData.m */, + 8AB151321D41366400C9B218 /* BugsnagNotifier.h */, + 8AB151331D41366400C9B218 /* BugsnagNotifier.m */, + 8AB151341D41366400C9B218 /* BugsnagSink.h */, + 8AB151351D41366400C9B218 /* BugsnagSink.m */, + 8A8D51291D41343500D33797 /* Info.plist */, + ); + name = tvOS; + sourceTree = SOURCE_ROOT; + }; + 8AB151131D41356800C9B218 /* Tests */ = { + isa = PBXGroup; + children = ( + 8AB1511D1D41361700C9B218 /* BugsnagBreadcrumbsTest.m */, + 8AB1511E1D41361700C9B218 /* BugsnagCrashReportTests.m */, + 8AB1511F1D41361700C9B218 /* BugsnagSinkTests.m */, + 8AB151201D41361700C9B218 /* report.json */, + 8AB151161D41356800C9B218 /* TestsInfo.plist */, + ); + path = Tests; + sourceTree = ""; + }; + 8AB151401D41370500C9B218 /* Framekworks */ = { + isa = PBXGroup; + children = ( + 8AB1513E1D4136F100C9B218 /* KSCrash.framework */, + ); + name = Framekworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 8A8D51211D41343500D33797 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 8A8D51231D41343500D33797 /* Bugsnag */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8A8D512C1D41343500D33797 /* Build configuration list for PBXNativeTarget "Bugsnag" */; + buildPhases = ( + 8A8D511F1D41343500D33797 /* Sources */, + 8A8D51201D41343500D33797 /* Frameworks */, + 8A8D51211D41343500D33797 /* Headers */, + 8A8D51221D41343500D33797 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Bugsnag; + productName = Bugsnag; + productReference = 8A8D51241D41343500D33797 /* Bugsnag.framework */; + productType = "com.apple.product-type.framework"; + }; + 8AB151111D41356800C9B218 /* Tests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8AB1511A1D41356800C9B218 /* Build configuration list for PBXNativeTarget "Tests" */; + buildPhases = ( + 8AB1510E1D41356800C9B218 /* Sources */, + 8AB1510F1D41356800C9B218 /* Frameworks */, + 8AB151101D41356800C9B218 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 8AB151191D41356800C9B218 /* PBXTargetDependency */, + ); + name = Tests; + productName = Tests; + productReference = 8AB151121D41356800C9B218 /* Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 8A8D511B1D41343500D33797 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0730; + ORGANIZATIONNAME = "Bugsnag, Inc."; + TargetAttributes = { + 8A8D51231D41343500D33797 = { + CreatedOnToolsVersion = 7.3.1; + }; + 8AB151111D41356800C9B218 = { + CreatedOnToolsVersion = 7.3.1; + }; + }; + }; + buildConfigurationList = 8A8D511E1D41343500D33797 /* Build configuration list for PBXProject "Bugsnag" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 8A8D511A1D41343500D33797; + productRefGroup = 8A8D51251D41343500D33797 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8A8D51231D41343500D33797 /* Bugsnag */, + 8AB151111D41356800C9B218 /* Tests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8A8D51221D41343500D33797 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AB151101D41356800C9B218 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AB151241D41361700C9B218 /* report.json in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8A8D511F1D41343500D33797 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8AB1510E1D41356800C9B218 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8AB151391D41366400C9B218 /* BugsnagConfiguration.m in Sources */, + 8AB151361D41366400C9B218 /* Bugsnag.m in Sources */, + 8AB151231D41361700C9B218 /* BugsnagSinkTests.m in Sources */, + 8AB151371D41366400C9B218 /* BugsnagBreadcrumb.m in Sources */, + 8AB1513C1D41366400C9B218 /* BugsnagNotifier.m in Sources */, + 8AB151211D41361700C9B218 /* BugsnagBreadcrumbsTest.m in Sources */, + 8AB151221D41361700C9B218 /* BugsnagCrashReportTests.m in Sources */, + 8AB1513B1D41366400C9B218 /* BugsnagMetaData.m in Sources */, + 8AB1513D1D41366400C9B218 /* BugsnagSink.m in Sources */, + 8AB151381D41366400C9B218 /* BugsnagCollections.m in Sources */, + 8AB1513A1D41366400C9B218 /* BugsnagCrashReport.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 8AB151191D41356800C9B218 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8A8D51231D41343500D33797 /* Bugsnag */; + targetProxy = 8AB151181D41356800C9B218 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 8A8D512A1D41343500D33797 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.2; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 8A8D512B1D41343500D33797 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = appletvos; + TARGETED_DEVICE_FAMILY = 3; + TVOS_DEPLOYMENT_TARGET = 9.2; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 8A8D512D1D41343500D33797 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.Bugsnag; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 8A8D512E1D41343500D33797 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = Info.plist; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.Bugsnag; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; + 8AB1511B1D41356800C9B218 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = TestsInfo.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.Tests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 8AB1511C1D41356800C9B218 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = TestsInfo.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.bugsnag.Tests; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 8A8D511E1D41343500D33797 /* Build configuration list for PBXProject "Bugsnag" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8A8D512A1D41343500D33797 /* Debug */, + 8A8D512B1D41343500D33797 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8A8D512C1D41343500D33797 /* Build configuration list for PBXNativeTarget "Bugsnag" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8A8D512D1D41343500D33797 /* Debug */, + 8A8D512E1D41343500D33797 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8AB1511A1D41356800C9B218 /* Build configuration list for PBXNativeTarget "Tests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8AB1511B1D41356800C9B218 /* Debug */, + 8AB1511C1D41356800C9B218 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 8A8D511B1D41343500D33797 /* Project object */; +} diff --git a/tvOS/Bugsnag.xcodeproj/xcshareddata/xcschemes/Bugsnag.xcscheme b/tvOS/Bugsnag.xcodeproj/xcshareddata/xcschemes/Bugsnag.xcscheme new file mode 100644 index 000000000..f6e7e69a7 --- /dev/null +++ b/tvOS/Bugsnag.xcodeproj/xcshareddata/xcschemes/Bugsnag.xcscheme @@ -0,0 +1,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tvOS/Bugsnag.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme b/tvOS/Bugsnag.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme new file mode 100644 index 000000000..3be7ce538 --- /dev/null +++ b/tvOS/Bugsnag.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tvOS/Info.plist b/tvOS/Info.plist new file mode 100644 index 000000000..d3de8eefb --- /dev/null +++ b/tvOS/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/tvOS/Tests/Info.plist b/tvOS/Tests/Info.plist new file mode 100644 index 000000000..ba72822e8 --- /dev/null +++ b/tvOS/Tests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/tvOS/TestsInfo.plist b/tvOS/TestsInfo.plist new file mode 100644 index 000000000..ba72822e8 --- /dev/null +++ b/tvOS/TestsInfo.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/tvOS/module.modulemap b/tvOS/module.modulemap new file mode 100644 index 000000000..0623e686a --- /dev/null +++ b/tvOS/module.modulemap @@ -0,0 +1,10 @@ +module Bugsnag { + umbrella header "Bugsnag.h" + + header "BugsnagConfiguration.h" + header "BugsnagMetaData.h" + header "BugsnagBreadcrumb.h" + + export * + module * { export * } +} \ No newline at end of file