Enable Sentry crash reporting in testing builds

This commit is contained in:
Matthew Wild 2024-02-13 22:15:22 +00:00
parent 2997f4cce0
commit 20587fa38e
5 changed files with 154 additions and 49 deletions

3
.gitignore vendored
View File

@ -110,4 +110,5 @@ xcuserdata
#
# We're using source-control, so this is a "feature" that we do not want!
*.moved-aside
*.moved-aside
.sentryclirc

View File

@ -7,7 +7,13 @@
objects = {
/* Begin PBXBuildFile section */
344615CB2B763FA3009737D5 /* FLEX in Frameworks */ = {isa = PBXBuildFile; productRef = 344615CA2B763FA3009737D5 /* FLEX */; };
344F77CD2B1E0ED9007E53B8 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
344F77CE2B1E0ED9007E53B8 /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = 0F8BEE16761C407DAA65C712 /* Sentry */; };
344F77CF2B1E0ED9007E53B8 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
344F77D02B1E0ED9007E53B8 /* (null) in Frameworks */ = {isa = PBXBuildFile; };
373A8020271063E1000E50FE /* TelephonyProviderViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 373A801F271063E1000E50FE /* TelephonyProviderViewController.swift */; };
3757DD5A7AB34C55BD828D29 /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = 0F8BEE16761C407DAA65C712 /* Sentry */; };
3759635F26F72F1900831F4C /* Welcome.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3759636126F72F1900831F4C /* Welcome.storyboard */; };
3759636A26F72FD700831F4C /* Groupchat.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3759636C26F72FD700831F4C /* Groupchat.storyboard */; };
3759637126F7303100831F4C /* VoIP.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3759637326F7303100831F4C /* VoIP.storyboard */; };
@ -626,6 +632,7 @@
buildActionMask = 2147483647;
files = (
FE759FE22371C83D001E78D9 /* Shared.framework in Frameworks */,
344F77CF2B1E0ED9007E53B8 /* (null) in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -634,6 +641,7 @@
buildActionMask = 2147483647;
files = (
FE759FD12370B2F2001E78D9 /* Shared.framework in Frameworks */,
344F77D02B1E0ED9007E53B8 /* (null) in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -645,6 +653,7 @@
FE759FE82371C972001E78D9 /* libxml2.tbd in Frameworks */,
FE1908B72584D70300CA049F /* OpenSSL.xcframework in Frameworks */,
FEC9B1162440E7B500A484EE /* TigaseSwiftOMEMO in Frameworks */,
3757DD5A7AB34C55BD828D29 /* Sentry in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -652,11 +661,14 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
344F77CE2B1E0ED9007E53B8 /* Sentry in Frameworks */,
FE1A34A7258CD3EE0058B86A /* WebRTC.xcframework in Frameworks */,
FE5079F01CD3CA91001A015C /* Security.framework in Frameworks */,
344615CB2B763FA3009737D5 /* FLEX in Frameworks */,
3797D5C026EA456F0091DAF8 /* HSLuvSwift in Frameworks */,
FE759FCC2370B2A4001E78D9 /* Shared.framework in Frameworks */,
FE1908AA2584D6BC00CA049F /* OpenSSL.xcframework in Frameworks */,
344F77CD2B1E0ED9007E53B8 /* (null) in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -1178,6 +1190,7 @@
FEF80DB71CDCC508005645A7 /* Embed Frameworks */,
FE0473391D86CEE700E6D6CE /* Trim Framework Executables */,
FE4DDF611F39E0B600A4CE5A /* Embed App Extensions */,
2FBAFA92375F42B48E2A05E7 /* Upload Debug Symbols to Sentry */,
);
buildRules = (
);
@ -1189,6 +1202,8 @@
name = Snikket;
packageProductDependencies = (
3797D5BF26EA456F0091DAF8 /* HSLuvSwift */,
0F8BEE16761C407DAA65C712 /* Sentry */,
344615CA2B763FA3009737D5 /* FLEX */,
);
productName = SiskinIM;
productReference = FE94E5211CCBA74F00FAE755 /* Snikket.app */;
@ -1264,6 +1279,8 @@
packageReferences = (
FEC9B1122440E79D00A484EE /* XCRemoteSwiftPackageReference "tigase-swift-omemo" */,
3797D5BE26EA456F0091DAF8 /* XCRemoteSwiftPackageReference "hsluv-swift" */,
ECEB0118F469422FA8CDCF44 /* XCRemoteSwiftPackageReference "sentry-cocoa" */,
344615C92B763FA3009737D5 /* XCRemoteSwiftPackageReference "FLEX" */,
);
productRefGroup = FE94E5221CCBA74F00FAE755 /* Products */;
projectDirPath = "";
@ -1339,6 +1356,21 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
2FBAFA92375F42B48E2A05E7 /* Upload Debug Symbols to Sentry */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}",
);
name = "Upload Debug Symbols to Sentry";
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "# This script is responsable to upload debug symbols and source context for Sentry.\nif which sentry-cli >/dev/null; then\nexport SENTRY_ORG=snikket\nexport SENTRY_PROJECT=snikket-ios\nERROR=$(sentry-cli debug-files upload --include-sources \"$DWARF_DSYM_FOLDER_PATH\" 2>&1 >/dev/null)\nif [ ! $? -eq 0 ]; then\necho \"warning: sentry-cli - $ERROR\"\nfi\nelse\necho \"warning: sentry-cli not installed, download from https://github.com/getsentry/sentry-cli/releases\"\nfi\n";
};
3795F91E26FB55270067361A /* BartyCrouch */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@ -1819,7 +1851,7 @@
CODE_SIGN_ENTITLEMENTS = "Snikket - Share/Snikket - Share.entitlements";
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 6;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 2YH6MCD3C8;
ENABLE_BITCODE = NO;
HEADER_SEARCH_PATHS = (
@ -1852,7 +1884,7 @@
CODE_SIGN_ENTITLEMENTS = "Snikket - Share/Snikket - Share.entitlements";
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 6;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 2YH6MCD3C8;
ENABLE_BITCODE = NO;
HEADER_SEARCH_PATHS = (
@ -1887,7 +1919,7 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 6;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 2YH6MCD3C8;
ENABLE_BITCODE = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
@ -1927,7 +1959,7 @@
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 6;
CURRENT_PROJECT_VERSION = 8;
DEVELOPMENT_TEAM = 2YH6MCD3C8;
ENABLE_BITCODE = NO;
GCC_C_LANGUAGE_STANDARD = gnu11;
@ -1966,7 +1998,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5;
CURRENT_PROJECT_VERSION = 8;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 2YH6MCD3C8;
DYLIB_COMPATIBILITY_VERSION = 1;
@ -2016,7 +2048,7 @@
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 5;
CURRENT_PROJECT_VERSION = 8;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 2YH6MCD3C8;
DYLIB_COMPATIBILITY_VERSION = 1;
@ -2095,6 +2127,10 @@
"DEBUG=1",
"$(inherited)",
);
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = (
"$(inherited)",
"SENTRY_DSN=\"$(SENTRY_DSN)\"",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
@ -2105,6 +2141,7 @@
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SENTRY_DSN = "https://2e8adc06474546148a749840dccd7e17@glitch.snikket.net/2";
SWIFT_OBJC_BRIDGING_HEADER = "Snikket/SiskinIM-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
TARGETED_DEVICE_FAMILY = "1,2";
@ -2151,6 +2188,7 @@
FRAMEWORK_SEARCH_PATHS = "";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
"GCC_PREPROCESSOR_DEFINITIONS[arch=*]" = "SENTRY_DSN=\"$(SENTRY_DSN)\"";
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
@ -2161,6 +2199,7 @@
MTL_ENABLE_DEBUG_INFO = NO;
ONLY_ACTIVE_ARCH = NO;
SDKROOT = iphoneos;
SENTRY_DSN = "https://2e8adc06474546148a749840dccd7e17@glitch.snikket.net/2";
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OBJC_BRIDGING_HEADER = "Snikket/SiskinIM-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-O";
@ -2178,10 +2217,11 @@
CODE_SIGN_ENTITLEMENTS = Snikket/Snikket.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 6;
CURRENT_PROJECT_VERSION = 8;
DEAD_CODE_STRIPPING = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 2YH6MCD3C8;
DEV_BUILD = 1;
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@ -2205,6 +2245,7 @@
PROVISIONING_PROFILE = "";
PROVISIONING_PROFILE_SPECIFIER = "";
STRIP_INSTALLED_PRODUCT = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_INCLUDE_PATHS = "$(SRCROOT)/Modules/";
SWIFT_OBJC_BRIDGING_HEADER = "Snikket/SiskinIM-Bridging-Header.h";
SWIFT_VERSION = 5.0;
@ -2219,9 +2260,11 @@
CODE_SIGN_ENTITLEMENTS = Snikket/Snikket.entitlements;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CURRENT_PROJECT_VERSION = 6;
CURRENT_PROJECT_VERSION = 8;
DEAD_CODE_STRIPPING = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = 2YH6MCD3C8;
DEV_BUILD = "";
ENABLE_BITCODE = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
@ -2303,6 +2346,14 @@
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
344615C92B763FA3009737D5 /* XCRemoteSwiftPackageReference "FLEX" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/FLEXTool/FLEX.git";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 5.0.0;
};
};
3797D5BE26EA456F0091DAF8 /* XCRemoteSwiftPackageReference "hsluv-swift" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/hsluv/hsluv-swift.git";
@ -2311,6 +2362,14 @@
minimumVersion = 2.1.0;
};
};
ECEB0118F469422FA8CDCF44 /* XCRemoteSwiftPackageReference "sentry-cocoa" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/getsentry/sentry-cocoa/";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 8.0.0;
};
};
FEC9B1122440E79D00A484EE /* XCRemoteSwiftPackageReference "tigase-swift-omemo" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/tigase/tigase-swift-omemo/";
@ -2322,6 +2381,16 @@
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
0F8BEE16761C407DAA65C712 /* Sentry */ = {
isa = XCSwiftPackageProductDependency;
package = ECEB0118F469422FA8CDCF44 /* XCRemoteSwiftPackageReference "sentry-cocoa" */;
productName = Sentry;
};
344615CA2B763FA3009737D5 /* FLEX */ = {
isa = XCSwiftPackageProductDependency;
package = 344615C92B763FA3009737D5 /* XCRemoteSwiftPackageReference "FLEX" */;
productName = FLEX;
};
3797D5BF26EA456F0091DAF8 /* HSLuvSwift */ = {
isa = XCSwiftPackageProductDependency;
package = 3797D5BE26EA456F0091DAF8 /* XCRemoteSwiftPackageReference "hsluv-swift" */;

View File

@ -1,43 +1,59 @@
{
"object": {
"pins": [
{
"package": "HSLuvSwift",
"repositoryURL": "https://github.com/hsluv/hsluv-swift.git",
"state": {
"branch": null,
"revision": "9dee4378180f2a9a33c96bc20284cf64158dbe1b",
"version": "2.1.0"
}
},
{
"package": "libsignal",
"repositoryURL": "https://github.com/tigase/libsignal",
"state": {
"branch": null,
"revision": "d23d5af0d729cf66b93cea607f3f84a34b9fddfd",
"version": "1.0.0"
}
},
{
"package": "TigaseSwift",
"repositoryURL": "https://github.com/tigase/tigase-swift",
"state": {
"branch": null,
"revision": "d3953dcea80010ad433fa96d7ca6b989bf58850c",
"version": "2.1.3"
}
},
{
"package": "TigaseSwiftOMEMO",
"repositoryURL": "https://github.com/tigase/tigase-swift-omemo/",
"state": {
"branch": null,
"revision": "4c997df9a3a686b7e522ddffa4d2f2c070a94fa0",
"version": "1.1.3"
}
"pins" : [
{
"identity" : "flex",
"kind" : "remoteSourceControl",
"location" : "https://github.com/FLEXTool/FLEX.git",
"state" : {
"revision" : "e0acf59d06d498041f65bbea1e5914b6e4b39733",
"version" : "5.22.10"
}
]
},
"version": 1
},
{
"identity" : "hsluv-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/hsluv/hsluv-swift.git",
"state" : {
"revision" : "9dee4378180f2a9a33c96bc20284cf64158dbe1b",
"version" : "2.1.0"
}
},
{
"identity" : "libsignal",
"kind" : "remoteSourceControl",
"location" : "https://github.com/tigase/libsignal",
"state" : {
"revision" : "d23d5af0d729cf66b93cea607f3f84a34b9fddfd",
"version" : "1.0.0"
}
},
{
"identity" : "sentry-cocoa",
"kind" : "remoteSourceControl",
"location" : "https://github.com/getsentry/sentry-cocoa/",
"state" : {
"revision" : "74cf23b2946c92550fb1185612077151497e648e",
"version" : "8.17.1"
}
},
{
"identity" : "tigase-swift",
"kind" : "remoteSourceControl",
"location" : "https://github.com/tigase/tigase-swift",
"state" : {
"revision" : "d3953dcea80010ad433fa96d7ca6b989bf58850c",
"version" : "2.1.3"
}
},
{
"identity" : "tigase-swift-omemo",
"kind" : "remoteSourceControl",
"location" : "https://github.com/tigase/tigase-swift-omemo/",
"state" : {
"revision" : "4c997df9a3a686b7e522ddffa4d2f2c070a94fa0",
"version" : "1.1.3"
}
}
],
"version" : 2
}

View File

@ -22,6 +22,7 @@
import UIKit
import UserNotifications
import TigaseSwift
import Sentry
import Shared
import WebRTC
import BackgroundTasks
@ -45,6 +46,15 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
let notificationCenterDelegate = NotificationCenterDelegate();
func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
if(isSimulatorOrTestFlight()) {
if let sentry_dsn = Bundle.main.infoDictionary?["Sentry DSN"] as? String {
SentrySDK.start { options in
options.dsn = sentry_dsn
};
}
}
if #available(iOS 13, *) {
BGTaskScheduler.shared.register(forTaskWithIdentifier: backgroundRefreshTaskIdentifier, using: nil) { (task) in
self.handleAppRefresh(task: task as! BGAppRefreshTask);
@ -705,6 +715,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
self.window?.rootViewController = UIStoryboard(name: "Main", bundle: nil).instantiateInitialViewController();
(self.window?.rootViewController as? UISplitViewController)?.preferredDisplayMode = .allVisible;
}
private func isSimulatorOrTestFlight() -> Bool {
guard let path = Bundle.main.appStoreReceiptURL?.path else {
return false;
}
return path.contains("CoreSimulator") || path.contains("sandboxReceipt");
}
struct XmppUri {

View File

@ -87,6 +87,8 @@
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
</array>
<key>Sentry DSN</key>
<string>$(SENTRY_DSN)</string>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>