From 7ac2ee040dcf70c67913da246be43108e24bb8b8 Mon Sep 17 00:00:00 2001 From: Philip Niedertscheider Date: Mon, 1 Sep 2025 12:40:04 +0200 Subject: [PATCH 1/5] chore: Add xcodegen for Xcode Project generation --- .pre-commit-config.yaml | 9 + Brewfile | 1 + Brewfile-ci | 1 + Flinky.xcodeproj/project.pbxproj | 1776 ++++++++--------- .../xcshareddata/xcschemes/App.xcscheme | 100 +- .../xcschemes/FlinkyCore.xcscheme | 41 +- .../xcschemes/FlinkyCoreTests.xcscheme | 71 +- .../xcschemes/ScreenshotUITests.xcscheme | 51 +- .../xcschemes/ShareExtension.xcscheme | 95 +- .../xcschemes/ShareExtensionTests.xcscheme | 71 +- .../xcschemes/ShareExtensionUITests.xcscheme | 128 +- .../xcshareddata/xcschemes/Tests.xcscheme | 82 +- .../xcshareddata/xcschemes/UITests.xcscheme | 71 +- Makefile | 9 +- Scripts/generate-project.sh | 39 + Targets/App/Sources/Resources/Info.plist | 46 +- .../Sources/Resources/Info.plist | 16 + project.yml | 689 +++++++ 18 files changed, 2023 insertions(+), 1273 deletions(-) create mode 100755 Scripts/generate-project.sh create mode 100644 project.yml diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ba6bf8b..b0266be 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -26,6 +26,15 @@ repos: - repo: local hooks: + - id: generate-project + name: Generate Xcode Project + entry: make + language: system + files: ^(project\.yml|Makefile|Scripts/generate-project\.sh)$ + pass_filenames: false + args: + - "generate-project" + - id: generate-localization name: Generate Localization entry: make diff --git a/Brewfile b/Brewfile index e820b33..9dc9bf4 100644 --- a/Brewfile +++ b/Brewfile @@ -3,3 +3,4 @@ brew "jq" brew "licenseplist" brew "swiftgen" brew "swiftlint" +brew "xcodegen" diff --git a/Brewfile-ci b/Brewfile-ci index 200af71..0cb0bd7 100644 --- a/Brewfile-ci +++ b/Brewfile-ci @@ -1,3 +1,4 @@ brew "licenseplist" brew "swiftgen" brew "jq" +brew "xcodegen" diff --git a/Flinky.xcodeproj/project.pbxproj b/Flinky.xcodeproj/project.pbxproj index 145b21d..a40b5e0 100644 --- a/Flinky.xcodeproj/project.pbxproj +++ b/Flinky.xcodeproj/project.pbxproj @@ -7,169 +7,144 @@ objects = { /* Begin PBXBuildFile section */ - D410FC5D2F3C8AAB0028B18D /* SentrySPM in Frameworks */ = {isa = PBXBuildFile; productRef = D410FC5C2F3C8AAB0028B18D /* SentrySPM */; }; - D44A62A62E33B2800018D789 /* OnLaunch in Frameworks */ = {isa = PBXBuildFile; productRef = D44A62A52E33B2800018D789 /* OnLaunch */; }; - D4563C912EBA0B4C005B33E2 /* FlinkyCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4A5DC462E46133A00027944 /* FlinkyCore.framework */; }; - D462B7812E659CC8006EB4FB /* ShareExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = D4D509DF2E4621120067A402 /* ShareExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; - D4A016252E83E4EB00117E01 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4A016242E83E4EB00117E01 /* SwiftUI.framework */; }; - D4A016272E83E8FB00117E01 /* SFSafeSymbols in Frameworks */ = {isa = PBXBuildFile; productRef = D4A016262E83E8FB00117E01 /* SFSafeSymbols */; }; - D4A5DC592E46133A00027944 /* FlinkyCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4A5DC462E46133A00027944 /* FlinkyCore.framework */; }; - D4A5DC5A2E46133A00027944 /* FlinkyCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D4A5DC462E46133A00027944 /* FlinkyCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - D4A5DD8E2E46142D00027944 /* SFSafeSymbols in Frameworks */ = {isa = PBXBuildFile; productRef = D4A5DD8D2E46142D00027944 /* SFSafeSymbols */; }; - D4A5DD932E46146400027944 /* FlinkyCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4A5DC462E46133A00027944 /* FlinkyCore.framework */; }; - D4A5DD942E46146400027944 /* FlinkyCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D4A5DC462E46133A00027944 /* FlinkyCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - D4A5DD9B2E46160F00027944 /* SFSafeSymbols in Frameworks */ = {isa = PBXBuildFile; productRef = D4A5DD9A2E46160F00027944 /* SFSafeSymbols */; }; - D4C71A142F3C8B05006E688D /* SentrySPM in Frameworks */ = {isa = PBXBuildFile; productRef = D4C71A132F3C8B05006E688D /* SentrySPM */; }; - D4CFD1792E1E38F2001447E9 /* SFSafeSymbols in Frameworks */ = {isa = PBXBuildFile; productRef = D4CFD1782E1E38F2001447E9 /* SFSafeSymbols */; }; - D4E7891B2E461A95005DA720 /* FlinkyCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D4A5DC462E46133A00027944 /* FlinkyCore.framework */; }; - D4E7891C2E461A95005DA720 /* FlinkyCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = D4A5DC462E46133A00027944 /* FlinkyCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 05582DF93304B1D434E21AF0 /* SFSafeSymbols in Frameworks */ = {isa = PBXBuildFile; productRef = AE7122B036132C0461B34AF9 /* SFSafeSymbols */; }; + 12DA7CC0AF980F25EA979B43 /* FlinkyCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 2803E8EFE89B86291A9F548B /* SentrySPM in Frameworks */ = {isa = PBXBuildFile; productRef = 2C01956AD6D5DCCAF3C28AEC /* SentrySPM */; }; + 2C6BD987973308B0243C414D /* SFSafeSymbols in Frameworks */ = {isa = PBXBuildFile; productRef = BAC933ED42E376C5EF3C8AE7 /* SFSafeSymbols */; }; + 44A98D85DE55F00485CF0BF7 /* SFSafeSymbols in Frameworks */ = {isa = PBXBuildFile; productRef = 4C5E157AB4255CF94CE0CD0E /* SFSafeSymbols */; }; + 47F425A51946B30DC6A79C10 /* FlinkyCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */; }; + 4CF5126445ED73B8B846D14E /* FlinkyCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */; }; + 870405694591E5E5755B022D /* OnLaunch in Frameworks */ = {isa = PBXBuildFile; productRef = D0FC6FBC28AA198B583B6E3D /* OnLaunch */; }; + 9E7275EF9F1526BF331CACC9 /* FlinkyCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + A672FE160B683BA384D6108C /* SentrySPM in Frameworks */ = {isa = PBXBuildFile; productRef = 6CA689DC420160A093867FA6 /* SentrySPM */; }; + B05A2599B67DE9E9EE6F9740 /* FlinkyCore.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + B39E2B105C21799E412447E7 /* SFSafeSymbols in Frameworks */ = {isa = PBXBuildFile; productRef = C575308CEAAD4A95163ADBBD /* SFSafeSymbols */; }; + CB1BB79DA170E18EB4292621 /* FlinkyCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */; }; + D6D0A17BDDD289306B0FCCA7 /* FlinkyCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */; }; + F5F988FA16D87E7E098A61A9 /* ShareExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = ACA557858781CC46D5336CFC /* ShareExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - D40BEC1B2E2EE0C500391C5A /* PBXContainerItemProxy */ = { + 124C8FFF31024696DA8DDAB1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4D359D82E1BDF540006226D; - remoteInfo = Flinky; + remoteGlobalIDString = 43502ECD46B23B0DE3807D91; + remoteInfo = FlinkyCore; }; - D462B7822E659CC8006EB4FB /* PBXContainerItemProxy */ = { + 22753C479E53007CBFD19241 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4D509DE2E4621120067A402; - remoteInfo = ShareExtension; + remoteGlobalIDString = 9198AA103876EC14A96930E2; + remoteInfo = Flinky; }; - D4A014D22E83DE2900117E01 /* PBXContainerItemProxy */ = { + 32CB2A76CB9ADE3E50BEA9F0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4D359D82E1BDF540006226D; + remoteGlobalIDString = 9198AA103876EC14A96930E2; remoteInfo = Flinky; }; - D4A014E92E83E11500117E01 /* PBXContainerItemProxy */ = { + 358642B03CF36AA3A156A9A9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4D359D82E1BDF540006226D; + remoteGlobalIDString = 9198AA103876EC14A96930E2; remoteInfo = Flinky; }; - D4A5DC572E46133A00027944 /* PBXContainerItemProxy */ = { + 6653690A7C9AF7A4451DB6A4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4A5DC452E46133A00027944; - remoteInfo = FlinkyShared; + remoteGlobalIDString = 9198AA103876EC14A96930E2; + remoteInfo = Flinky; }; - D4A5DD912E46143F00027944 /* PBXContainerItemProxy */ = { + 677D010EDA511ACF334716F2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4A5DC452E46133A00027944; - remoteInfo = FlinkyShared; + remoteGlobalIDString = 9198AA103876EC14A96930E2; + remoteInfo = Flinky; }; - D4A5DD952E46146400027944 /* PBXContainerItemProxy */ = { + 696270A9512FE11B633B73DE /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4A5DC452E46133A00027944; - remoteInfo = FlinkyShared; + remoteGlobalIDString = 43502ECD46B23B0DE3807D91; + remoteInfo = FlinkyCore; }; - D4CD57102ECF2A4900C36BF6 /* PBXContainerItemProxy */ = { + 798AC121ECEB92319E9AFF45 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4A5DC452E46133A00027944; + remoteGlobalIDString = 43502ECD46B23B0DE3807D91; remoteInfo = FlinkyCore; }; - D4D509E72E4621120067A402 /* PBXContainerItemProxy */ = { + 8F945886DF1923AE94315D28 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4D509DE2E4621120067A402; + remoteGlobalIDString = 5DE7B4773E669E09577A0496; remoteInfo = ShareExtension; }; - D4D50A0A2E46286D0067A402 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; - proxyType = 1; - remoteGlobalIDString = D4D359D82E1BDF540006226D; - remoteInfo = Flinky; - }; - D4E7891D2E461A95005DA720 /* PBXContainerItemProxy */ = { + B95311C7917B142FE0424297 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4A5DC452E46133A00027944; + remoteGlobalIDString = 43502ECD46B23B0DE3807D91; remoteInfo = FlinkyCore; }; - D4E789252E461B19005DA720 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; - proxyType = 1; - remoteGlobalIDString = D4D359D82E1BDF540006226D; - remoteInfo = Flinky; - }; - D4ECAABA2E3CF6FB00C757EA /* PBXContainerItemProxy */ = { + E4B36CC7086BD34BFC4B079C /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = D4D359D12E1BDF540006226D /* Project object */; + containerPortal = 965CCBA3B785C83A5EEAFD09 /* Project object */; proxyType = 1; - remoteGlobalIDString = D4D359D82E1BDF540006226D; + remoteGlobalIDString = 9198AA103876EC14A96930E2; remoteInfo = Flinky; }; /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ - D4563C902EBA0B44005B33E2 /* Embed Frameworks */ = { + 1FB59A30ACFA1D79C6D1FE51 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( + 12DA7CC0AF980F25EA979B43 /* FlinkyCore.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; - D4A5DC5E2E46133A00027944 /* Embed Frameworks */ = { + 300593F2D75D50AE9B613D60 /* Embed Foundation Extensions */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; - dstSubfolderSpec = 10; + dstSubfolderSpec = 13; files = ( - D4A5DC5A2E46133A00027944 /* FlinkyCore.framework in Embed Frameworks */, + F5F988FA16D87E7E098A61A9 /* ShareExtension.appex in Embed Foundation Extensions */, ); - name = "Embed Frameworks"; + name = "Embed Foundation Extensions"; runOnlyForDeploymentPostprocessing = 0; }; - D4A5DD972E46146400027944 /* Embed Frameworks */ = { + 921A583A44821552BC0FF8FB /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - D4A5DD942E46146400027944 /* FlinkyCore.framework in Embed Frameworks */, + 9E7275EF9F1526BF331CACC9 /* FlinkyCore.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; }; - D4D509EE2E4621120067A402 /* Embed Foundation Extensions */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = ""; - dstSubfolderSpec = 13; - files = ( - D462B7812E659CC8006EB4FB /* ShareExtension.appex in Embed Foundation Extensions */, - ); - name = "Embed Foundation Extensions"; - runOnlyForDeploymentPostprocessing = 0; - }; - D4E7891F2E461A95005DA720 /* Embed Frameworks */ = { + A895ACDE37F35E1ABEACEB2F /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - D4E7891C2E461A95005DA720 /* FlinkyCore.framework in Embed Frameworks */, + B05A2599B67DE9E9EE6F9740 /* FlinkyCore.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -177,756 +152,660 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - D40BEC172E2EE0C500391C5A /* Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - D4A014CC2E83DE2900117E01 /* UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - D4A014E52E83E11500117E01 /* ShareExtensionTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ShareExtensionTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - D4A016242E83E4EB00117E01 /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.5.sdk/System/iOSSupport/System/Library/Frameworks/SwiftUI.framework; sourceTree = DEVELOPER_DIR; }; - D4A5DC462E46133A00027944 /* FlinkyCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FlinkyCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D4D359D92E1BDF540006226D /* Flinky.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Flinky.app; sourceTree = BUILT_PRODUCTS_DIR; }; - D4D509DF2E4621120067A402 /* ShareExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; - D4D50A042E46286D0067A402 /* ShareExtensionUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ShareExtensionUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - D4E789122E461A83005DA720 /* FlinkyCoreTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FlinkyCoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - D4ECAAB42E3CF6FB00C757EA /* ScreenshotUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ScreenshotUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 059BCB5750D9FA391DD12D81 /* ScreenshotUITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = ScreenshotUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 1D900CBF09B14E24193D89A4 /* UITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 38564E628219DE7E3AB7A218 /* Tests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 42A63C68C7CE52097D4D6A87 /* ShareExtensionUITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = ShareExtensionUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FlinkyCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 5A78BDEF1343DB01FD30C085 /* Flinky.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Flinky.app; sourceTree = BUILT_PRODUCTS_DIR; }; + ACA557858781CC46D5336CFC /* ShareExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = ShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; + C125331DA10E849935655F97 /* ShareExtensionTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = ShareExtensionTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + D0E29C2ADD1C55FDD65047F6 /* FlinkyCoreTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = FlinkyCoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - D4A014F42E83E1C400117E01 /* Exceptions for "Config" folder in "ShareExtensionTests" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - ShareExtensionTests.xctestplan, - ); - target = D4A014E42E83E11500117E01 /* ShareExtensionTests */; - }; - D4D509EA2E4621120067A402 /* Exceptions for "Sources" folder in "ShareExtension" target */ = { + A3EDFFCDCD55C83D0CADFC94 /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( Resources/Info.plist, - ); - target = D4D509DE2E4621120067A402 /* ShareExtension */; - }; - D4E788FD2E4619C5005DA720 /* Exceptions for "Sources" folder in "FlinkyCore" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( Resources/Localizable.xcstrings, ); - target = D4A5DC452E46133A00027944 /* FlinkyCore */; + target = 5DE7B4773E669E09577A0496 /* ShareExtension */; }; - D4F7B8E42E4205EF004A2D77 /* Exceptions for "Sources" folder in "Flinky" target */ = { + BE3C127FE0C4A3162480CE38 /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( - Resources/Info.plist, + Sources/Resources/Info.plist, ); - target = D4D359D82E1BDF540006226D /* Flinky */; + target = 9198AA103876EC14A96930E2 /* Flinky */; }; -/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ - -/* Begin PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ - D4E788FE2E4619C5005DA720 /* Exceptions for "Sources" folder in "Compile Sources" phase from "FlinkyCore" target */ = { - isa = PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet; - buildPhase = D4A5DC422E46133A00027944 /* Sources */; + E651A0D863A3C222423586CC /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( Resources/Localizable.xcstrings, ); + target = 43502ECD46B23B0DE3807D91 /* FlinkyCore */; }; -/* End PBXFileSystemSynchronizedGroupBuildPhaseMembershipExceptionSet section */ +/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ - D40BEF142E2EFFD600391C5A /* Generated */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = Generated; - sourceTree = ""; - }; - D40BEF182E2EFFDD00391C5A /* Scripts */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = Scripts; - sourceTree = ""; - }; - D40BEF1B2E2EFFE300391C5A /* Templates */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = Templates; - sourceTree = ""; - }; - D4A014872E83DDA500117E01 /* Sources */ = { + 00899E2C91190631EDD856E2 /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; + explicitFileTypes = { + }; + explicitFolders = ( + ); + name = Sources; path = Sources; sourceTree = ""; }; - D4A0148B2E83DDB300117E01 /* Config */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = Config; - sourceTree = ""; - }; - D4A0148D2E83DDCA00117E01 /* Config */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = Config; - sourceTree = ""; - }; - D4A014A92E83DDCA00117E01 /* Sources */ = { + 3785698F0DB7A7D24A15CB42 /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; + explicitFileTypes = { + }; + explicitFolders = ( + ); + name = Sources; path = Sources; sourceTree = ""; }; - D4A014C32E83DDEC00117E01 /* Config */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = Config; - sourceTree = ""; - }; - D4A014C52E83DDEC00117E01 /* Sources */ = { + 5273A9C7338FEC307FF81394 /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; + explicitFileTypes = { + }; + explicitFolders = ( + ); + name = Sources; path = Sources; sourceTree = ""; }; - D4A014DA2E83DE6400117E01 /* Sources */ = { + 68B44DF7DB1B234C2FE0515C /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; + explicitFileTypes = { + }; + explicitFolders = ( + ); + name = Sources; path = Sources; sourceTree = ""; }; - D4A014DE2E83DF3100117E01 /* Config */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = Config; - sourceTree = ""; - }; - D4A014F12E83E18700117E01 /* Sources */ = { + 8C7AFEE60176D28EB8433EF0 /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; + explicitFileTypes = { + }; + explicitFolders = ( + ); + name = Sources; path = Sources; sourceTree = ""; }; - D4A014F32E83E1BF00117E01 /* Config */ = { + A04DE5BF04B0E902D35CBE03 /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - D4A014F42E83E1C400117E01 /* Exceptions for "Config" folder in "ShareExtensionTests" target */, + A3EDFFCDCD55C83D0CADFC94 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); - path = Config; - sourceTree = ""; - }; - D4D359DB2E1BDF540006226D /* Sources */ = { - isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - D4F7B8E42E4205EF004A2D77 /* Exceptions for "Sources" folder in "Flinky" target */, + explicitFileTypes = { + }; + explicitFolders = ( ); + name = Sources; path = Sources; sourceTree = ""; }; - D4D509E02E4621120067A402 /* Sources */ = { + BC5F79CA9A38A9EE6E30D032 /* App */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - D4D509EA2E4621120067A402 /* Exceptions for "Sources" folder in "ShareExtension" target */, + BE3C127FE0C4A3162480CE38 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); - path = Sources; + explicitFileTypes = { + }; + explicitFolders = ( + ); + name = App; + path = App; sourceTree = ""; }; - D4E788512E461996005DA720 /* Sources */ = { + C61D7A355BA14243C5CB1404 /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; + explicitFileTypes = { + }; + explicitFolders = ( + ); + name = Sources; path = Sources; sourceTree = ""; }; - D4E7886E2E4619A6005DA720 /* Config */ = { - isa = PBXFileSystemSynchronizedRootGroup; - path = Config; - sourceTree = ""; - }; - D4E788DC2E4619C5005DA720 /* Sources */ = { + C806D5E5F780EFAF23B190B9 /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - D4E788FD2E4619C5005DA720 /* Exceptions for "Sources" folder in "FlinkyCore" target */, - D4E788FE2E4619C5005DA720 /* Exceptions for "Sources" folder in "Compile Sources" phase from "FlinkyCore" target */, + E651A0D863A3C222423586CC /* PBXFileSystemSynchronizedBuildFileExceptionSet */, + ); + explicitFileTypes = { + }; + explicitFolders = ( ); + name = Sources; path = Sources; sourceTree = ""; }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ - D40BEC142E2EE0C500391C5A /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D4A5DD9B2E46160F00027944 /* SFSafeSymbols in Frameworks */, - D4A5DD932E46146400027944 /* FlinkyCore.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D4A014C92E83DE2900117E01 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D4A014E22E83E11500117E01 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D4A5DC432E46133A00027944 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - D4A016252E83E4EB00117E01 /* SwiftUI.framework in Frameworks */, - D4A5DD8E2E46142D00027944 /* SFSafeSymbols in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D4D359D62E1BDF540006226D /* Frameworks */ = { + 0CC31B226CC106C2B3B64406 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D44A62A62E33B2800018D789 /* OnLaunch in Frameworks */, - D4A5DC592E46133A00027944 /* FlinkyCore.framework in Frameworks */, - D410FC5D2F3C8AAB0028B18D /* SentrySPM in Frameworks */, - D4CFD1792E1E38F2001447E9 /* SFSafeSymbols in Frameworks */, + CB1BB79DA170E18EB4292621 /* FlinkyCore.framework in Frameworks */, + 2C6BD987973308B0243C414D /* SFSafeSymbols in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D4D509DC2E4621120067A402 /* Frameworks */ = { + 419A4B1CDDBE3527B80A74AE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D4C71A142F3C8B05006E688D /* SentrySPM in Frameworks */, - D4563C912EBA0B4C005B33E2 /* FlinkyCore.framework in Frameworks */, + D6D0A17BDDD289306B0FCCA7 /* FlinkyCore.framework in Frameworks */, + A672FE160B683BA384D6108C /* SentrySPM in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D4D50A012E46286D0067A402 /* Frameworks */ = { + A30BC942211C9FFF85674D3F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 47F425A51946B30DC6A79C10 /* FlinkyCore.framework in Frameworks */, + B39E2B105C21799E412447E7 /* SFSafeSymbols in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D4E7890F2E461A83005DA720 /* Frameworks */ = { + C8E868C6558174D58D749104 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D4A016272E83E8FB00117E01 /* SFSafeSymbols in Frameworks */, - D4E7891B2E461A95005DA720 /* FlinkyCore.framework in Frameworks */, + 05582DF93304B1D434E21AF0 /* SFSafeSymbols in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - D4ECAAB12E3CF6FB00C757EA /* Frameworks */ = { + FBFACB88D9CA43FE8A1BBBE7 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 4CF5126445ED73B8B846D14E /* FlinkyCore.framework in Frameworks */, + 44A98D85DE55F00485CF0BF7 /* SFSafeSymbols in Frameworks */, + 2803E8EFE89B86291A9F548B /* SentrySPM in Frameworks */, + 870405694591E5E5755B022D /* OnLaunch in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - D4A014822E83DD4300117E01 /* FlinkyCoreTests */ = { + 1A0019A19038AEB5DB058ADE /* ShareExtensionUITests */ = { isa = PBXGroup; children = ( - D4A0148D2E83DDCA00117E01 /* Config */, - D4A014A92E83DDCA00117E01 /* Sources */, + 00899E2C91190631EDD856E2 /* Sources */, ); - path = FlinkyCoreTests; - sourceTree = ""; - }; - D4A014832E83DD6300117E01 /* ScreenshotUITests */ = { - isa = PBXGroup; - children = ( - D4A0148B2E83DDB300117E01 /* Config */, - D4A014872E83DDA500117E01 /* Sources */, - ); - path = ScreenshotUITests; + path = ShareExtensionUITests; sourceTree = ""; }; - D4A014842E83DD7500117E01 /* ShareExtensionUITests */ = { + 1BFAEE6BD3117452598FEF9E /* FlinkyCore */ = { isa = PBXGroup; children = ( - D4A014C32E83DDEC00117E01 /* Config */, - D4A014C52E83DDEC00117E01 /* Sources */, + C806D5E5F780EFAF23B190B9 /* Sources */, ); - path = ShareExtensionUITests; + path = FlinkyCore; sourceTree = ""; }; - D4A014D72E83DE4E00117E01 /* UITests */ = { + 27F9FACA2BBF95F166C8D268 = { isa = PBXGroup; children = ( - D4A014DE2E83DF3100117E01 /* Config */, - D4A014DA2E83DE6400117E01 /* Sources */, + D93A947CD72C6E70326EEFA5 /* Targets */, + E2959B8E61645ABA034130D7 /* Products */, ); - path = UITests; sourceTree = ""; }; - D4A014EF2E83E18300117E01 /* ShareExtensionTests */ = { + 307D936DE9A998C7E3F9F8C4 /* FlinkyCoreTests */ = { isa = PBXGroup; children = ( - D4A014F32E83E1BF00117E01 /* Config */, - D4A014F12E83E18700117E01 /* Sources */, + 8C7AFEE60176D28EB8433EF0 /* Sources */, ); - path = ShareExtensionTests; + path = FlinkyCoreTests; sourceTree = ""; }; - D4A016232E83E4EB00117E01 /* Frameworks */ = { + 3E92154CA14A72C25E3763AD /* ScreenshotUITests */ = { isa = PBXGroup; children = ( - D4A016242E83E4EB00117E01 /* SwiftUI.framework */, + C61D7A355BA14243C5CB1404 /* Sources */, ); - name = Frameworks; + path = ScreenshotUITests; sourceTree = ""; }; - D4D359D02E1BDF540006226D = { + 50D41DDCC1D09F20C8859BC5 /* UITests */ = { isa = PBXGroup; children = ( - D4E787FD2E46192F005DA720 /* Targets */, - D40BEF182E2EFFDD00391C5A /* Scripts */, - D40BEF1B2E2EFFE300391C5A /* Templates */, - D4A016232E83E4EB00117E01 /* Frameworks */, - D4D359DA2E1BDF540006226D /* Products */, + 5273A9C7338FEC307FF81394 /* Sources */, ); + path = UITests; sourceTree = ""; }; - D4D359DA2E1BDF540006226D /* Products */ = { + A46B7CC8C36D029F9A827199 /* ShareExtensionTests */ = { isa = PBXGroup; children = ( - D4D359D92E1BDF540006226D /* Flinky.app */, - D40BEC172E2EE0C500391C5A /* Tests.xctest */, - D4ECAAB42E3CF6FB00C757EA /* ScreenshotUITests.xctest */, - D4A5DC462E46133A00027944 /* FlinkyCore.framework */, - D4E789122E461A83005DA720 /* FlinkyCoreTests.xctest */, - D4D509DF2E4621120067A402 /* ShareExtension.appex */, - D4D50A042E46286D0067A402 /* ShareExtensionUITests.xctest */, - D4A014CC2E83DE2900117E01 /* UITests.xctest */, - D4A014E52E83E11500117E01 /* ShareExtensionTests.xctest */, + 68B44DF7DB1B234C2FE0515C /* Sources */, ); - name = Products; + path = ShareExtensionTests; sourceTree = ""; }; - D4D509EF2E4621200067A402 /* ShareExtension */ = { + B738778E59EACA800DB85495 /* ShareExtension */ = { isa = PBXGroup; children = ( - D4D509E02E4621120067A402 /* Sources */, + A04DE5BF04B0E902D35CBE03 /* Sources */, ); path = ShareExtension; sourceTree = ""; }; - D4E787FC2E461909005DA720 /* App */ = { + BFB02730826A464D54B00F64 /* Tests */ = { isa = PBXGroup; children = ( - D40BEF142E2EFFD600391C5A /* Generated */, - D4D359DB2E1BDF540006226D /* Sources */, + 3785698F0DB7A7D24A15CB42 /* Sources */, ); - path = App; + path = Tests; sourceTree = ""; }; - D4E787FD2E46192F005DA720 /* Targets */ = { + D93A947CD72C6E70326EEFA5 /* Targets */ = { isa = PBXGroup; children = ( - D4E787FC2E461909005DA720 /* App */, - D4E7881B2E461992005DA720 /* Tests */, - D4A014832E83DD6300117E01 /* ScreenshotUITests */, - D4A014D72E83DE4E00117E01 /* UITests */, - D4E788962E4619C3005DA720 /* FlinkyCore */, - D4A014822E83DD4300117E01 /* FlinkyCoreTests */, - D4D509EF2E4621200067A402 /* ShareExtension */, - D4A014842E83DD7500117E01 /* ShareExtensionUITests */, - D4A014EF2E83E18300117E01 /* ShareExtensionTests */, + BC5F79CA9A38A9EE6E30D032 /* App */, + 1BFAEE6BD3117452598FEF9E /* FlinkyCore */, + 307D936DE9A998C7E3F9F8C4 /* FlinkyCoreTests */, + 3E92154CA14A72C25E3763AD /* ScreenshotUITests */, + B738778E59EACA800DB85495 /* ShareExtension */, + A46B7CC8C36D029F9A827199 /* ShareExtensionTests */, + 1A0019A19038AEB5DB058ADE /* ShareExtensionUITests */, + BFB02730826A464D54B00F64 /* Tests */, + 50D41DDCC1D09F20C8859BC5 /* UITests */, ); path = Targets; sourceTree = ""; }; - D4E7881B2E461992005DA720 /* Tests */ = { - isa = PBXGroup; - children = ( - D4E7886E2E4619A6005DA720 /* Config */, - D4E788512E461996005DA720 /* Sources */, - ); - path = Tests; - sourceTree = ""; - }; - D4E788962E4619C3005DA720 /* FlinkyCore */ = { + E2959B8E61645ABA034130D7 /* Products */ = { isa = PBXGroup; children = ( - D4E788DC2E4619C5005DA720 /* Sources */, + 5A78BDEF1343DB01FD30C085 /* Flinky.app */, + 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */, + D0E29C2ADD1C55FDD65047F6 /* FlinkyCoreTests.xctest */, + 059BCB5750D9FA391DD12D81 /* ScreenshotUITests.xctest */, + ACA557858781CC46D5336CFC /* ShareExtension.appex */, + C125331DA10E849935655F97 /* ShareExtensionTests.xctest */, + 42A63C68C7CE52097D4D6A87 /* ShareExtensionUITests.xctest */, + 38564E628219DE7E3AB7A218 /* Tests.xctest */, + 1D900CBF09B14E24193D89A4 /* UITests.xctest */, ); - path = FlinkyCore; + name = Products; sourceTree = ""; }; /* End PBXGroup section */ -/* Begin PBXHeadersBuildPhase section */ - D4A5DC412E46133A00027944 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXHeadersBuildPhase section */ - /* Begin PBXNativeTarget section */ - D40BEC162E2EE0C500391C5A /* Tests */ = { + 31222234B0F5EAD020CD23EE /* UITests */ = { isa = PBXNativeTarget; - buildConfigurationList = D40BEC1D2E2EE0C500391C5A /* Build configuration list for PBXNativeTarget "Tests" */; + buildConfigurationList = 6D02AA9AF8BC09900D6610F8 /* Build configuration list for PBXNativeTarget "UITests" */; buildPhases = ( - D40BEC132E2EE0C500391C5A /* Sources */, - D40BEC142E2EE0C500391C5A /* Frameworks */, - D40BEC152E2EE0C500391C5A /* Resources */, - D4A5DD972E46146400027944 /* Embed Frameworks */, + E6262D550689382CDE05568C /* Sources */, + E32581141A7135EB664B31E5 /* Resources */, ); buildRules = ( ); dependencies = ( - D4A5DD992E46160B00027944 /* PBXTargetDependency */, - D4A5DD922E46143F00027944 /* PBXTargetDependency */, - D40BEC1C2E2EE0C500391C5A /* PBXTargetDependency */, - D4A5DD962E46146400027944 /* PBXTargetDependency */, + A25E8AC4D9389C9C5FEA8555 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - D4E788512E461996005DA720 /* Sources */, + 5273A9C7338FEC307FF81394 /* Sources */, ); - name = Tests; + name = UITests; packageProductDependencies = ( - D4A5DD9A2E46160F00027944 /* SFSafeSymbols */, ); - productName = Tests; - productReference = D40BEC172E2EE0C500391C5A /* Tests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; + productName = UITests; + productReference = 1D900CBF09B14E24193D89A4 /* UITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; }; - D4A014CB2E83DE2900117E01 /* UITests */ = { + 43502ECD46B23B0DE3807D91 /* FlinkyCore */ = { isa = PBXNativeTarget; - buildConfigurationList = D4A014D42E83DE2900117E01 /* Build configuration list for PBXNativeTarget "UITests" */; + buildConfigurationList = 8C498AAB9092C57FE8C4329F /* Build configuration list for PBXNativeTarget "FlinkyCore" */; buildPhases = ( - D4A014C82E83DE2900117E01 /* Sources */, - D4A014C92E83DE2900117E01 /* Frameworks */, - D4A014CA2E83DE2900117E01 /* Resources */, + 5B309345733300975E1890B0 /* Run Script - Generate Files */, + 5BB4EF586157D92FB61F734E /* Sources */, + D660524347B5A7FDA06E3DE6 /* Resources */, + C8E868C6558174D58D749104 /* Frameworks */, ); buildRules = ( ); dependencies = ( - D4A014D32E83DE2900117E01 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - D4A014DA2E83DE6400117E01 /* Sources */, + C806D5E5F780EFAF23B190B9 /* Sources */, ); - name = UITests; + name = FlinkyCore; packageProductDependencies = ( + AE7122B036132C0461B34AF9 /* SFSafeSymbols */, ); - productName = UITests; - productReference = D4A014CC2E83DE2900117E01 /* UITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; + productName = FlinkyCore; + productReference = 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */; + productType = "com.apple.product-type.framework"; }; - D4A014E42E83E11500117E01 /* ShareExtensionTests */ = { + 4693EB40E5A585A7709559FF /* FlinkyCoreTests */ = { isa = PBXNativeTarget; - buildConfigurationList = D4A014EB2E83E11500117E01 /* Build configuration list for PBXNativeTarget "ShareExtensionTests" */; + buildConfigurationList = 9ED64D8C6679BBCDA24C98BF /* Build configuration list for PBXNativeTarget "FlinkyCoreTests" */; buildPhases = ( - D4A014E12E83E11500117E01 /* Sources */, - D4A014E22E83E11500117E01 /* Frameworks */, - D4A014E32E83E11500117E01 /* Resources */, + 2E5AE95B4D996AFD86C1505F /* Sources */, + 1B8B2832C7CC884F4B22AC18 /* Resources */, + A30BC942211C9FFF85674D3F /* Frameworks */, + 1FB59A30ACFA1D79C6D1FE51 /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( - D4A014EA2E83E11500117E01 /* PBXTargetDependency */, + 15AE0EEC8239D72C1D804213 /* PBXTargetDependency */, + 44B8989FF4295FA9B4DED3C0 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - D4A014F12E83E18700117E01 /* Sources */, - D4A014F32E83E1BF00117E01 /* Config */, + 8C7AFEE60176D28EB8433EF0 /* Sources */, ); - name = ShareExtensionTests; + name = FlinkyCoreTests; packageProductDependencies = ( + C575308CEAAD4A95163ADBBD /* SFSafeSymbols */, ); - productName = ShareExtensionTests; - productReference = D4A014E52E83E11500117E01 /* ShareExtensionTests.xctest */; + productName = FlinkyCoreTests; + productReference = D0E29C2ADD1C55FDD65047F6 /* FlinkyCoreTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - D4A5DC452E46133A00027944 /* FlinkyCore */ = { + 5251C822963952BF41D07C48 /* Tests */ = { isa = PBXNativeTarget; - buildConfigurationList = D4A5DC5B2E46133A00027944 /* Build configuration list for PBXNativeTarget "FlinkyCore" */; + buildConfigurationList = 10D2290FDEB16E147B7AE5E3 /* Build configuration list for PBXNativeTarget "Tests" */; buildPhases = ( - D4DB2E772E61DC15000ADF50 /* Run Script - Generate Files */, - D4A5DC412E46133A00027944 /* Headers */, - D4A5DC422E46133A00027944 /* Sources */, - D4A5DC432E46133A00027944 /* Frameworks */, - D4A5DC442E46133A00027944 /* Resources */, + 1B96BA432219603C48D5A037 /* Sources */, + 03AB9BD79917645CA54DBFFD /* Resources */, + 0CC31B226CC106C2B3B64406 /* Frameworks */, + 921A583A44821552BC0FF8FB /* Embed Frameworks */, ); buildRules = ( ); dependencies = ( - D4A5DD902E46143500027944 /* PBXTargetDependency */, + F04AE942B7926359CE51A4B7 /* PBXTargetDependency */, + B3A983A495AAA44BCD2C45CA /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - D4E788DC2E4619C5005DA720 /* Sources */, + 3785698F0DB7A7D24A15CB42 /* Sources */, ); - name = FlinkyCore; + name = Tests; packageProductDependencies = ( - D4A5DD8D2E46142D00027944 /* SFSafeSymbols */, + BAC933ED42E376C5EF3C8AE7 /* SFSafeSymbols */, ); - productName = FlinkyShared; - productReference = D4A5DC462E46133A00027944 /* FlinkyCore.framework */; - productType = "com.apple.product-type.framework"; + productName = Tests; + productReference = 38564E628219DE7E3AB7A218 /* Tests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; }; - D4D359D82E1BDF540006226D /* Flinky */ = { + 5DE7B4773E669E09577A0496 /* ShareExtension */ = { isa = PBXNativeTarget; - buildConfigurationList = D4D359E62E1BDF560006226D /* Build configuration list for PBXNativeTarget "Flinky" */; + buildConfigurationList = 2045CB7B3EF648406899C6C1 /* Build configuration list for PBXNativeTarget "ShareExtension" */; buildPhases = ( - D4D359DC2E1BDF540006226D /* Run Script - Generate Files */, - D4D359D52E1BDF540006226D /* Sources */, - D4D359D62E1BDF540006226D /* Frameworks */, - D4D359D72E1BDF540006226D /* Resources */, - D4A5DC5E2E46133A00027944 /* Embed Frameworks */, - D4D509EE2E4621120067A402 /* Embed Foundation Extensions */, - D4F7B8E32E41FA15004A2D77 /* Lint */, - 8260B96167064F3C9C0B45C7 /* Upload Debug Symbols to Sentry */, + 69EDF5F1B50B8F9BE66F2815 /* Sources */, + 388E26CA1877F0D8D98CFBC8 /* Resources */, + 419A4B1CDDBE3527B80A74AE /* Frameworks */, ); buildRules = ( ); dependencies = ( - D4C71A182F3C8B0E006E688D /* PBXTargetDependency */, - D4A5DC582E46133A00027944 /* PBXTargetDependency */, - D4B4718A2E1F1300005099F3 /* PBXTargetDependency */, - D4D509E82E4621120067A402 /* PBXTargetDependency */, - D462B7832E659CC8006EB4FB /* PBXTargetDependency */, + A5BF53BEB3DBF1380DD8ADE5 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - D4D359DB2E1BDF540006226D /* Sources */, + A04DE5BF04B0E902D35CBE03 /* Sources */, ); - name = Flinky; + name = ShareExtension; packageProductDependencies = ( - D4CFD1782E1E38F2001447E9 /* SFSafeSymbols */, - D44A62A52E33B2800018D789 /* OnLaunch */, - D410FC5C2F3C8AAB0028B18D /* SentrySPM */, + 6CA689DC420160A093867FA6 /* SentrySPM */, ); - productName = LinkManager; - productReference = D4D359D92E1BDF540006226D /* Flinky.app */; - productType = "com.apple.product-type.application"; + productName = ShareExtension; + productReference = ACA557858781CC46D5336CFC /* ShareExtension.appex */; + productType = "com.apple.product-type.app-extension"; }; - D4D509DE2E4621120067A402 /* ShareExtension */ = { + 60C904CE0B184F208257759C /* ScreenshotUITests */ = { isa = PBXNativeTarget; - buildConfigurationList = D4D509EB2E4621120067A402 /* Build configuration list for PBXNativeTarget "ShareExtension" */; + buildConfigurationList = 5C1049511F84545C3F4B0047 /* Build configuration list for PBXNativeTarget "ScreenshotUITests" */; buildPhases = ( - D4D509DB2E4621120067A402 /* Sources */, - D4D509DC2E4621120067A402 /* Frameworks */, - D4D509DD2E4621120067A402 /* Resources */, - D4563C902EBA0B44005B33E2 /* Embed Frameworks */, + 1B7FB520672654284CADEC1E /* Sources */, + 9F17FE9B3CBCFF341B19EB00 /* Resources */, ); buildRules = ( ); dependencies = ( - D4C71A162F3C8B0A006E688D /* PBXTargetDependency */, - D4CD57112ECF2A4900C36BF6 /* PBXTargetDependency */, + AD7F7EC95F1C8253047A5593 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - D4D509E02E4621120067A402 /* Sources */, + C61D7A355BA14243C5CB1404 /* Sources */, ); - name = ShareExtension; + name = ScreenshotUITests; packageProductDependencies = ( - D4C71A132F3C8B05006E688D /* SentrySPM */, ); - productName = ShareExtension; - productReference = D4D509DF2E4621120067A402 /* ShareExtension.appex */; - productType = "com.apple.product-type.app-extension"; + productName = ScreenshotUITests; + productReference = 059BCB5750D9FA391DD12D81 /* ScreenshotUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; }; - D4D50A032E46286D0067A402 /* ShareExtensionUITests */ = { + 9198AA103876EC14A96930E2 /* Flinky */ = { isa = PBXNativeTarget; - buildConfigurationList = D4D50A0C2E46286D0067A402 /* Build configuration list for PBXNativeTarget "ShareExtensionUITests" */; + buildConfigurationList = D645BE068D7345DC6FE4BA36 /* Build configuration list for PBXNativeTarget "Flinky" */; buildPhases = ( - D4D50A002E46286D0067A402 /* Sources */, - D4D50A012E46286D0067A402 /* Frameworks */, - D4D50A022E46286D0067A402 /* Resources */, + 8846DFFDA955D0C53BD7F4E9 /* Run Script - Generate Files */, + F4B8E3B8744DCD5DAD93BE5C /* Sources */, + 5E4CB8F8BA60E646BDA49630 /* Resources */, + FBFACB88D9CA43FE8A1BBBE7 /* Frameworks */, + 300593F2D75D50AE9B613D60 /* Embed Foundation Extensions */, + A895ACDE37F35E1ABEACEB2F /* Embed Frameworks */, + 4086B9DF7AC999CC3119B8B0 /* Lint */, + 68B17CC7F0009840C7087143 /* Upload Debug Symbols to Sentry */, ); buildRules = ( ); dependencies = ( - D4D50A0B2E46286D0067A402 /* PBXTargetDependency */, + CDE075573320016E0C7E6986 /* PBXTargetDependency */, + A84479D92F7ACC81EDDAD250 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - D4A014C52E83DDEC00117E01 /* Sources */, + BC5F79CA9A38A9EE6E30D032 /* App */, ); - name = ShareExtensionUITests; + name = Flinky; packageProductDependencies = ( + 4C5E157AB4255CF94CE0CD0E /* SFSafeSymbols */, + 2C01956AD6D5DCCAF3C28AEC /* SentrySPM */, + D0FC6FBC28AA198B583B6E3D /* OnLaunch */, ); - productName = ShareExtensionUITests; - productReference = D4D50A042E46286D0067A402 /* ShareExtensionUITests.xctest */; - productType = "com.apple.product-type.bundle.ui-testing"; + productName = Flinky; + productReference = 5A78BDEF1343DB01FD30C085 /* Flinky.app */; + productType = "com.apple.product-type.application"; }; - D4E789112E461A83005DA720 /* FlinkyCoreTests */ = { + C7204C8FA7F18BE7B8526098 /* ShareExtensionTests */ = { isa = PBXNativeTarget; - buildConfigurationList = D4E789182E461A83005DA720 /* Build configuration list for PBXNativeTarget "FlinkyCoreTests" */; + buildConfigurationList = F28CED6C7CB6F2F9DE33B15B /* Build configuration list for PBXNativeTarget "ShareExtensionTests" */; buildPhases = ( - D4E7890E2E461A83005DA720 /* Sources */, - D4E7890F2E461A83005DA720 /* Frameworks */, - D4E789102E461A83005DA720 /* Resources */, - D4E7891F2E461A95005DA720 /* Embed Frameworks */, + 32B7E7A2277B9CEA33854D98 /* Sources */, + FDB7021C9B01EC36BB5121FE /* Resources */, ); buildRules = ( ); dependencies = ( - D4E7891E2E461A95005DA720 /* PBXTargetDependency */, - D4E789262E461B19005DA720 /* PBXTargetDependency */, + CD2DF8D805CE38617DEB7EBC /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - D4A014A92E83DDCA00117E01 /* Sources */, + 68B44DF7DB1B234C2FE0515C /* Sources */, ); - name = FlinkyCoreTests; + name = ShareExtensionTests; packageProductDependencies = ( - D4A016262E83E8FB00117E01 /* SFSafeSymbols */, ); - productName = FlinkyCoreTests; - productReference = D4E789122E461A83005DA720 /* FlinkyCoreTests.xctest */; + productName = ShareExtensionTests; + productReference = C125331DA10E849935655F97 /* ShareExtensionTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; - D4ECAAB32E3CF6FB00C757EA /* ScreenshotUITests */ = { + DC44702A3CEA6A63C027A551 /* ShareExtensionUITests */ = { isa = PBXNativeTarget; - buildConfigurationList = D4ECAABE2E3CF6FB00C757EA /* Build configuration list for PBXNativeTarget "ScreenshotUITests" */; + buildConfigurationList = 3E9644BB56878DB01184A76E /* Build configuration list for PBXNativeTarget "ShareExtensionUITests" */; buildPhases = ( - D4ECAAB02E3CF6FB00C757EA /* Sources */, - D4ECAAB12E3CF6FB00C757EA /* Frameworks */, - D4ECAAB22E3CF6FB00C757EA /* Resources */, + B3D492F246EA795323E6A0DC /* Sources */, + FD56734EDC85177BC261F98F /* Resources */, ); buildRules = ( ); dependencies = ( - D4ECAABB2E3CF6FB00C757EA /* PBXTargetDependency */, + 0BF46FAE4D6093369C095256 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - D4A014872E83DDA500117E01 /* Sources */, + 00899E2C91190631EDD856E2 /* Sources */, ); - name = ScreenshotUITests; + name = ShareExtensionUITests; packageProductDependencies = ( ); - productName = ScreenshotUITests; - productReference = D4ECAAB42E3CF6FB00C757EA /* ScreenshotUITests.xctest */; + productName = ShareExtensionUITests; + productReference = 42A63C68C7CE52097D4D6A87 /* ShareExtensionUITests.xctest */; productType = "com.apple.product-type.bundle.ui-testing"; }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ - D4D359D12E1BDF540006226D /* Project object */ = { + 965CCBA3B785C83A5EEAFD09 /* Project object */ = { isa = PBXProject; attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 1640; - LastUpgradeCheck = 2650; + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1640; TargetAttributes = { - D40BEC162E2EE0C500391C5A = { - CreatedOnToolsVersion = 16.4; - TestTargetID = D4D359D82E1BDF540006226D; + 31222234B0F5EAD020CD23EE = { + DevelopmentTeam = ""; + ProvisioningStyle = Manual; + TestTargetID = 9198AA103876EC14A96930E2; }; - D4A014CB2E83DE2900117E01 = { - CreatedOnToolsVersion = 16.4; - TestTargetID = D4D359D82E1BDF540006226D; + 43502ECD46B23B0DE3807D91 = { + DevelopmentTeam = ""; + ProvisioningStyle = Manual; }; - D4A014E42E83E11500117E01 = { - CreatedOnToolsVersion = 16.4; - TestTargetID = D4D359D82E1BDF540006226D; + 4693EB40E5A585A7709559FF = { + DevelopmentTeam = ""; + ProvisioningStyle = Manual; }; - D4A5DC452E46133A00027944 = { - CreatedOnToolsVersion = 16.4; + 5251C822963952BF41D07C48 = { + DevelopmentTeam = ""; + ProvisioningStyle = Manual; }; - D4D359D82E1BDF540006226D = { - CreatedOnToolsVersion = 16.4; + 5DE7B4773E669E09577A0496 = { + DevelopmentTeam = ""; + ProvisioningStyle = Manual; }; - D4D509DE2E4621120067A402 = { - CreatedOnToolsVersion = 16.4; + 60C904CE0B184F208257759C = { + DevelopmentTeam = ""; + ProvisioningStyle = Manual; + TestTargetID = 9198AA103876EC14A96930E2; }; - D4D50A032E46286D0067A402 = { - CreatedOnToolsVersion = 16.4; - TestTargetID = D4D359D82E1BDF540006226D; + 9198AA103876EC14A96930E2 = { + DevelopmentTeam = BZ362SQ6AB; + ProvisioningStyle = Manual; }; - D4E789112E461A83005DA720 = { - CreatedOnToolsVersion = 16.4; - TestTargetID = D4D359D82E1BDF540006226D; + C7204C8FA7F18BE7B8526098 = { + DevelopmentTeam = ""; + ProvisioningStyle = Manual; }; - D4ECAAB32E3CF6FB00C757EA = { - CreatedOnToolsVersion = 16.4; - TestTargetID = D4D359D82E1BDF540006226D; + DC44702A3CEA6A63C027A551 = { + DevelopmentTeam = ""; + ProvisioningStyle = Manual; + TestTargetID = 9198AA103876EC14A96930E2; }; }; }; - buildConfigurationList = D4D359D42E1BDF540006226D /* Build configuration list for PBXProject "Flinky" */; + buildConfigurationList = 9D49B2D6EF3E37A07A77D3A6 /* Build configuration list for PBXProject "Flinky" */; developmentRegion = en; hasScannedForEncodings = 0; knownRegions = ( en, - Base, ); - mainGroup = D4D359D02E1BDF540006226D; + mainGroup = 27F9FACA2BBF95F166C8D268; minimizedProjectReferenceProxies = 1; packageReferences = ( - D4CFD1772E1E38F2001447E9 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */, - D44A62A42E33B2800018D789 /* XCRemoteSwiftPackageReference "OnLaunch-iOS-Client" */, - D410FC5E2F3C8ABD0028B18D /* XCRemoteSwiftPackageReference "sentry-cocoa" */, + 7CF5260102AC15C88D8F085F /* XCRemoteSwiftPackageReference "OnLaunch-iOS-Client" */, + F413361543B0C4B43037DC13 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */, + 271C86CF23714BA569B6BC68 /* XCRemoteSwiftPackageReference "sentry-cocoa" */, ); preferredProjectObjectVersion = 77; - productRefGroup = D4D359DA2E1BDF540006226D /* Products */; + productRefGroup = E2959B8E61645ABA034130D7 /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( - D4D359D82E1BDF540006226D /* Flinky */, - D40BEC162E2EE0C500391C5A /* Tests */, - D4ECAAB32E3CF6FB00C757EA /* ScreenshotUITests */, - D4A014CB2E83DE2900117E01 /* UITests */, - D4A5DC452E46133A00027944 /* FlinkyCore */, - D4E789112E461A83005DA720 /* FlinkyCoreTests */, - D4D509DE2E4621120067A402 /* ShareExtension */, - D4A014E42E83E11500117E01 /* ShareExtensionTests */, - D4D50A032E46286D0067A402 /* ShareExtensionUITests */, + 9198AA103876EC14A96930E2 /* Flinky */, + 43502ECD46B23B0DE3807D91 /* FlinkyCore */, + 4693EB40E5A585A7709559FF /* FlinkyCoreTests */, + 60C904CE0B184F208257759C /* ScreenshotUITests */, + 5DE7B4773E669E09577A0496 /* ShareExtension */, + C7204C8FA7F18BE7B8526098 /* ShareExtensionTests */, + DC44702A3CEA6A63C027A551 /* ShareExtensionUITests */, + 5251C822963952BF41D07C48 /* Tests */, + 31222234B0F5EAD020CD23EE /* UITests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - D40BEC152E2EE0C500391C5A /* Resources */ = { + 03AB9BD79917645CA54DBFFD /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4A014CA2E83DE2900117E01 /* Resources */ = { + 1B8B2832C7CC884F4B22AC18 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4A014E32E83E11500117E01 /* Resources */ = { + 388E26CA1877F0D8D98CFBC8 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4A5DC442E46133A00027944 /* Resources */ = { + 5E4CB8F8BA60E646BDA49630 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4D359D72E1BDF540006226D /* Resources */ = { + 9F17FE9B3CBCFF341B19EB00 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4D509DD2E4621120067A402 /* Resources */ = { + D660524347B5A7FDA06E3DE6 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4D50A022E46286D0067A402 /* Resources */ = { + E32581141A7135EB664B31E5 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4E789102E461A83005DA720 /* Resources */ = { + FD56734EDC85177BC261F98F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4ECAAB22E3CF6FB00C757EA /* Resources */ = { + FDB7021C9B01EC36BB5121FE /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -936,23 +815,26 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 8260B96167064F3C9C0B45C7 /* Upload Debug Symbols to Sentry */ = { + 4086B9DF7AC999CC3119B8B0 /* Lint */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); + inputFileListPaths = ( + ); inputPaths = ( - "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", ); - name = "Upload Debug Symbols to Sentry"; + name = Lint; + outputFileListPaths = ( + ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "# This script is responsible for uploading debug symbols and source context for Sentry.\nif [[ \"$(uname -m)\" == arm64 ]]; then\n export PATH=\"/opt/homebrew/bin:$PATH\"\nfi\n\nif which sentry-cli >/dev/null; then\n export SENTRY_ORG=techprimate\n export SENTRY_PROJECT=flinky\n ERROR=$(sentry-cli debug-files upload --include-sources \"$DWARF_DSYM_FOLDER_PATH\" 2>&1 >/dev/null)\n if [ ! $? -eq 0 ]; then\n echo \"warning: sentry-cli - $ERROR\"\n fi\nelse\n echo \"warning: sentry-cli not installed, download from https://github.com/getsentry/sentry-cli/releases\"\nfi\n"; + shellScript = "if [[ \"$(uname -m)\" == arm64 ]]\nthen\n export PATH=\"/opt/homebrew/bin:$PATH\"\nfi\n\nif command -v swiftlint >/dev/null 2>&1\nthen\n swiftlint\nelse\n echo \"warning: `swiftlint` command not found - See https://github.com/realm/SwiftLint#installation for installation instructions.\"\nfi\n"; }; - D4D359DC2E1BDF540006226D /* Run Script - Generate Files */ = { + 5B309345733300975E1890B0 /* Run Script - Generate Files */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -960,126 +842,127 @@ inputFileListPaths = ( ); inputPaths = ( - "$(SRCROOT)/Scripts/generate-licenses.sh", - "$(SRCROOT)/Scripts/generate-version-in-settings.sh", - "$(SRCROOT)/Scripts/generate-localization.sh", - "$(SRCROOT)/Sources/Resources/Localizable.xcstrings", - "$(SRCROOT)/Templates/en-strings.stencil", - "$(SRCROOT)/Templates/l21strings.stencil", - "$(SRCROOT)/Flinky.xcodeproj/project.pbxproj", - "$(SRCROOT)/Flinky.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved", ); name = "Run Script - Generate Files"; outputFileListPaths = ( ); outputPaths = ( - "$(SRCROOT)/Sources/Resources/Settings.bundle/Licenses.plist", - "$(SRCROOT)/Sources/Resources/Settings.bundle/Licenses.latest_result.txt", - "$(SRCROOT)/Sources/Resources/Settings.bundle/Root.plist", - "$(SRCROOT)/Sources/Utils/Localization.swift", - "$(SRCROOT)/Generated/generated-en.strings", ); runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/zsh; - shellScript = "set -e\n\n# Set up PATH for Homebrew tools\nif [[ \"$(uname -m)\" == arm64 ]]; then\n export PATH=\"/opt/homebrew/bin:$PATH\"\nelse\n export PATH=\"/usr/local/bin:$PATH\"\nfi\n\n# Change to project directory\ncd \"$SRCROOT\"\n\n# Generate licenses\n./Scripts/generate-licenses.sh\n\n# Generate version in settings\n./Scripts/generate-version-in-settings.sh\n\n# Generate localization\n./Scripts/generate-localization.sh\n\necho \"✅ All generation tasks completed successfully\"\n"; + shellPath = /bin/sh; + shellScript = "set -e\n\n# Set up PATH for Homebrew tools\nif [[ \"$(uname -m)\" == arm64 ]]; then\n export PATH=\"/opt/homebrew/bin:$PATH\"\nelse\n export PATH=\"/usr/local/bin:$PATH\"\nfi\n\n# Change to project directory\ncd \"$SRCROOT\"\n\n# Generate localization\n./Scripts/generate-localization.sh\n\necho \"✅ All generation tasks completed successfully\"\n"; }; - D4DB2E772E61DC15000ADF50 /* Run Script - Generate Files */ = { + 68B17CC7F0009840C7087143 /* Upload Debug Symbols to Sentry */ = { isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( ); inputPaths = ( + "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}", ); - name = "Run Script - Generate Files"; + name = "Upload Debug Symbols to Sentry"; outputFileListPaths = ( ); outputPaths = ( ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "set -e\n\n# Set up PATH for Homebrew tools\nif [[ \"$(uname -m)\" == arm64 ]]; then\n export PATH=\"/opt/homebrew/bin:$PATH\"\nelse\n export PATH=\"/usr/local/bin:$PATH\"\nfi\n\n# Change to project directory\ncd \"$SRCROOT\"\n\n# Generate localization\n./Scripts/generate-localization.sh\n\necho \"✅ All generation tasks completed successfully\"\n"; + shellScript = "# This script is responsible for uploading debug symbols and source context for Sentry.\nif [[ \"$(uname -m)\" == arm64 ]]; then\n export PATH=\"/opt/homebrew/bin:$PATH\"\nfi\n\nif which sentry-cli >/dev/null; then\n export SENTRY_ORG=techprimate\n export SENTRY_PROJECT=flinky\n ERROR=$(sentry-cli debug-files upload --include-sources \"$DWARF_DSYM_FOLDER_PATH\" 2>&1 >/dev/null)\n if [ ! $? -eq 0 ]; then\n echo \"warning: sentry-cli - $ERROR\"\n fi\nelse\n echo \"warning: sentry-cli not installed, download from https://github.com/getsentry/sentry-cli/releases\"\nfi\n"; }; - D4F7B8E32E41FA15004A2D77 /* Lint */ = { + 8846DFFDA955D0C53BD7F4E9 /* Run Script - Generate Files */ = { isa = PBXShellScriptBuildPhase; - alwaysOutOfDate = 1; buildActionMask = 2147483647; files = ( ); inputFileListPaths = ( ); inputPaths = ( + "$(SRCROOT)/Scripts/generate-licenses.sh", + "$(SRCROOT)/Scripts/generate-version-in-settings.sh", + "$(SRCROOT)/Scripts/generate-localization.sh", + "$(SRCROOT)/Sources/Resources/Localizable.xcstrings", + "$(SRCROOT)/Templates/en-strings.stencil", + "$(SRCROOT)/Templates/l21strings.stencil", + "$(SRCROOT)/Flinky.xcodeproj/project.pbxproj", + "$(SRCROOT)/Flinky.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved", ); - name = Lint; + name = "Run Script - Generate Files"; outputFileListPaths = ( ); outputPaths = ( + "$(SRCROOT)/Sources/Resources/Settings.bundle/Licenses.plist", + "$(SRCROOT)/Sources/Resources/Settings.bundle/Licenses.latest_result.txt", + "$(SRCROOT)/Sources/Resources/Settings.bundle/Root.plist", + "$(SRCROOT)/Sources/Utils/Localization.swift", + "$(SRCROOT)/Generated/generated-en.strings", ); runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "if [[ \"$(uname -m)\" == arm64 ]]\nthen\n export PATH=\"/opt/homebrew/bin:$PATH\"\nfi\n\nif command -v swiftlint >/dev/null 2>&1\nthen\n swiftlint --config .swiftlint.yml --strict\nelse\n echo \"warning: `swiftlint` command not found - See https://github.com/realm/SwiftLint#installation for installation instructions.\"\nfi\n"; + shellPath = /bin/zsh; + shellScript = "set -e\n\n# Set up PATH for Homebrew tools\nif [[ \"$(uname -m)\" == arm64 ]]; then\n export PATH=\"/opt/homebrew/bin:$PATH\"\nelse\n export PATH=\"/usr/local/bin:$PATH\"\nfi\n\n# Change to project directory\ncd \"$SRCROOT\"\n\n# Generate licenses\n./Scripts/generate-licenses.sh\n\n# Generate version in settings\n./Scripts/generate-version-in-settings.sh\n\n# Generate localization\n./Scripts/generate-localization.sh\n\necho \"✅ All generation tasks completed successfully\"\n"; }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - D40BEC132E2EE0C500391C5A /* Sources */ = { + 1B7FB520672654284CADEC1E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4A014C82E83DE2900117E01 /* Sources */ = { + 1B96BA432219603C48D5A037 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4A014E12E83E11500117E01 /* Sources */ = { + 2E5AE95B4D996AFD86C1505F /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4A5DC422E46133A00027944 /* Sources */ = { + 32B7E7A2277B9CEA33854D98 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4D359D52E1BDF540006226D /* Sources */ = { + 5BB4EF586157D92FB61F734E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4D509DB2E4621120067A402 /* Sources */ = { + 69EDF5F1B50B8F9BE66F2815 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4D50A002E46286D0067A402 /* Sources */ = { + B3D492F246EA795323E6A0DC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4E7890E2E461A83005DA720 /* Sources */ = { + E6262D550689382CDE05568C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4ECAAB02E3CF6FB00C757EA /* Sources */ = { + F4B8E3B8744DCD5DAD93BE5C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1089,115 +972,65 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - D40BEC1C2E2EE0C500391C5A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = D4D359D82E1BDF540006226D /* Flinky */; - targetProxy = D40BEC1B2E2EE0C500391C5A /* PBXContainerItemProxy */; - }; - D462B7832E659CC8006EB4FB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = D4D509DE2E4621120067A402 /* ShareExtension */; - targetProxy = D462B7822E659CC8006EB4FB /* PBXContainerItemProxy */; - }; - D4A014D32E83DE2900117E01 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = D4D359D82E1BDF540006226D /* Flinky */; - targetProxy = D4A014D22E83DE2900117E01 /* PBXContainerItemProxy */; - }; - D4A014EA2E83E11500117E01 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = D4D359D82E1BDF540006226D /* Flinky */; - targetProxy = D4A014E92E83E11500117E01 /* PBXContainerItemProxy */; - }; - D4A5DC582E46133A00027944 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = D4A5DC452E46133A00027944 /* FlinkyCore */; - targetProxy = D4A5DC572E46133A00027944 /* PBXContainerItemProxy */; - }; - D4A5DD902E46143500027944 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - productRef = D4A5DD8F2E46143500027944 /* SFSafeSymbols */; - }; - D4A5DD922E46143F00027944 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - target = D4A5DC452E46133A00027944 /* FlinkyCore */; - targetProxy = D4A5DD912E46143F00027944 /* PBXContainerItemProxy */; - }; - D4A5DD962E46146400027944 /* PBXTargetDependency */ = { + 0BF46FAE4D6093369C095256 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = D4A5DC452E46133A00027944 /* FlinkyCore */; - targetProxy = D4A5DD952E46146400027944 /* PBXContainerItemProxy */; + target = 9198AA103876EC14A96930E2 /* Flinky */; + targetProxy = 677D010EDA511ACF334716F2 /* PBXContainerItemProxy */; }; - D4A5DD992E46160B00027944 /* PBXTargetDependency */ = { + 15AE0EEC8239D72C1D804213 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = D4A5DD982E46160B00027944 /* SFSafeSymbols */; + target = 9198AA103876EC14A96930E2 /* Flinky */; + targetProxy = 32CB2A76CB9ADE3E50BEA9F0 /* PBXContainerItemProxy */; }; - D4B4718A2E1F1300005099F3 /* PBXTargetDependency */ = { + 44B8989FF4295FA9B4DED3C0 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = D4B471892E1F1300005099F3 /* SFSafeSymbols */; + target = 43502ECD46B23B0DE3807D91 /* FlinkyCore */; + targetProxy = B95311C7917B142FE0424297 /* PBXContainerItemProxy */; }; - D4C71A162F3C8B0A006E688D /* PBXTargetDependency */ = { + A25E8AC4D9389C9C5FEA8555 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = D4C71A152F3C8B0A006E688D /* SentrySPM */; + target = 9198AA103876EC14A96930E2 /* Flinky */; + targetProxy = 22753C479E53007CBFD19241 /* PBXContainerItemProxy */; }; - D4C71A182F3C8B0E006E688D /* PBXTargetDependency */ = { + A5BF53BEB3DBF1380DD8ADE5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - productRef = D4C71A172F3C8B0E006E688D /* SentrySPM */; + target = 43502ECD46B23B0DE3807D91 /* FlinkyCore */; + targetProxy = 696270A9512FE11B633B73DE /* PBXContainerItemProxy */; }; - D4CD57112ECF2A4900C36BF6 /* PBXTargetDependency */ = { + A84479D92F7ACC81EDDAD250 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = D4A5DC452E46133A00027944 /* FlinkyCore */; - targetProxy = D4CD57102ECF2A4900C36BF6 /* PBXContainerItemProxy */; + target = 5DE7B4773E669E09577A0496 /* ShareExtension */; + targetProxy = 8F945886DF1923AE94315D28 /* PBXContainerItemProxy */; }; - D4D509E82E4621120067A402 /* PBXTargetDependency */ = { + AD7F7EC95F1C8253047A5593 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = D4D509DE2E4621120067A402 /* ShareExtension */; - targetProxy = D4D509E72E4621120067A402 /* PBXContainerItemProxy */; + target = 9198AA103876EC14A96930E2 /* Flinky */; + targetProxy = 6653690A7C9AF7A4451DB6A4 /* PBXContainerItemProxy */; }; - D4D50A0B2E46286D0067A402 /* PBXTargetDependency */ = { + B3A983A495AAA44BCD2C45CA /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = D4D359D82E1BDF540006226D /* Flinky */; - targetProxy = D4D50A0A2E46286D0067A402 /* PBXContainerItemProxy */; + target = 43502ECD46B23B0DE3807D91 /* FlinkyCore */; + targetProxy = 124C8FFF31024696DA8DDAB1 /* PBXContainerItemProxy */; }; - D4E7891E2E461A95005DA720 /* PBXTargetDependency */ = { + CD2DF8D805CE38617DEB7EBC /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = D4A5DC452E46133A00027944 /* FlinkyCore */; - targetProxy = D4E7891D2E461A95005DA720 /* PBXContainerItemProxy */; + target = 9198AA103876EC14A96930E2 /* Flinky */; + targetProxy = 358642B03CF36AA3A156A9A9 /* PBXContainerItemProxy */; }; - D4E789262E461B19005DA720 /* PBXTargetDependency */ = { + CDE075573320016E0C7E6986 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = D4D359D82E1BDF540006226D /* Flinky */; - targetProxy = D4E789252E461B19005DA720 /* PBXContainerItemProxy */; + target = 43502ECD46B23B0DE3807D91 /* FlinkyCore */; + targetProxy = 798AC121ECEB92319E9AFF45 /* PBXContainerItemProxy */; }; - D4ECAABB2E3CF6FB00C757EA /* PBXTargetDependency */ = { + F04AE942B7926359CE51A4B7 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = D4D359D82E1BDF540006226D /* Flinky */; - targetProxy = D4ECAABA2E3CF6FB00C757EA /* PBXContainerItemProxy */; + target = 9198AA103876EC14A96930E2 /* Flinky */; + targetProxy = E4B36CC7086BD34BFC4B079C /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - D40BEC1E2E2EE0C500391C5A /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 8; - DEVELOPMENT_TEAM = ""; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; - MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.Tests; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Flinky.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Flinky"; - }; - name = Debug; - }; - D40BEC1F2E2EE0C500391C5A /* Release */ = { + 05D0980CA7429508A83484C3 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; @@ -1206,10 +1039,15 @@ DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MARKETING_VERSION = 1.1.5; PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.Tests; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1217,45 +1055,92 @@ }; name = Release; }; - D4A014D52E83DE2900117E01 /* Debug */ = { + 113AA6FA3429A14FA579160E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + CODE_SIGN_ENTITLEMENTS = Targets/ShareExtension/Sources/Resources/ShareExtension.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.5; + INFOPLIST_FILE = Targets/ShareExtension/Sources/Resources/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 18.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.UITests; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_EMIT_LOC_STRINGS = NO; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Flinky; }; name = Debug; }; - D4A014D62E83DE2900117E01 /* Release */ = { + 172B4ECA385BA43B1588D66A /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 8; - DEVELOPMENT_TEAM = ""; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.5; - MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.UITests; + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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; + IPHONEOS_DEPLOYMENT_TARGET = 18.0; + MTL_ENABLE_DEBUG_INFO = NO; + MTL_FAST_MATH = YES; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_EMIT_LOC_STRINGS = NO; + SDKROOT = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Flinky; + VALIDATE_PRODUCT = YES; }; name = Release; }; - D4A014EC2E83E11500117E01 /* Debug */ = { + 195CAECF74D0031BE37D5070 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; @@ -1263,48 +1148,34 @@ CURRENT_PROJECT_VERSION = 8; DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.5; - MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtensionTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_EMIT_LOC_STRINGS = NO; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Flinky.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Flinky"; - }; - name = Debug; - }; - D4A014ED2E83E11500117E01 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CODE_SIGN_STYLE = Manual; - CURRENT_PROJECT_VERSION = 8; - DEVELOPMENT_TEAM = ""; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.5; + IPHONEOS_DEPLOYMENT_TARGET = 18.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtensionTests; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtensionUITests; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Flinky.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Flinky"; + TEST_TARGET_NAME = Flinky; }; name = Release; }; - D4A5DC5C2E46133A00027944 /* Debug */ = { + 24EA9E54B4836CBD7D761670 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; + DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 8; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -1314,7 +1185,6 @@ LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", - "@loader_path/Frameworks", ); MARKETING_VERSION = 1.1.5; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; @@ -1322,6 +1192,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.Core; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_INSTALL_MODULE = YES; @@ -1333,16 +1204,17 @@ }; name = Debug; }; - D4A5DC5D2E46133A00027944 /* Release */ = { + 39D6053AE6FEF8DB4B725104 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { BUILD_LIBRARY_FOR_DISTRIBUTION = NO; CODE_SIGN_IDENTITY = ""; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; + DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 8; + DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; @@ -1352,7 +1224,6 @@ LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", - "@loader_path/Frameworks", ); MARKETING_VERSION = 1.1.5; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; @@ -1360,6 +1231,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.Core; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_INSTALL_MODULE = YES; @@ -1371,317 +1243,212 @@ }; name = Release; }; - D4D359E42E1BDF560006226D /* Debug */ = { + 425B83A459D9C58ACC6BEF04 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - DEVELOPMENT_TEAM = BZ362SQ6AB; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_C_LANGUAGE_STANDARD = gnu17; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 8; + DEVELOPMENT_TEAM = ""; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.0; + LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", ); - 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; - IPHONEOS_DEPLOYMENT_TARGET = 18.4; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; + MARKETING_VERSION = 1.1.5; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtensionUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; - STRING_CATALOG_GENERATE_SYMBOLS = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Flinky; }; name = Debug; }; - D4D359E52E1BDF560006226D /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = BZ362SQ6AB; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_C_LANGUAGE_STANDARD = gnu17; - 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; - IPHONEOS_DEPLOYMENT_TARGET = 18.4; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - STRING_CATALOG_GENERATE_SYMBOLS = YES; - SWIFT_COMPILATION_MODE = wholemodule; - SWIFT_EMIT_LOC_STRINGS = YES; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - D4D359E72E1BDF560006226D /* Debug */ = { + 44ECF7DF30305F4C6DD3FD51 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CODE_SIGN_ENTITLEMENTS = Targets/App/Sources/Resources/App.entitlements; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEVELOPMENT_TEAM = BZ362SQ6AB; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = BZ362SQ6AB; ENABLE_PREVIEWS = YES; ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Targets/App/Sources/Resources/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = Flinky; - INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; - INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; - INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Save your QRCode to your Photos"; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); MARKETING_VERSION = 1.1.5; - OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky; PRODUCT_NAME = "$(TARGET_NAME)"; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.techprimate.Flinky"; + SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; - D4D359E82E1BDF560006226D /* Release */ = { + 483C6819C2A1337C33371554 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = Targets/App/Sources/Resources/App.entitlements; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - DEVELOPMENT_TEAM = BZ362SQ6AB; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = BZ362SQ6AB; - ENABLE_PREVIEWS = YES; - ENABLE_USER_SCRIPT_SANDBOXING = NO; + DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Targets/App/Sources/Resources/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = Flinky; - INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; - INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; - INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Save your QRCode to your Photos"; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchScreen_Generation = YES; - INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", + "@loader_path/Frameworks", ); MARKETING_VERSION = 1.1.5; - OTHER_SWIFT_FLAGS = ""; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ScreenshotUITests; PRODUCT_NAME = "$(TARGET_NAME)"; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.techprimate.Flinky"; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = ANALYTICS; - SWIFT_EMIT_LOC_STRINGS = YES; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Flinky; }; - name = Release; + name = Debug; }; - D4D509EC2E4621120067A402 /* Debug */ = { + 4D7D28268B71D6A2C37821C0 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_ENTITLEMENTS = Targets/ShareExtension/Sources/Resources/ShareExtension.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = BZ362SQ6AB; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Targets/ShareExtension/Sources/Resources/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = ShareExtension; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", - "@executable_path/../../Frameworks", + "@loader_path/Frameworks", ); MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtensionTests; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development com.techprimate.Flinky.ShareExtension"; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Flinky.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Flinky"; }; name = Debug; }; - D4D509ED2E4621120067A402 /* Release */ = { + 5601555042F839D2E27AA0AF /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - CODE_SIGN_ENTITLEMENTS = Targets/ShareExtension/Sources/Resources/ShareExtension.entitlements; - CODE_SIGN_IDENTITY = "Apple Development"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution"; + BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = BZ362SQ6AB; GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = Targets/ShareExtension/Sources/Resources/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = ShareExtension; - INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", - "@executable_path/../../Frameworks", + "@loader_path/Frameworks", ); MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtension; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ScreenshotUITests; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match AppStore com.techprimate.Flinky.ShareExtension"; - SKIP_INSTALL = YES; - SWIFT_EMIT_LOC_STRINGS = YES; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Flinky; }; name = Release; }; - D4D50A0D2E46286D0067A402 /* Debug */ = { + 701247E7758B1E74D7E0CBB6 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.0; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtensionUITests; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.UITests; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; TEST_TARGET_NAME = Flinky; }; - name = Debug; + name = Release; }; - D4D50A0E2E46286D0067A402 /* Release */ = { + 70997997F9721C0AEC4C2D9E /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtensionUITests; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.CoreTests; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = NO; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Flinky.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Flinky"; + }; + name = Debug; + }; + 8048E0B5171F04912DEB6605 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 8; + DEVELOPMENT_TEAM = ""; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.1.5; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.UITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; TEST_TARGET_NAME = Flinky; }; - name = Release; + name = Debug; }; - D4E789192E461A83005DA720 /* Debug */ = { + 9B8295DE779EA695B5C57F9C /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; @@ -1690,10 +1457,15 @@ DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.CoreTests; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.Tests; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1701,19 +1473,52 @@ }; name = Debug; }; - D4E7891A2E461A83005DA720 /* Release */ = { + A1D977EDCFFEDEEE3D3B5968 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_ENTITLEMENTS = Targets/ShareExtension/Sources/Resources/ShareExtension.entitlements; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Targets/ShareExtension/Sources/Resources/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 18.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.CoreTests; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtension; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + B392170ECD2344DCF3AFCFD1 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Manual; + CURRENT_PROJECT_VERSION = 8; + DEVELOPMENT_TEAM = ""; + GENERATE_INFOPLIST_FILE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 18.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MARKETING_VERSION = 1.1.5; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ShareExtensionTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1721,151 +1526,232 @@ }; name = Release; }; - D4ECAABC2E3CF6FB00C757EA /* Debug */ = { + BB0A985907CED6C4A6C492E0 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 18.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ScreenshotUITests; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.CoreTests; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; + SDKROOT = iphoneos; SWIFT_EMIT_LOC_STRINGS = NO; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Flinky; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Flinky.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Flinky"; }; - name = Debug; + name = Release; }; - D4ECAABD2E3CF6FB00C757EA /* Release */ = { + BDA70CE464ADA0FEF28D4081 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = Targets/App/Sources/Resources/App.entitlements; + CODE_SIGN_IDENTITY = "iPhone Developer"; CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 8; - DEVELOPMENT_TEAM = ""; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = BZ362SQ6AB; + ENABLE_PREVIEWS = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_FILE = Targets/App/Sources/Resources/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 18.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); MARKETING_VERSION = 1.1.5; - PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky.ScreenshotUITests; + PRODUCT_BUNDLE_IDENTIFIER = com.techprimate.Flinky; PRODUCT_NAME = "$(TARGET_NAME)"; - PROVISIONING_PROFILE_SPECIFIER = ""; - SWIFT_EMIT_LOC_STRINGS = NO; + SDKROOT = iphoneos; + SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - TEST_TARGET_NAME = Flinky; }; name = Release; }; + EBAB1991B9C58F20D68CAFB3 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + 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; + IPHONEOS_DEPLOYMENT_TARGET = 18.0; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ( + DEBUG, + "$(inherited)", + ); + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + }; + name = Debug; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - D40BEC1D2E2EE0C500391C5A /* Build configuration list for PBXNativeTarget "Tests" */ = { + 10D2290FDEB16E147B7AE5E3 /* Build configuration list for PBXNativeTarget "Tests" */ = { isa = XCConfigurationList; buildConfigurations = ( - D40BEC1E2E2EE0C500391C5A /* Debug */, - D40BEC1F2E2EE0C500391C5A /* Release */, + 9B8295DE779EA695B5C57F9C /* Debug */, + 05D0980CA7429508A83484C3 /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; - D4A014D42E83DE2900117E01 /* Build configuration list for PBXNativeTarget "UITests" */ = { + 2045CB7B3EF648406899C6C1 /* Build configuration list for PBXNativeTarget "ShareExtension" */ = { isa = XCConfigurationList; buildConfigurations = ( - D4A014D52E83DE2900117E01 /* Debug */, - D4A014D62E83DE2900117E01 /* Release */, + 113AA6FA3429A14FA579160E /* Debug */, + A1D977EDCFFEDEEE3D3B5968 /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; - D4A014EB2E83E11500117E01 /* Build configuration list for PBXNativeTarget "ShareExtensionTests" */ = { + 3E9644BB56878DB01184A76E /* Build configuration list for PBXNativeTarget "ShareExtensionUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( - D4A014EC2E83E11500117E01 /* Debug */, - D4A014ED2E83E11500117E01 /* Release */, + 425B83A459D9C58ACC6BEF04 /* Debug */, + 195CAECF74D0031BE37D5070 /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; - D4A5DC5B2E46133A00027944 /* Build configuration list for PBXNativeTarget "FlinkyCore" */ = { + 5C1049511F84545C3F4B0047 /* Build configuration list for PBXNativeTarget "ScreenshotUITests" */ = { isa = XCConfigurationList; buildConfigurations = ( - D4A5DC5C2E46133A00027944 /* Debug */, - D4A5DC5D2E46133A00027944 /* Release */, + 483C6819C2A1337C33371554 /* Debug */, + 5601555042F839D2E27AA0AF /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; - D4D359D42E1BDF540006226D /* Build configuration list for PBXProject "Flinky" */ = { + 6D02AA9AF8BC09900D6610F8 /* Build configuration list for PBXNativeTarget "UITests" */ = { isa = XCConfigurationList; buildConfigurations = ( - D4D359E42E1BDF560006226D /* Debug */, - D4D359E52E1BDF560006226D /* Release */, + 8048E0B5171F04912DEB6605 /* Debug */, + 701247E7758B1E74D7E0CBB6 /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; - D4D359E62E1BDF560006226D /* Build configuration list for PBXNativeTarget "Flinky" */ = { + 8C498AAB9092C57FE8C4329F /* Build configuration list for PBXNativeTarget "FlinkyCore" */ = { isa = XCConfigurationList; buildConfigurations = ( - D4D359E72E1BDF560006226D /* Debug */, - D4D359E82E1BDF560006226D /* Release */, + 24EA9E54B4836CBD7D761670 /* Debug */, + 39D6053AE6FEF8DB4B725104 /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; - D4D509EB2E4621120067A402 /* Build configuration list for PBXNativeTarget "ShareExtension" */ = { + 9D49B2D6EF3E37A07A77D3A6 /* Build configuration list for PBXProject "Flinky" */ = { isa = XCConfigurationList; buildConfigurations = ( - D4D509EC2E4621120067A402 /* Debug */, - D4D509ED2E4621120067A402 /* Release */, + EBAB1991B9C58F20D68CAFB3 /* Debug */, + 172B4ECA385BA43B1588D66A /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; - D4D50A0C2E46286D0067A402 /* Build configuration list for PBXNativeTarget "ShareExtensionUITests" */ = { + 9ED64D8C6679BBCDA24C98BF /* Build configuration list for PBXNativeTarget "FlinkyCoreTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - D4D50A0D2E46286D0067A402 /* Debug */, - D4D50A0E2E46286D0067A402 /* Release */, + 70997997F9721C0AEC4C2D9E /* Debug */, + BB0A985907CED6C4A6C492E0 /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; - D4E789182E461A83005DA720 /* Build configuration list for PBXNativeTarget "FlinkyCoreTests" */ = { + D645BE068D7345DC6FE4BA36 /* Build configuration list for PBXNativeTarget "Flinky" */ = { isa = XCConfigurationList; buildConfigurations = ( - D4E789192E461A83005DA720 /* Debug */, - D4E7891A2E461A83005DA720 /* Release */, + 44ECF7DF30305F4C6DD3FD51 /* Debug */, + BDA70CE464ADA0FEF28D4081 /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; - D4ECAABE2E3CF6FB00C757EA /* Build configuration list for PBXNativeTarget "ScreenshotUITests" */ = { + F28CED6C7CB6F2F9DE33B15B /* Build configuration list for PBXNativeTarget "ShareExtensionTests" */ = { isa = XCConfigurationList; buildConfigurations = ( - D4ECAABC2E3CF6FB00C757EA /* Debug */, - D4ECAABD2E3CF6FB00C757EA /* Release */, + 4D7D28268B71D6A2C37821C0 /* Debug */, + B392170ECD2344DCF3AFCFD1 /* Release */, ); defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; + defaultConfigurationName = Debug; }; /* End XCConfigurationList section */ /* Begin XCRemoteSwiftPackageReference section */ - D410FC5E2F3C8ABD0028B18D /* XCRemoteSwiftPackageReference "sentry-cocoa" */ = { + 271C86CF23714BA569B6BC68 /* XCRemoteSwiftPackageReference "sentry-cocoa" */ = { isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/getsentry/sentry-cocoa"; + repositoryURL = "https://github.com/getsentry/sentry-cocoa.git"; requirement = { kind = exactVersion; version = 9.16.1; }; - traits = ( - ); }; - D44A62A42E33B2800018D789 /* XCRemoteSwiftPackageReference "OnLaunch-iOS-Client" */ = { + 7CF5260102AC15C88D8F085F /* XCRemoteSwiftPackageReference "OnLaunch-iOS-Client" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/kula-app/OnLaunch-iOS-Client"; requirement = { @@ -1873,7 +1759,7 @@ version = 0.0.6; }; }; - D4CFD1772E1E38F2001447E9 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */ = { + F413361543B0C4B43037DC13 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/SFSafeSymbols/SFSafeSymbols"; requirement = { @@ -1884,66 +1770,42 @@ /* End XCRemoteSwiftPackageReference section */ /* Begin XCSwiftPackageProductDependency section */ - D410FC5C2F3C8AAB0028B18D /* SentrySPM */ = { + 2C01956AD6D5DCCAF3C28AEC /* SentrySPM */ = { isa = XCSwiftPackageProductDependency; + package = 271C86CF23714BA569B6BC68 /* XCRemoteSwiftPackageReference "sentry-cocoa" */; productName = SentrySPM; }; - D44A62A52E33B2800018D789 /* OnLaunch */ = { + 4C5E157AB4255CF94CE0CD0E /* SFSafeSymbols */ = { isa = XCSwiftPackageProductDependency; - package = D44A62A42E33B2800018D789 /* XCRemoteSwiftPackageReference "OnLaunch-iOS-Client" */; - productName = OnLaunch; - }; - D4A016262E83E8FB00117E01 /* SFSafeSymbols */ = { - isa = XCSwiftPackageProductDependency; - package = D4CFD1772E1E38F2001447E9 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; + package = F413361543B0C4B43037DC13 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; productName = SFSafeSymbols; }; - D4A5DD8D2E46142D00027944 /* SFSafeSymbols */ = { + 6CA689DC420160A093867FA6 /* SentrySPM */ = { isa = XCSwiftPackageProductDependency; - package = D4CFD1772E1E38F2001447E9 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; - productName = SFSafeSymbols; - }; - D4A5DD8F2E46143500027944 /* SFSafeSymbols */ = { - isa = XCSwiftPackageProductDependency; - package = D4CFD1772E1E38F2001447E9 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; - productName = SFSafeSymbols; + package = 271C86CF23714BA569B6BC68 /* XCRemoteSwiftPackageReference "sentry-cocoa" */; + productName = SentrySPM; }; - D4A5DD982E46160B00027944 /* SFSafeSymbols */ = { + AE7122B036132C0461B34AF9 /* SFSafeSymbols */ = { isa = XCSwiftPackageProductDependency; - package = D4CFD1772E1E38F2001447E9 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; + package = F413361543B0C4B43037DC13 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; productName = SFSafeSymbols; }; - D4A5DD9A2E46160F00027944 /* SFSafeSymbols */ = { + BAC933ED42E376C5EF3C8AE7 /* SFSafeSymbols */ = { isa = XCSwiftPackageProductDependency; - package = D4CFD1772E1E38F2001447E9 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; + package = F413361543B0C4B43037DC13 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; productName = SFSafeSymbols; }; - D4B471892E1F1300005099F3 /* SFSafeSymbols */ = { + C575308CEAAD4A95163ADBBD /* SFSafeSymbols */ = { isa = XCSwiftPackageProductDependency; - package = D4CFD1772E1E38F2001447E9 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; + package = F413361543B0C4B43037DC13 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; productName = SFSafeSymbols; }; - D4C71A132F3C8B05006E688D /* SentrySPM */ = { + D0FC6FBC28AA198B583B6E3D /* OnLaunch */ = { isa = XCSwiftPackageProductDependency; - package = D410FC5E2F3C8ABD0028B18D /* XCRemoteSwiftPackageReference "sentry-cocoa" */; - productName = SentrySPM; - }; - D4C71A152F3C8B0A006E688D /* SentrySPM */ = { - isa = XCSwiftPackageProductDependency; - package = D410FC5E2F3C8ABD0028B18D /* XCRemoteSwiftPackageReference "sentry-cocoa" */; - productName = SentrySPM; - }; - D4C71A172F3C8B0E006E688D /* SentrySPM */ = { - isa = XCSwiftPackageProductDependency; - package = D410FC5E2F3C8ABD0028B18D /* XCRemoteSwiftPackageReference "sentry-cocoa" */; - productName = SentrySPM; - }; - D4CFD1782E1E38F2001447E9 /* SFSafeSymbols */ = { - isa = XCSwiftPackageProductDependency; - package = D4CFD1772E1E38F2001447E9 /* XCRemoteSwiftPackageReference "SFSafeSymbols" */; - productName = SFSafeSymbols; + package = 7CF5260102AC15C88D8F085F /* XCRemoteSwiftPackageReference "OnLaunch-iOS-Client" */; + productName = OnLaunch; }; /* End XCSwiftPackageProductDependency section */ }; - rootObject = D4D359D12E1BDF540006226D /* Project object */; + rootObject = 965CCBA3B785C83A5EEAFD09 /* Project object */; } diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/App.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/App.xcscheme index 4c509c5..ae7e3e4 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/App.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/App.xcscheme @@ -1,11 +1,11 @@ + runPostActionsOnFailure = "NO"> @@ -27,17 +27,18 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES" + onlyGenerateCoverageForSpecifiedTargets = "NO"> + default = "YES" + reference = "container:Targets/ShareExtensionTests/Config/ShareExtensionTests.xctestplan"> + reference = "container:Targets/FlinkyCoreTests/Config/FlinkyCoreTests.xctestplan"> @@ -49,74 +50,19 @@ reference = "container:Targets/ShareExtensionUITests/Config/ShareExtensionUITests.xctestplan"> + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCore.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCore.xcscheme index 159f15a..9ab717d 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCore.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCore.xcscheme @@ -1,11 +1,11 @@ + runPostActionsOnFailure = "NO"> @@ -27,13 +27,27 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES" + onlyGenerateCoverageForSpecifiedTargets = "NO"> + default = "YES" + reference = "container:Targets/FlinkyCoreTests/Config/FlinkyCoreTests.xctestplan"> + + + + + + + + + + + + + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCoreTests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCoreTests.xcscheme index a4294f7..a5295ec 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCoreTests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCoreTests.xcscheme @@ -1,36 +1,53 @@ + runPostActionsOnFailure = "NO"> + + + + + + + shouldUseLaunchSchemeArgsEnv = "YES" + onlyGenerateCoverageForSpecifiedTargets = "NO"> + default = "YES" + reference = "container:Targets/FlinkyCoreTests/Config/FlinkyCoreTests.xctestplan"> + + + + - - - - + + + + + + + + + + + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/ScreenshotUITests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/ScreenshotUITests.xcscheme index 5a234f1..1d17bf1 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/ScreenshotUITests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/ScreenshotUITests.xcscheme @@ -1,11 +1,11 @@ + runPostActionsOnFailure = "NO"> @@ -29,7 +29,7 @@ buildForAnalyzing = "NO"> @@ -43,7 +43,7 @@ buildForAnalyzing = "YES"> @@ -55,25 +55,27 @@ buildConfiguration = "Release" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES" + onlyGenerateCoverageForSpecifiedTargets = "NO"> + default = "YES" + reference = "container:Targets/ScreenshotUITests/Config/ScreenshotUITests.xctestplan"> + + + + - - - - + + + + - + - + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme index 7a0f2bc..1f2b57d 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme @@ -1,12 +1,11 @@ + LastUpgradeVersion = "1640" + version = "1.7"> + runPostActionsOnFailure = "NO"> @@ -30,9 +29,9 @@ buildForAnalyzing = "YES"> @@ -42,92 +41,72 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> + shouldUseLaunchSchemeArgsEnv = "YES" + onlyGenerateCoverageForSpecifiedTargets = "NO"> + default = "YES" + reference = "container:Targets/ShareExtensionTests/Config/ShareExtensionTests.xctestplan"> + + + + - - - - - - - - - - - - + + - + allowLocationSimulation = "YES"> + - + + + + debugDocumentVersioning = "YES"> + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionTests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionTests.xcscheme index 6c649f1..63c2d7d 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionTests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionTests.xcscheme @@ -1,36 +1,53 @@ + runPostActionsOnFailure = "NO"> + + + + + + + shouldUseLaunchSchemeArgsEnv = "YES" + onlyGenerateCoverageForSpecifiedTargets = "NO"> + default = "YES" + reference = "container:Targets/ShareExtensionTests/Config/ShareExtensionTests.xctestplan"> + + + + - - - - + + + + + + + + + + + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionUITests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionUITests.xcscheme index 0c5c48e..260e177 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionUITests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionUITests.xcscheme @@ -1,91 +1,53 @@ + runPostActionsOnFailure = "NO"> + + + + + + + shouldUseLaunchSchemeArgsEnv = "YES" + onlyGenerateCoverageForSpecifiedTargets = "NO"> + default = "YES" + reference = "container:Targets/ShareExtensionUITests/Config/ShareExtensionUITests.xctestplan"> + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + - + - + + + + + + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme index d6681b5..97b8913 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme @@ -1,47 +1,53 @@ + runPostActionsOnFailure = "NO"> + + + + + + + shouldUseLaunchSchemeArgsEnv = "YES" + onlyGenerateCoverageForSpecifiedTargets = "NO"> + default = "YES" + reference = "container:Targets/Tests/Config/Tests.xctestplan"> + + + + - - - - - - - - + + + + + + + + + + + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme index 8f680d5..c86f6a7 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme @@ -1,36 +1,53 @@ + runPostActionsOnFailure = "NO"> + + + + + + + shouldUseLaunchSchemeArgsEnv = "YES" + onlyGenerateCoverageForSpecifiedTargets = "NO"> + default = "YES" + reference = "container:Targets/UITests/Config/UITests.xctestplan"> + + + + - - - - + + + + + + + + + + + + + + diff --git a/Makefile b/Makefile index 52f3783..9e991c1 100644 --- a/Makefile +++ b/Makefile @@ -227,7 +227,14 @@ lint: # # Runs all generator scripts to update licenses, settings version, and localization assets. .PHONY: generate -generate: generate-licenses generate-version-in-settings generate-localization +generate: generate-project generate-licenses generate-version-in-settings generate-localization + +## Generate Xcode project files via script +# +# Runs the generate-project.sh script to create Xcode project files from templates. +.PHONY: generate-project +generate-project: + ./Scripts/generate-project.sh ## Generate localized strings from xcstrings via script # diff --git a/Scripts/generate-project.sh b/Scripts/generate-project.sh new file mode 100755 index 0000000..583d1bd --- /dev/null +++ b/Scripts/generate-project.sh @@ -0,0 +1,39 @@ +#!/bin/bash +set -e + +# Store current working directory +pushd "$(pwd)" > /dev/null +# Change to script directory +cd "${0%/*}" + +# -- Begin Script -- + +echo "🔄 Generating Xcode project..." + +# Set up PATH for Homebrew tools +if [[ "$(uname -m)" == arm64 ]]; then + export PATH="/opt/homebrew/bin:$PATH" +else + export PATH="/usr/local/bin:$PATH" +fi + +# Change to project root +cd .. + +# Check if xcodegen is available +if ! command -v xcodegen &> /dev/null; then + echo "❌ Error: xcodegen is not installed or not in PATH" + echo "Please install xcodegen using: brew install xcodegen" + exit 1 +fi + +# Generate the Xcode project +echo "📝 Running xcodegen..." +xcodegen generate + +echo "✅ Xcode project generated successfully" + +# -- End Script -- + +# Return to original working directory +popd > /dev/null diff --git a/Targets/App/Sources/Resources/Info.plist b/Targets/App/Sources/Resources/Info.plist index 0c67376..1700b1d 100644 --- a/Targets/App/Sources/Resources/Info.plist +++ b/Targets/App/Sources/Resources/Info.plist @@ -1,5 +1,49 @@ - + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Flinky + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + ITSAppUsesNonExemptEncryption + + LSApplicationCategoryType + public.app-category.productivity + NFCReaderUsageDescription + Share links with other NFC-capable devices by bringing them close together. + NSPhotoLibraryAddUsageDescription + Save your QRCode to your Photos + UIApplicationSceneManifest_Generation + + UIApplicationSupportsIndirectInputEvents + + UILaunchScreen_Generation + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + UISupportedInterfaceOrientations_iPad + + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + + diff --git a/Targets/ShareExtension/Sources/Resources/Info.plist b/Targets/ShareExtension/Sources/Resources/Info.plist index 4dd1bdf..183637a 100644 --- a/Targets/ShareExtension/Sources/Resources/Info.plist +++ b/Targets/ShareExtension/Sources/Resources/Info.plist @@ -2,6 +2,22 @@ + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + XPC! + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 NSExtension NSExtensionAttributes diff --git a/project.yml b/project.yml new file mode 100644 index 0000000..c743698 --- /dev/null +++ b/project.yml @@ -0,0 +1,689 @@ +name: Flinky +options: + # XcodeGen options + minimumXcodeGenVersion: 2.44.1 + lastUpgradeCheck: "1640" + xcodeVersion: "16.4" + # Project options + bundleIdPrefix: com.techprimate + deploymentTarget: + iOS: "18.0" + # Directory options + createIntermediateGroups: true + generateEmptyDirectories: false + minimizedProjectReferenceProxies: true + buildIndependentTargetsInParallel: true + fileTypes: + xcstrings: file + groupOrdering: [] + defaultSourceDirectoryType: syncedFolder + # Localization options + useBaseInternationalization: false + developmentLanguage: en + +configs: + Debug: debug + Release: release + +packages: + SFSafeSymbols: + url: https://github.com/SFSafeSymbols/SFSafeSymbols + exactVersion: 7.0.0 + SentryCocoa: + url: https://github.com/getsentry/sentry-cocoa.git + exactVersion: 9.16.1 + OnLaunch: + url: https://github.com/kula-app/OnLaunch-iOS-Client + exactVersion: 0.0.6 + +targets: + Flinky: + type: application + platform: iOS + deploymentTarget: "18.0" + sources: + - type: syncedFolder + path: Targets/App + resources: + - Targets/App/Sources/Resources + info: + path: Targets/App/Sources/Resources/Info.plist + properties: + CFBundleDisplayName: Flinky + ITSAppUsesNonExemptEncryption: false + LSApplicationCategoryType: public.app-category.productivity + NFCReaderUsageDescription: "Share links with other NFC-capable devices by bringing them close together." + NSPhotoLibraryAddUsageDescription: "Save your QRCode to your Photos" + UIApplicationSceneManifest_Generation: true + UIApplicationSupportsIndirectInputEvents: true + UILaunchScreen_Generation: true + UISupportedInterfaceOrientations: + - UIInterfaceOrientationPortrait + UISupportedInterfaceOrientations_iPad: + - UIInterfaceOrientationLandscapeLeft + - UIInterfaceOrientationLandscapeRight + - UIInterfaceOrientationPortrait + - UIInterfaceOrientationPortraitUpsideDown + entitlements: + path: Targets/App/Sources/Resources/App.entitlements + properties: + com.apple.security.application-groups: + - group.com.techprimate.Flinky + dependencies: + - target: FlinkyCore + - target: ShareExtension + - package: SFSafeSymbols + - package: SentryCocoa + product: SentrySPM + - package: OnLaunch + settings: + base: + PRODUCT_NAME: $(TARGET_NAME) + PRODUCT_BUNDLE_IDENTIFIER: com.techprimate.Flinky + CURRENT_PROJECT_VERSION: 8 + MARKETING_VERSION: 1.1.5 + DEVELOPMENT_TEAM: BZ362SQ6AB + CODE_SIGN_STYLE: Manual + ENABLE_PREVIEWS: true + ENABLE_USER_SCRIPT_SANDBOXING: false + GENERATE_INFOPLIST_FILE: true + SWIFT_VERSION: 5.0 + TARGETED_DEVICE_FAMILY: "1,2" + ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME: AccentColor + SWIFT_EMIT_LOC_STRINGS: true + DEBUG_INFORMATION_FORMAT: dwarf-with-dsym + IPHONEOS_DEPLOYMENT_TARGET: "18.0" + configurations: + Debug: + OTHER_SWIFT_FLAGS: "" + Release: + SWIFT_ACTIVE_COMPILATION_CONDITIONS: ANALYTICS + OTHER_SWIFT_FLAGS: "" + preBuildScripts: + - name: "Run Script - Generate Files" + script: | + set -e + + # Set up PATH for Homebrew tools + if [[ "$(uname -m)" == arm64 ]]; then + export PATH="/opt/homebrew/bin:$PATH" + else + export PATH="/usr/local/bin:$PATH" + fi + + # Change to project directory + cd "$SRCROOT" + + # Generate licenses + ./Scripts/generate-licenses.sh + + # Generate version in settings + ./Scripts/generate-version-in-settings.sh + + # Generate localization + ./Scripts/generate-localization.sh + + echo "✅ All generation tasks completed successfully" + inputFiles: + - "$(SRCROOT)/Scripts/generate-licenses.sh" + - "$(SRCROOT)/Scripts/generate-version-in-settings.sh" + - "$(SRCROOT)/Scripts/generate-localization.sh" + - "$(SRCROOT)/Sources/Resources/Localizable.xcstrings" + - "$(SRCROOT)/Templates/en-strings.stencil" + - "$(SRCROOT)/Templates/l21strings.stencil" + - "$(SRCROOT)/Flinky.xcodeproj/project.pbxproj" + - "$(SRCROOT)/Flinky.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved" + outputFiles: + - "$(SRCROOT)/Sources/Resources/Settings.bundle/Licenses.plist" + - "$(SRCROOT)/Sources/Resources/Settings.bundle/Licenses.latest_result.txt" + - "$(SRCROOT)/Sources/Resources/Settings.bundle/Root.plist" + - "$(SRCROOT)/Sources/Utils/Localization.swift" + - "$(SRCROOT)/Generated/generated-en.strings" + shell: /bin/zsh + postBuildScripts: + - name: "Lint" + basedOnDependencyAnalysis: false + script: | + if [[ "$(uname -m)" == arm64 ]] + then + export PATH="/opt/homebrew/bin:$PATH" + fi + + if command -v swiftlint >/dev/null 2>&1 + then + swiftlint + else + echo "warning: `swiftlint` command not found - See https://github.com/realm/SwiftLint#installation for installation instructions." + fi + runOnlyWhenInstalling: false + - name: "Upload Debug Symbols to Sentry" + basedOnDependencyAnalysis: false + script: | + # This script is responsible for uploading debug symbols and source context for Sentry. + if [[ "$(uname -m)" == arm64 ]]; then + export PATH="/opt/homebrew/bin:$PATH" + fi + + if which sentry-cli >/dev/null; then + export SENTRY_ORG=techprimate + export SENTRY_PROJECT=flinky + ERROR=$(sentry-cli debug-files upload --include-sources "$DWARF_DSYM_FOLDER_PATH" 2>&1 >/dev/null) + if [ ! $? -eq 0 ]; then + echo "warning: sentry-cli - $ERROR" + fi + else + echo "warning: sentry-cli not installed, download from https://github.com/getsentry/sentry-cli/releases" + fi + inputFiles: + - "${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}" + runOnlyWhenInstalling: false + + FlinkyCore: + type: framework + platform: iOS + deploymentTarget: "18.0" + sources: + - path: Targets/FlinkyCore/Sources + excludes: + - "**/*.xcstrings" + resources: + - Targets/FlinkyCore/Sources/Resources/Localizable.xcstrings + dependencies: + - package: SFSafeSymbols + settings: + base: + PRODUCT_NAME: $(TARGET_NAME:c99extidentifier) + PRODUCT_BUNDLE_IDENTIFIER: com.techprimate.Flinky.Core + CURRENT_PROJECT_VERSION: 8 + MARKETING_VERSION: 1.1.5 + DEVELOPMENT_TEAM: "" + CODE_SIGN_STYLE: Manual + CODE_SIGN_IDENTITY: "" + PROVISIONING_PROFILE_SPECIFIER: "" + SWIFT_VERSION: 5.0 + TARGETED_DEVICE_FAMILY: "1,2" + BUILD_LIBRARY_FOR_DISTRIBUTION: false + DYLIB_COMPATIBILITY_VERSION: 1 + DYLIB_CURRENT_VERSION: 1 + DYLIB_INSTALL_NAME_BASE: "@rpath" + ENABLE_MODULE_VERIFIER: true + ENABLE_USER_SCRIPT_SANDBOXING: false + GENERATE_INFOPLIST_FILE: true + INSTALL_PATH: "$(LOCAL_LIBRARY_DIR)/Frameworks" + IPHONEOS_DEPLOYMENT_TARGET: "18.0" + MODULE_VERIFIER_SUPPORTED_LANGUAGES: "objective-c objective-c++" + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS: "gnu17 gnu++20" + SKIP_INSTALL: true + SWIFT_EMIT_LOC_STRINGS: true + SWIFT_INSTALL_MODULE: true + SWIFT_INSTALL_OBJC_HEADER: false + VERSIONING_SYSTEM: apple-generic + VERSION_INFO_PREFIX: "" + preBuildScripts: + - name: "Run Script - Generate Files" + script: | + set -e + + # Set up PATH for Homebrew tools + if [[ "$(uname -m)" == arm64 ]]; then + export PATH="/opt/homebrew/bin:$PATH" + else + export PATH="/usr/local/bin:$PATH" + fi + + # Change to project directory + cd "$SRCROOT" + + # Generate localization + ./Scripts/generate-localization.sh + + echo "✅ All generation tasks completed successfully" + shell: /bin/sh + + ShareExtension: + type: app-extension + platform: iOS + deploymentTarget: "18.0" + sources: + - path: Targets/ShareExtension/Sources + excludes: + - "**/*.xcstrings" + resources: + - Targets/ShareExtension/Sources/Resources/Localizable.xcstrings + info: + path: Targets/ShareExtension/Sources/Resources/Info.plist + properties: + NSExtension: + NSExtensionAttributes: + NSExtensionActivationRule: + NSExtensionActivationSupportsWebURLWithMaxCount: 1 + NSExtensionMainStoryboard: MainInterface + NSExtensionPointIdentifier: com.apple.share-services + entitlements: + path: Targets/ShareExtension/Sources/Resources/ShareExtension.entitlements + properties: + com.apple.security.application-groups: + - group.com.techprimate.Flinky + dependencies: + - target: FlinkyCore + - package: SentryCocoa + product: SentrySPM + settings: + base: + PRODUCT_NAME: $(TARGET_NAME) + PRODUCT_BUNDLE_IDENTIFIER: com.techprimate.Flinky.ShareExtension + CURRENT_PROJECT_VERSION: 8 + MARKETING_VERSION: 1.1.5 + DEVELOPMENT_TEAM: "" + CODE_SIGN_STYLE: Manual + CODE_SIGN_IDENTITY: Apple Development + PROVISIONING_PROFILE_SPECIFIER: "" + GENERATE_INFOPLIST_FILE: true + SWIFT_VERSION: 5.0 + TARGETED_DEVICE_FAMILY: "1,2" + IPHONEOS_DEPLOYMENT_TARGET: "18.0" + SKIP_INSTALL: true + SWIFT_EMIT_LOC_STRINGS: true + + Tests: + type: bundle.unit-test + platform: iOS + deploymentTarget: "18.0" + sources: + - Targets/Tests/Sources + dependencies: + - target: Flinky + - target: FlinkyCore + - package: SFSafeSymbols + settings: + base: + PRODUCT_NAME: $(TARGET_NAME) + PRODUCT_BUNDLE_IDENTIFIER: com.techprimate.Flinky.Tests + CURRENT_PROJECT_VERSION: 8 + MARKETING_VERSION: 1.1.5 + DEVELOPMENT_TEAM: "" + CODE_SIGN_STYLE: Manual + GENERATE_INFOPLIST_FILE: true + IPHONEOS_DEPLOYMENT_TARGET: "18.0" + SWIFT_EMIT_LOC_STRINGS: false + SWIFT_VERSION: 5.0 + TARGETED_DEVICE_FAMILY: "1,2" + TEST_HOST: "$(BUILT_PRODUCTS_DIR)/Flinky.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Flinky" + BUNDLE_LOADER: "$(TEST_HOST)" + + FlinkyCoreTests: + type: bundle.unit-test + platform: iOS + deploymentTarget: "18.0" + sources: + - Targets/FlinkyCoreTests/Sources + dependencies: + - target: Flinky + - target: FlinkyCore + - package: SFSafeSymbols + settings: + base: + PRODUCT_NAME: $(TARGET_NAME) + PRODUCT_BUNDLE_IDENTIFIER: com.techprimate.Flinky.CoreTests + CURRENT_PROJECT_VERSION: 8 + MARKETING_VERSION: 1.1.5 + DEVELOPMENT_TEAM: "" + CODE_SIGN_STYLE: Manual + GENERATE_INFOPLIST_FILE: true + IPHONEOS_DEPLOYMENT_TARGET: "18.0" + SWIFT_EMIT_LOC_STRINGS: false + SWIFT_VERSION: 5.0 + TARGETED_DEVICE_FAMILY: "1,2" + TEST_HOST: "$(BUILT_PRODUCTS_DIR)/Flinky.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Flinky" + BUNDLE_LOADER: "$(TEST_HOST)" + + ScreenshotUITests: + type: bundle.ui-testing + platform: iOS + deploymentTarget: "18.0" + sources: + - Targets/ScreenshotUITests/Sources + dependencies: + - target: Flinky + settings: + base: + PRODUCT_NAME: $(TARGET_NAME) + PRODUCT_BUNDLE_IDENTIFIER: com.techprimate.Flinky.ScreenshotUITests + CURRENT_PROJECT_VERSION: 8 + MARKETING_VERSION: 1.1.5 + DEVELOPMENT_TEAM: "" + CODE_SIGN_STYLE: Manual + GENERATE_INFOPLIST_FILE: true + IPHONEOS_DEPLOYMENT_TARGET: "18.0" + SWIFT_EMIT_LOC_STRINGS: false + SWIFT_VERSION: 5.0 + TARGETED_DEVICE_FAMILY: "1,2" + TEST_TARGET_NAME: Flinky + + UITests: + type: bundle.ui-testing + platform: iOS + deploymentTarget: "18.5" + sources: + - Targets/UITests/Sources + dependencies: + - target: Flinky + settings: + base: + PRODUCT_NAME: $(TARGET_NAME) + PRODUCT_BUNDLE_IDENTIFIER: com.techprimate.Flinky.UITests + CURRENT_PROJECT_VERSION: 8 + MARKETING_VERSION: 1.1.5 + DEVELOPMENT_TEAM: "" + CODE_SIGN_STYLE: Manual + GENERATE_INFOPLIST_FILE: true + IPHONEOS_DEPLOYMENT_TARGET: "18.5" + SWIFT_EMIT_LOC_STRINGS: false + SWIFT_VERSION: 5.0 + TARGETED_DEVICE_FAMILY: "1,2" + TEST_TARGET_NAME: Flinky + + ShareExtensionTests: + type: bundle.unit-test + platform: iOS + deploymentTarget: "18.5" + sources: + - Targets/ShareExtensionTests/Sources + dependencies: + - target: Flinky + settings: + base: + PRODUCT_NAME: $(TARGET_NAME) + PRODUCT_BUNDLE_IDENTIFIER: com.techprimate.Flinky.ShareExtensionTests + CURRENT_PROJECT_VERSION: 8 + MARKETING_VERSION: 1.1.5 + DEVELOPMENT_TEAM: "" + CODE_SIGN_STYLE: Manual + GENERATE_INFOPLIST_FILE: true + IPHONEOS_DEPLOYMENT_TARGET: "18.5" + SWIFT_EMIT_LOC_STRINGS: false + SWIFT_VERSION: 5.0 + TARGETED_DEVICE_FAMILY: "1,2" + TEST_HOST: "$(BUILT_PRODUCTS_DIR)/Flinky.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Flinky" + BUNDLE_LOADER: "$(TEST_HOST)" + + ShareExtensionUITests: + type: bundle.ui-testing + platform: iOS + deploymentTarget: "18.0" + sources: + - Targets/ShareExtensionUITests/Sources + dependencies: + - target: Flinky + settings: + base: + PRODUCT_NAME: $(TARGET_NAME) + PRODUCT_BUNDLE_IDENTIFIER: com.techprimate.Flinky.ShareExtensionUITests + CURRENT_PROJECT_VERSION: 8 + MARKETING_VERSION: 1.1.5 + DEVELOPMENT_TEAM: "" + CODE_SIGN_STYLE: Manual + GENERATE_INFOPLIST_FILE: true + IPHONEOS_DEPLOYMENT_TARGET: "18.0" + SWIFT_EMIT_LOC_STRINGS: false + SWIFT_VERSION: 5.0 + TARGETED_DEVICE_FAMILY: "1,2" + TEST_TARGET_NAME: Flinky + +schemes: + App: + build: + targets: + Flinky: all + run: + config: Debug + test: + config: Debug + testPlans: + - path: Targets/ShareExtensionTests/Config/ShareExtensionTests.xctestplan + defaultPlan: true + - path: Targets/Tests/Config/Tests.xctestplan + - path: Targets/FlinkyCoreTests/Config/FlinkyCoreTests.xctestplan + - path: Targets/UITests/Config/UITests.xctestplan + - path: Targets/ScreenshotUITests/Config/ScreenshotUITests.xctestplan + - path: Targets/ShareExtensionUITests/Config/ShareExtensionUITests.xctestplan + profile: + config: Release + analyze: + config: Debug + archive: + config: Release + + FlinkyCore: + build: + targets: + FlinkyCore: all + run: + config: Debug + test: + config: Debug + testPlans: + - path: Targets/FlinkyCoreTests/Config/FlinkyCoreTests.xctestplan + defaultPlan: true + profile: + config: Release + analyze: + config: Debug + archive: + config: Release + + FlinkyCoreTests: + build: + targets: + FlinkyCoreTests: [test] + test: + config: Debug + testPlans: + - path: Targets/FlinkyCoreTests/Config/FlinkyCoreTests.xctestplan + defaultPlan: true + run: + config: Debug + profile: + config: Release + analyze: + config: Debug + archive: + config: Release + + ScreenshotUITests: + build: + targets: + Flinky: all + ScreenshotUITests: [test] + ShareExtension: all + run: + config: Release + test: + config: Release + testPlans: + - path: Targets/ScreenshotUITests/Config/ScreenshotUITests.xctestplan + defaultPlan: true + profile: + config: Release + analyze: + config: Release + archive: + config: Release + + ShareExtension: + build: + targets: + ShareExtension: all + Flinky: all + run: + config: Debug + test: + config: Debug + testPlans: + - path: Targets/ShareExtensionTests/Config/ShareExtensionTests.xctestplan + defaultPlan: true + - path: Targets/ShareExtensionUITests/Config/ShareExtensionUITests.xctestplan + profile: + config: Release + analyze: + config: Debug + archive: + config: Release + + ShareExtensionTests: + build: + targets: + ShareExtensionTests: [test] + test: + config: Debug + testPlans: + - path: Targets/ShareExtensionTests/Config/ShareExtensionTests.xctestplan + defaultPlan: true + run: + config: Debug + profile: + config: Release + analyze: + config: Debug + archive: + config: Release + + ShareExtensionUITests: + build: + targets: + ShareExtensionUITests: [test] + test: + config: Debug + testPlans: + - path: Targets/ShareExtensionUITests/Config/ShareExtensionUITests.xctestplan + defaultPlan: true + run: + config: Debug + profile: + config: Release + analyze: + config: Debug + archive: + config: Release + + Tests: + build: + targets: + Tests: [test] + test: + config: Debug + testPlans: + - path: Targets/Tests/Config/Tests.xctestplan + defaultPlan: true + run: + config: Debug + profile: + config: Release + analyze: + config: Debug + archive: + config: Release + + UITests: + build: + targets: + UITests: [test] + test: + config: Debug + testPlans: + - path: Targets/UITests/Config/UITests.xctestplan + defaultPlan: true + run: + config: Debug + profile: + config: Release + analyze: + config: Debug + archive: + config: Release + +settingGroups: + base: + ALWAYS_SEARCH_USER_PATHS: false + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS: true + CLANG_ANALYZER_NONNULL: true + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION: YES_AGGRESSIVE + CLANG_CXX_LANGUAGE_STANDARD: gnu++20 + CLANG_ENABLE_MODULES: true + CLANG_ENABLE_OBJC_ARC: true + CLANG_ENABLE_OBJC_WEAK: true + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING: true + CLANG_WARN_BOOL_CONVERSION: true + CLANG_WARN_COMMA: true + CLANG_WARN_CONSTANT_CONVERSION: true + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS: true + CLANG_WARN_DIRECT_OBJC_ISA_USAGE: YES_ERROR + CLANG_WARN_DOCUMENTATION_COMMENTS: true + CLANG_WARN_EMPTY_BODY: true + CLANG_WARN_ENUM_CONVERSION: true + CLANG_WARN_INFINITE_RECURSION: true + CLANG_WARN_INT_CONVERSION: true + CLANG_WARN_NON_LITERAL_NULL_CONVERSION: true + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF: true + CLANG_WARN_OBJC_LITERAL_CONVERSION: true + CLANG_WARN_OBJC_ROOT_CLASS: YES_ERROR + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER: true + CLANG_WARN_RANGE_LOOP_ANALYSIS: true + CLANG_WARN_STRICT_PROTOTYPES: true + CLANG_WARN_SUSPICIOUS_MOVE: true + CLANG_WARN_UNGUARDED_AVAILABILITY: YES_AGGRESSIVE + CLANG_WARN_UNREACHABLE_CODE: true + CLANG_WARN__DUPLICATE_METHOD_MATCH: true + COPY_PHASE_STRIP: false + DEVELOPMENT_TEAM: BZ362SQ6AB + ENABLE_STRICT_OBJC_MSGSEND: true + ENABLE_USER_SCRIPT_SANDBOXING: true + GCC_C_LANGUAGE_STANDARD: gnu17 + GCC_NO_COMMON_BLOCKS: true + GCC_WARN_64_TO_32_BIT_CONVERSION: true + GCC_WARN_ABOUT_RETURN_TYPE: YES_ERROR + GCC_WARN_UNDECLARED_SELECTOR: true + GCC_WARN_UNINITIALIZED_AUTOS: YES_AGGRESSIVE + GCC_WARN_UNUSED_FUNCTION: true + GCC_WARN_UNUSED_VARIABLE: true + IPHONEOS_DEPLOYMENT_TARGET: "18.4" + LOCALIZATION_PREFERS_STRING_CATALOGS: true + MTL_FAST_MATH: true + SDKROOT: iphoneos + SWIFT_EMIT_LOC_STRINGS: true + +settings: + base: base + configs: + Debug: + DEBUG_INFORMATION_FORMAT: dwarf + ENABLE_TESTABILITY: true + GCC_DYNAMIC_NO_PIC: false + GCC_OPTIMIZATION_LEVEL: 0 + GCC_PREPROCESSOR_DEFINITIONS: + - DEBUG=1 + - $(inherited) + MTL_ENABLE_DEBUG_INFO: INCLUDE_SOURCE + ONLY_ACTIVE_ARCH: true + SWIFT_ACTIVE_COMPILATION_CONDITIONS: + - DEBUG + - $(inherited) + SWIFT_OPTIMIZATION_LEVEL: -Onone + Release: + DEBUG_INFORMATION_FORMAT: dwarf-with-dsym + ENABLE_NS_ASSERTIONS: false + MTL_ENABLE_DEBUG_INFO: false + SWIFT_COMPILATION_MODE: wholemodule + VALIDATE_PRODUCT: true + +fileGroups: + - type: syncedFolder + path: Config + files: + - .gitignore + - .editorconfig + - .swiftlint.yml + - swiftgen.yml + - Brewfile + - Makefile From f3f19f79d209f05b07b3421501bd272af16fcfed Mon Sep 17 00:00:00 2001 From: Philip Niedertscheider Date: Fri, 5 Jun 2026 11:45:38 +0200 Subject: [PATCH 2/5] fix: restore testable references and entitlements in xcodegen schemes Add test targets to all scheme definitions in project.yml so XcodeGen generates proper sections. Fix entitlements and Info.plist properties that were being wiped during generation. --- .../xcshareddata/xcschemes/App.xcscheme | 55 +++++++++++++++++++ .../xcschemes/FlinkyCoreTests.xcscheme | 11 ++++ .../xcschemes/ScreenshotUITests.xcscheme | 11 ++++ .../xcschemes/ShareExtension.xcscheme | 33 +++++++++++ .../xcschemes/ShareExtensionTests.xcscheme | 11 ++++ .../xcschemes/ShareExtensionUITests.xcscheme | 44 +++++++++++++++ .../xcshareddata/xcschemes/Tests.xcscheme | 22 ++++++++ .../xcshareddata/xcschemes/UITests.xcscheme | 11 ++++ project.yml | 43 +++++++++++++++ 9 files changed, 241 insertions(+) diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/App.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/App.xcscheme index ae7e3e4..e806004 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/App.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/App.xcscheme @@ -60,6 +60,61 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCoreTests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCoreTests.xcscheme index a5295ec..6cba310 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCoreTests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/FlinkyCoreTests.xcscheme @@ -45,6 +45,17 @@ + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/ScreenshotUITests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/ScreenshotUITests.xcscheme index 1d17bf1..c3ca4da 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/ScreenshotUITests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/ScreenshotUITests.xcscheme @@ -73,6 +73,17 @@ + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme index 1f2b57d..389cdd2 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme @@ -62,6 +62,39 @@ + + + + + + + + + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionTests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionTests.xcscheme index 63c2d7d..cca7194 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionTests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionTests.xcscheme @@ -45,6 +45,17 @@ + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionUITests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionUITests.xcscheme index 260e177..c2f2b9a 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionUITests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtensionUITests.xcscheme @@ -45,6 +45,50 @@ + + + + + + + + + + + + + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme index 97b8913..a6d400e 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/Tests.xcscheme @@ -45,6 +45,28 @@ + + + + + + + + diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme index c86f6a7..8aab05b 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/UITests.xcscheme @@ -45,6 +45,17 @@ + + + + diff --git a/project.yml b/project.yml index c743698..bdb8dcd 100644 --- a/project.yml +++ b/project.yml @@ -448,6 +448,17 @@ schemes: - path: Targets/UITests/Config/UITests.xctestplan - path: Targets/ScreenshotUITests/Config/ScreenshotUITests.xctestplan - path: Targets/ShareExtensionUITests/Config/ShareExtensionUITests.xctestplan + targets: + - name: Tests + parallelizable: true + - name: FlinkyCoreTests + parallelizable: true + - name: ShareExtensionUITests + parallelizable: true + - name: UITests + parallelizable: true + - name: ShareExtensionTests + parallelizable: true profile: config: Release analyze: @@ -482,6 +493,9 @@ schemes: testPlans: - path: Targets/FlinkyCoreTests/Config/FlinkyCoreTests.xctestplan defaultPlan: true + targets: + - name: FlinkyCoreTests + parallelizable: true run: config: Debug profile: @@ -504,6 +518,8 @@ schemes: testPlans: - path: Targets/ScreenshotUITests/Config/ScreenshotUITests.xctestplan defaultPlan: true + targets: + - name: ScreenshotUITests profile: config: Release analyze: @@ -524,6 +540,13 @@ schemes: - path: Targets/ShareExtensionTests/Config/ShareExtensionTests.xctestplan defaultPlan: true - path: Targets/ShareExtensionUITests/Config/ShareExtensionUITests.xctestplan + targets: + - name: ShareExtensionUITests + parallelizable: true + - name: UITests + parallelizable: true + - name: ShareExtensionTests + parallelizable: true profile: config: Release analyze: @@ -540,6 +563,9 @@ schemes: testPlans: - path: Targets/ShareExtensionTests/Config/ShareExtensionTests.xctestplan defaultPlan: true + targets: + - name: ShareExtensionTests + parallelizable: true run: config: Debug profile: @@ -558,6 +584,15 @@ schemes: testPlans: - path: Targets/ShareExtensionUITests/Config/ShareExtensionUITests.xctestplan defaultPlan: true + targets: + - name: ShareExtensionUITests + parallelizable: true + - name: FlinkyCoreTests + parallelizable: true + - name: UITests + parallelizable: true + - name: ShareExtensionTests + parallelizable: true run: config: Debug profile: @@ -576,6 +611,11 @@ schemes: testPlans: - path: Targets/Tests/Config/Tests.xctestplan defaultPlan: true + targets: + - name: Tests + parallelizable: true + - name: ShareExtensionTests + parallelizable: true run: config: Debug profile: @@ -594,6 +634,9 @@ schemes: testPlans: - path: Targets/UITests/Config/UITests.xctestplan defaultPlan: true + targets: + - name: UITests + parallelizable: true run: config: Debug profile: From fd1b6f4f93400cfe9a62f666c5a50bc1d5849a6c Mon Sep 17 00:00:00 2001 From: Philip Niedertscheider Date: Fri, 5 Jun 2026 11:51:26 +0200 Subject: [PATCH 3/5] fix: correct input/output paths in preBuildScript for incremental builds Update stale $(SRCROOT)/Sources/... paths to $(SRCROOT)/Targets/App/Sources/... to match the actual file locations after the directory restructuring. --- Flinky.xcodeproj/project.pbxproj | 10 +++++----- project.yml | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Flinky.xcodeproj/project.pbxproj b/Flinky.xcodeproj/project.pbxproj index a40b5e0..04db3e6 100644 --- a/Flinky.xcodeproj/project.pbxproj +++ b/Flinky.xcodeproj/project.pbxproj @@ -883,7 +883,7 @@ "$(SRCROOT)/Scripts/generate-licenses.sh", "$(SRCROOT)/Scripts/generate-version-in-settings.sh", "$(SRCROOT)/Scripts/generate-localization.sh", - "$(SRCROOT)/Sources/Resources/Localizable.xcstrings", + "$(SRCROOT)/Targets/App/Sources/Resources/Localizable.xcstrings", "$(SRCROOT)/Templates/en-strings.stencil", "$(SRCROOT)/Templates/l21strings.stencil", "$(SRCROOT)/Flinky.xcodeproj/project.pbxproj", @@ -893,10 +893,10 @@ outputFileListPaths = ( ); outputPaths = ( - "$(SRCROOT)/Sources/Resources/Settings.bundle/Licenses.plist", - "$(SRCROOT)/Sources/Resources/Settings.bundle/Licenses.latest_result.txt", - "$(SRCROOT)/Sources/Resources/Settings.bundle/Root.plist", - "$(SRCROOT)/Sources/Utils/Localization.swift", + "$(SRCROOT)/Targets/App/Sources/Resources/Settings.bundle/Licenses.plist", + "$(SRCROOT)/Targets/App/Sources/Resources/Settings.bundle/Licenses.latest_result.txt", + "$(SRCROOT)/Targets/App/Sources/Resources/Settings.bundle/Root.plist", + "$(SRCROOT)/Targets/App/Sources/Generated/L10n.swift", "$(SRCROOT)/Generated/generated-en.strings", ); runOnlyForDeploymentPostprocessing = 0; diff --git a/project.yml b/project.yml index bdb8dcd..0e62022 100644 --- a/project.yml +++ b/project.yml @@ -129,16 +129,16 @@ targets: - "$(SRCROOT)/Scripts/generate-licenses.sh" - "$(SRCROOT)/Scripts/generate-version-in-settings.sh" - "$(SRCROOT)/Scripts/generate-localization.sh" - - "$(SRCROOT)/Sources/Resources/Localizable.xcstrings" + - "$(SRCROOT)/Targets/App/Sources/Resources/Localizable.xcstrings" - "$(SRCROOT)/Templates/en-strings.stencil" - "$(SRCROOT)/Templates/l21strings.stencil" - "$(SRCROOT)/Flinky.xcodeproj/project.pbxproj" - "$(SRCROOT)/Flinky.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved" outputFiles: - - "$(SRCROOT)/Sources/Resources/Settings.bundle/Licenses.plist" - - "$(SRCROOT)/Sources/Resources/Settings.bundle/Licenses.latest_result.txt" - - "$(SRCROOT)/Sources/Resources/Settings.bundle/Root.plist" - - "$(SRCROOT)/Sources/Utils/Localization.swift" + - "$(SRCROOT)/Targets/App/Sources/Resources/Settings.bundle/Licenses.plist" + - "$(SRCROOT)/Targets/App/Sources/Resources/Settings.bundle/Licenses.latest_result.txt" + - "$(SRCROOT)/Targets/App/Sources/Resources/Settings.bundle/Root.plist" + - "$(SRCROOT)/Targets/App/Sources/Generated/L10n.swift" - "$(SRCROOT)/Generated/generated-en.strings" shell: /bin/zsh postBuildScripts: From ff6c38ec759e0af171ba885dd1915479ab0dfacf Mon Sep 17 00:00:00 2001 From: Philip Niedertscheider Date: Fri, 5 Jun 2026 11:55:00 +0200 Subject: [PATCH 4/5] fix: add extension-specific run config to ShareExtension scheme Configure askForAppToLaunch, launchAutomaticallySubstyle, debugEnabled, and executable for proper app extension debugging workflow. --- .../xcshareddata/xcschemes/ShareExtension.xcscheme | 8 +++++--- project.yml | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme index 389cdd2..88d528c 100644 --- a/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme +++ b/Flinky.xcodeproj/xcshareddata/xcschemes/ShareExtension.xcscheme @@ -101,14 +101,16 @@ + allowLocationSimulation = "YES" + launchAutomaticallySubstyle = "2"> Date: Fri, 5 Jun 2026 13:43:40 +0200 Subject: [PATCH 5/5] refactor: split target sources into explicit Sources/Config/Generated groups - Remove XcodeGen `info` sections; move custom properties to INFOPLIST_KEY_* build settings (matches original main pattern) - Restore minimal Info.plist files (empty for App, NSExtension-only for ShareExtension) - Split each target's sources into explicit subdirectories: - Sources: synced folder (auto-discovery, target membership) - Config: regular group with buildPhase: none (navigator only) - Generated: regular group with buildPhase: none (navigator only) - Prevents .gitkeep, generated-en.strings, and xctestplan files from leaking into app/test bundles --- Flinky.xcodeproj/project.pbxproj | 250 ++++++++++++++++-- Targets/App/Config/.gitkeep | 1 + Targets/App/Sources/Resources/Info.plist | 46 +--- Targets/FlinkyCore/Config/.gitkeep | 1 + Targets/FlinkyCore/Generated/.gitkeep | 1 + Targets/FlinkyCoreTests/Generated/.gitkeep | 1 + Targets/ScreenshotUITests/Generated/.gitkeep | 1 + Targets/ShareExtension/Config/.gitkeep | 1 + Targets/ShareExtension/Generated/.gitkeep | 1 + .../Sources/Resources/Info.plist | 16 -- .../ShareExtensionTests/Generated/.gitkeep | 1 + .../ShareExtensionUITests/Generated/.gitkeep | 1 + Targets/Tests/Generated/.gitkeep | 1 + Targets/UITests/Generated/.gitkeep | 1 + project.yml | 122 ++++++--- 15 files changed, 330 insertions(+), 115 deletions(-) create mode 100644 Targets/App/Config/.gitkeep create mode 100644 Targets/FlinkyCore/Config/.gitkeep create mode 100644 Targets/FlinkyCore/Generated/.gitkeep create mode 100644 Targets/FlinkyCoreTests/Generated/.gitkeep create mode 100644 Targets/ScreenshotUITests/Generated/.gitkeep create mode 100644 Targets/ShareExtension/Config/.gitkeep create mode 100644 Targets/ShareExtension/Generated/.gitkeep create mode 100644 Targets/ShareExtensionTests/Generated/.gitkeep create mode 100644 Targets/ShareExtensionUITests/Generated/.gitkeep create mode 100644 Targets/Tests/Generated/.gitkeep create mode 100644 Targets/UITests/Generated/.gitkeep diff --git a/Flinky.xcodeproj/project.pbxproj b/Flinky.xcodeproj/project.pbxproj index 04db3e6..1783fdf 100644 --- a/Flinky.xcodeproj/project.pbxproj +++ b/Flinky.xcodeproj/project.pbxproj @@ -153,14 +153,33 @@ /* Begin PBXFileReference section */ 059BCB5750D9FA391DD12D81 /* ScreenshotUITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = ScreenshotUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 079EC5D290872123FB3932F7 /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; + 0CD0E5B528681C37C5D9BFA8 /* Tests.xctestplan */ = {isa = PBXFileReference; path = Tests.xctestplan; sourceTree = ""; }; + 0F0B94F3BDCFC52059CB276A /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; + 17EA3DC70EB92B6918EB416D /* ScreenshotUITests.xctestplan */ = {isa = PBXFileReference; path = ScreenshotUITests.xctestplan; sourceTree = ""; }; 1D900CBF09B14E24193D89A4 /* UITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = UITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 36351257627C5D50DA20A632 /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; 38564E628219DE7E3AB7A218 /* Tests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = Tests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 42A63C68C7CE52097D4D6A87 /* ShareExtensionUITests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = ShareExtensionUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 42D5326755890014646F1A18 /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; + 577A116C3CE64463030632D4 /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; 59B6AC6754A0DDA42CA41FC9 /* FlinkyCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = FlinkyCore.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 5A78BDEF1343DB01FD30C085 /* Flinky.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Flinky.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 63F2719A154E0F147F282342 /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; + 6C12F45D5D5C165AEDD528B0 /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; + 6D6045792B8E63F5E6F67F60 /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; + 7C6BB210F711DB71F2A873DB /* generated-en.strings */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; path = "generated-en.strings"; sourceTree = ""; }; + 853DB7017FF97DD3908F6C7F /* ShareExtensionTests.xctestplan */ = {isa = PBXFileReference; path = ShareExtensionTests.xctestplan; sourceTree = ""; }; + 87313E6AE102FDC7EE6E3BF2 /* FlinkyCoreTests.xctestplan */ = {isa = PBXFileReference; path = FlinkyCoreTests.xctestplan; sourceTree = ""; }; + 8FC31C8510DC1BCB55183C78 /* ShareExtensionUITests.xctestplan */ = {isa = PBXFileReference; path = ShareExtensionUITests.xctestplan; sourceTree = ""; }; + 987257103FB94CF2DC77F06B /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; + A72A23B2DF367F098C641658 /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; ACA557858781CC46D5336CFC /* ShareExtension.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = ShareExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; C125331DA10E849935655F97 /* ShareExtensionTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = ShareExtensionTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; D0E29C2ADD1C55FDD65047F6 /* FlinkyCoreTests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = FlinkyCoreTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + D9A18AE1941697EAE2F5D108 /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; + E14279C5A24404773D6EB183 /* .gitkeep */ = {isa = PBXFileReference; path = .gitkeep; sourceTree = ""; }; + E3083D8106034E78E306C15C /* UITests.xctestplan */ = {isa = PBXFileReference; path = UITests.xctestplan; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -172,19 +191,19 @@ ); target = 5DE7B4773E669E09577A0496 /* ShareExtension */; }; - BE3C127FE0C4A3162480CE38 /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { + E651A0D863A3C222423586CC /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( - Sources/Resources/Info.plist, + Resources/Localizable.xcstrings, ); - target = 9198AA103876EC14A96930E2 /* Flinky */; + target = 43502ECD46B23B0DE3807D91 /* FlinkyCore */; }; - E651A0D863A3C222423586CC /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { + F9F9BCB70222C50340A32881 /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = { isa = PBXFileSystemSynchronizedBuildFileExceptionSet; membershipExceptions = ( - Resources/Localizable.xcstrings, + Resources/Info.plist, ); - target = 43502ECD46B23B0DE3807D91 /* FlinkyCore */; + target = 9198AA103876EC14A96930E2 /* Flinky */; }; /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -229,8 +248,11 @@ path = Sources; sourceTree = ""; }; - 8C7AFEE60176D28EB8433EF0 /* Sources */ = { + 70D1B52C7753D5F428D702C8 /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + F9F9BCB70222C50340A32881 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, + ); explicitFileTypes = { }; explicitFolders = ( @@ -239,11 +261,8 @@ path = Sources; sourceTree = ""; }; - A04DE5BF04B0E902D35CBE03 /* Sources */ = { + 8C7AFEE60176D28EB8433EF0 /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - A3EDFFCDCD55C83D0CADFC94 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, - ); explicitFileTypes = { }; explicitFolders = ( @@ -252,17 +271,17 @@ path = Sources; sourceTree = ""; }; - BC5F79CA9A38A9EE6E30D032 /* App */ = { + A04DE5BF04B0E902D35CBE03 /* Sources */ = { isa = PBXFileSystemSynchronizedRootGroup; exceptions = ( - BE3C127FE0C4A3162480CE38 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, + A3EDFFCDCD55C83D0CADFC94 /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = { }; explicitFolders = ( ); - name = App; - path = App; + name = Sources; + path = Sources; sourceTree = ""; }; C61D7A355BA14243C5CB1404 /* Sources */ = { @@ -340,9 +359,59 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 04F97F31FB6C7194F6D2660F /* Generated */ = { + isa = PBXGroup; + children = ( + 36351257627C5D50DA20A632 /* .gitkeep */, + ); + path = Generated; + sourceTree = ""; + }; + 05F6990A0720A8E9C7410F13 /* Generated */ = { + isa = PBXGroup; + children = ( + 079EC5D290872123FB3932F7 /* .gitkeep */, + ); + path = Generated; + sourceTree = ""; + }; + 0702235C70DB52ACFED3E44C /* Config */ = { + isa = PBXGroup; + children = ( + 87313E6AE102FDC7EE6E3BF2 /* FlinkyCoreTests.xctestplan */, + ); + path = Config; + sourceTree = ""; + }; + 07730552C5E182E06469F7A2 /* Config */ = { + isa = PBXGroup; + children = ( + 8FC31C8510DC1BCB55183C78 /* ShareExtensionUITests.xctestplan */, + ); + path = Config; + sourceTree = ""; + }; + 07E98CB4F7B53BE407E1537B /* Config */ = { + isa = PBXGroup; + children = ( + 853DB7017FF97DD3908F6C7F /* ShareExtensionTests.xctestplan */, + ); + path = Config; + sourceTree = ""; + }; + 16DA5BF6534D49C9F2935B1C /* Generated */ = { + isa = PBXGroup; + children = ( + 6C12F45D5D5C165AEDD528B0 /* .gitkeep */, + ); + path = Generated; + sourceTree = ""; + }; 1A0019A19038AEB5DB058ADE /* ShareExtensionUITests */ = { isa = PBXGroup; children = ( + 07730552C5E182E06469F7A2 /* Config */, + 49535E498560B1274F786DF2 /* Generated */, 00899E2C91190631EDD856E2 /* Sources */, ); path = ShareExtensionUITests; @@ -351,11 +420,29 @@ 1BFAEE6BD3117452598FEF9E /* FlinkyCore */ = { isa = PBXGroup; children = ( + 7408F0D1BE0A8C567CE518C1 /* Config */, + 05F6990A0720A8E9C7410F13 /* Generated */, C806D5E5F780EFAF23B190B9 /* Sources */, ); path = FlinkyCore; sourceTree = ""; }; + 1F7798A67CC543AD7CBD6FDD /* Generated */ = { + isa = PBXGroup; + children = ( + 6D6045792B8E63F5E6F67F60 /* .gitkeep */, + ); + path = Generated; + sourceTree = ""; + }; + 1F8723944B3137893E4E0EE3 /* Config */ = { + isa = PBXGroup; + children = ( + 42D5326755890014646F1A18 /* .gitkeep */, + ); + path = Config; + sourceTree = ""; + }; 27F9FACA2BBF95F166C8D268 = { isa = PBXGroup; children = ( @@ -364,33 +451,81 @@ ); sourceTree = ""; }; + 2E56074AA4B79062A775926B /* Generated */ = { + isa = PBXGroup; + children = ( + E14279C5A24404773D6EB183 /* .gitkeep */, + ); + path = Generated; + sourceTree = ""; + }; 307D936DE9A998C7E3F9F8C4 /* FlinkyCoreTests */ = { isa = PBXGroup; children = ( + 0702235C70DB52ACFED3E44C /* Config */, + 04F97F31FB6C7194F6D2660F /* Generated */, 8C7AFEE60176D28EB8433EF0 /* Sources */, ); path = FlinkyCoreTests; sourceTree = ""; }; + 39CA1B2E40101735C5C32751 /* Generated */ = { + isa = PBXGroup; + children = ( + 63F2719A154E0F147F282342 /* .gitkeep */, + ); + path = Generated; + sourceTree = ""; + }; 3E92154CA14A72C25E3763AD /* ScreenshotUITests */ = { isa = PBXGroup; children = ( + F3F7B7178E110DECDFC9FFA8 /* Config */, + 1F7798A67CC543AD7CBD6FDD /* Generated */, C61D7A355BA14243C5CB1404 /* Sources */, ); path = ScreenshotUITests; sourceTree = ""; }; + 49535E498560B1274F786DF2 /* Generated */ = { + isa = PBXGroup; + children = ( + D9A18AE1941697EAE2F5D108 /* .gitkeep */, + ); + path = Generated; + sourceTree = ""; + }; 50D41DDCC1D09F20C8859BC5 /* UITests */ = { isa = PBXGroup; children = ( + D053FEE68DB77FE6A3B86775 /* Config */, + 39CA1B2E40101735C5C32751 /* Generated */, 5273A9C7338FEC307FF81394 /* Sources */, ); path = UITests; sourceTree = ""; }; + 73C7DF1B6EF6924539BF65F7 /* Config */ = { + isa = PBXGroup; + children = ( + 0CD0E5B528681C37C5D9BFA8 /* Tests.xctestplan */, + ); + path = Config; + sourceTree = ""; + }; + 7408F0D1BE0A8C567CE518C1 /* Config */ = { + isa = PBXGroup; + children = ( + 987257103FB94CF2DC77F06B /* .gitkeep */, + ); + path = Config; + sourceTree = ""; + }; A46B7CC8C36D029F9A827199 /* ShareExtensionTests */ = { isa = PBXGroup; children = ( + 07E98CB4F7B53BE407E1537B /* Config */, + 16DA5BF6534D49C9F2935B1C /* Generated */, 68B44DF7DB1B234C2FE0515C /* Sources */, ); path = ShareExtensionTests; @@ -399,23 +534,44 @@ B738778E59EACA800DB85495 /* ShareExtension */ = { isa = PBXGroup; children = ( + EBCA59481FBAAB92D20A530E /* Config */, + 2E56074AA4B79062A775926B /* Generated */, A04DE5BF04B0E902D35CBE03 /* Sources */, ); path = ShareExtension; sourceTree = ""; }; + B93676FC44259188DB688040 /* Generated */ = { + isa = PBXGroup; + children = ( + A72A23B2DF367F098C641658 /* .gitkeep */, + 7C6BB210F711DB71F2A873DB /* generated-en.strings */, + ); + path = Generated; + sourceTree = ""; + }; BFB02730826A464D54B00F64 /* Tests */ = { isa = PBXGroup; children = ( + 73C7DF1B6EF6924539BF65F7 /* Config */, + EF52D776CBBFEF4E278581C4 /* Generated */, 3785698F0DB7A7D24A15CB42 /* Sources */, ); path = Tests; sourceTree = ""; }; + D053FEE68DB77FE6A3B86775 /* Config */ = { + isa = PBXGroup; + children = ( + E3083D8106034E78E306C15C /* UITests.xctestplan */, + ); + path = Config; + sourceTree = ""; + }; D93A947CD72C6E70326EEFA5 /* Targets */ = { isa = PBXGroup; children = ( - BC5F79CA9A38A9EE6E30D032 /* App */, + F5BB1CF0A7DBD9DDFA067BE0 /* App */, 1BFAEE6BD3117452598FEF9E /* FlinkyCore */, 307D936DE9A998C7E3F9F8C4 /* FlinkyCoreTests */, 3E92154CA14A72C25E3763AD /* ScreenshotUITests */, @@ -444,6 +600,40 @@ name = Products; sourceTree = ""; }; + EBCA59481FBAAB92D20A530E /* Config */ = { + isa = PBXGroup; + children = ( + 0F0B94F3BDCFC52059CB276A /* .gitkeep */, + ); + path = Config; + sourceTree = ""; + }; + EF52D776CBBFEF4E278581C4 /* Generated */ = { + isa = PBXGroup; + children = ( + 577A116C3CE64463030632D4 /* .gitkeep */, + ); + path = Generated; + sourceTree = ""; + }; + F3F7B7178E110DECDFC9FFA8 /* Config */ = { + isa = PBXGroup; + children = ( + 17EA3DC70EB92B6918EB416D /* ScreenshotUITests.xctestplan */, + ); + path = Config; + sourceTree = ""; + }; + F5BB1CF0A7DBD9DDFA067BE0 /* App */ = { + isa = PBXGroup; + children = ( + 1F8723944B3137893E4E0EE3 /* Config */, + B93676FC44259188DB688040 /* Generated */, + 70D1B52C7753D5F428D702C8 /* Sources */, + ); + path = App; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -611,7 +801,7 @@ A84479D92F7ACC81EDDAD250 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( - BC5F79CA9A38A9EE6E30D032 /* App */, + 70D1B52C7753D5F428D702C8 /* Sources */, ); name = Flinky; packageProductDependencies = ( @@ -1065,6 +1255,8 @@ DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Targets/ShareExtension/Sources/Resources/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = ShareExtension; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1283,6 +1475,17 @@ ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Targets/App/Sources/Resources/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Flinky; + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; + INFOPLIST_KEY_NFCReaderUsageDescription = "Share links with other NFC-capable devices by bringing them close together."; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Save your QRCode to your Photos"; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1483,6 +1686,8 @@ DEVELOPMENT_TEAM = ""; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Targets/ShareExtension/Sources/Resources/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = ShareExtension; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1566,6 +1771,17 @@ ENABLE_USER_SCRIPT_SANDBOXING = NO; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Targets/App/Sources/Resources/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = Flinky; + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; + INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity"; + INFOPLIST_KEY_NFCReaderUsageDescription = "Share links with other NFC-capable devices by bringing them close together."; + INFOPLIST_KEY_NSHumanReadableCopyright = ""; + INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "Save your QRCode to your Photos"; + INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; + INFOPLIST_KEY_UILaunchScreen_Generation = YES; + INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown"; IPHONEOS_DEPLOYMENT_TARGET = 18.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/Targets/App/Config/.gitkeep b/Targets/App/Config/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/App/Config/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/Targets/App/Sources/Resources/Info.plist b/Targets/App/Sources/Resources/Info.plist index 1700b1d..0c67376 100644 --- a/Targets/App/Sources/Resources/Info.plist +++ b/Targets/App/Sources/Resources/Info.plist @@ -1,49 +1,5 @@ - - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleDisplayName - Flinky - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - ITSAppUsesNonExemptEncryption - - LSApplicationCategoryType - public.app-category.productivity - NFCReaderUsageDescription - Share links with other NFC-capable devices by bringing them close together. - NSPhotoLibraryAddUsageDescription - Save your QRCode to your Photos - UIApplicationSceneManifest_Generation - - UIApplicationSupportsIndirectInputEvents - - UILaunchScreen_Generation - - UISupportedInterfaceOrientations - - UIInterfaceOrientationPortrait - - UISupportedInterfaceOrientations_iPad - - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight - UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - - + diff --git a/Targets/FlinkyCore/Config/.gitkeep b/Targets/FlinkyCore/Config/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/FlinkyCore/Config/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/Targets/FlinkyCore/Generated/.gitkeep b/Targets/FlinkyCore/Generated/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/FlinkyCore/Generated/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/Targets/FlinkyCoreTests/Generated/.gitkeep b/Targets/FlinkyCoreTests/Generated/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/FlinkyCoreTests/Generated/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/Targets/ScreenshotUITests/Generated/.gitkeep b/Targets/ScreenshotUITests/Generated/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/ScreenshotUITests/Generated/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/Targets/ShareExtension/Config/.gitkeep b/Targets/ShareExtension/Config/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/ShareExtension/Config/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/Targets/ShareExtension/Generated/.gitkeep b/Targets/ShareExtension/Generated/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/ShareExtension/Generated/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/Targets/ShareExtension/Sources/Resources/Info.plist b/Targets/ShareExtension/Sources/Resources/Info.plist index 183637a..4dd1bdf 100644 --- a/Targets/ShareExtension/Sources/Resources/Info.plist +++ b/Targets/ShareExtension/Sources/Resources/Info.plist @@ -2,22 +2,6 @@ - CFBundleDevelopmentRegion - $(DEVELOPMENT_LANGUAGE) - CFBundleExecutable - $(EXECUTABLE_NAME) - CFBundleIdentifier - $(PRODUCT_BUNDLE_IDENTIFIER) - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - $(PRODUCT_NAME) - CFBundlePackageType - XPC! - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 NSExtension NSExtensionAttributes diff --git a/Targets/ShareExtensionTests/Generated/.gitkeep b/Targets/ShareExtensionTests/Generated/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/ShareExtensionTests/Generated/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/Targets/ShareExtensionUITests/Generated/.gitkeep b/Targets/ShareExtensionUITests/Generated/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/ShareExtensionUITests/Generated/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/Targets/Tests/Generated/.gitkeep b/Targets/Tests/Generated/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/Tests/Generated/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/Targets/UITests/Generated/.gitkeep b/Targets/UITests/Generated/.gitkeep new file mode 100644 index 0000000..419ddb7 --- /dev/null +++ b/Targets/UITests/Generated/.gitkeep @@ -0,0 +1 @@ +DO NOT DELETE THIS FILE diff --git a/project.yml b/project.yml index 5989fcf..1507df1 100644 --- a/project.yml +++ b/project.yml @@ -42,28 +42,14 @@ targets: platform: iOS deploymentTarget: "18.0" sources: - - type: syncedFolder - path: Targets/App - resources: - - Targets/App/Sources/Resources - info: - path: Targets/App/Sources/Resources/Info.plist - properties: - CFBundleDisplayName: Flinky - ITSAppUsesNonExemptEncryption: false - LSApplicationCategoryType: public.app-category.productivity - NFCReaderUsageDescription: "Share links with other NFC-capable devices by bringing them close together." - NSPhotoLibraryAddUsageDescription: "Save your QRCode to your Photos" - UIApplicationSceneManifest_Generation: true - UIApplicationSupportsIndirectInputEvents: true - UILaunchScreen_Generation: true - UISupportedInterfaceOrientations: - - UIInterfaceOrientationPortrait - UISupportedInterfaceOrientations_iPad: - - UIInterfaceOrientationLandscapeLeft - - UIInterfaceOrientationLandscapeRight - - UIInterfaceOrientationPortrait - - UIInterfaceOrientationPortraitUpsideDown + # type: group to appear in navigator without target membership (synced folders get built) + - path: Targets/App/Config + type: group + buildPhase: none + - path: Targets/App/Generated + type: group + buildPhase: none + - path: Targets/App/Sources entitlements: path: Targets/App/Sources/Resources/App.entitlements properties: @@ -87,6 +73,18 @@ targets: ENABLE_PREVIEWS: true ENABLE_USER_SCRIPT_SANDBOXING: false GENERATE_INFOPLIST_FILE: true + INFOPLIST_FILE: Targets/App/Sources/Resources/Info.plist + INFOPLIST_KEY_CFBundleDisplayName: Flinky + INFOPLIST_KEY_ITSAppUsesNonExemptEncryption: false + INFOPLIST_KEY_LSApplicationCategoryType: public.app-category.productivity + INFOPLIST_KEY_NFCReaderUsageDescription: "Share links with other NFC-capable devices by bringing them close together." + INFOPLIST_KEY_NSHumanReadableCopyright: "" + INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription: "Save your QRCode to your Photos" + INFOPLIST_KEY_UIApplicationSceneManifest_Generation: true + INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents: true + INFOPLIST_KEY_UILaunchScreen_Generation: true + INFOPLIST_KEY_UISupportedInterfaceOrientations: UIInterfaceOrientationPortrait + INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad: "UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown" SWIFT_VERSION: 5.0 TARGETED_DEVICE_FAMILY: "1,2" ASSETCATALOG_COMPILER_APPICON_NAME: AppIcon @@ -184,6 +182,13 @@ targets: platform: iOS deploymentTarget: "18.0" sources: + # type: group to appear in navigator without target membership (synced folders get built) + - path: Targets/FlinkyCore/Config + type: group + buildPhase: none + - path: Targets/FlinkyCore/Generated + type: group + buildPhase: none - path: Targets/FlinkyCore/Sources excludes: - "**/*.xcstrings" @@ -246,20 +251,18 @@ targets: platform: iOS deploymentTarget: "18.0" sources: + # type: group to appear in navigator without target membership (synced folders get built) + - path: Targets/ShareExtension/Config + type: group + buildPhase: none + - path: Targets/ShareExtension/Generated + type: group + buildPhase: none - path: Targets/ShareExtension/Sources excludes: - "**/*.xcstrings" resources: - Targets/ShareExtension/Sources/Resources/Localizable.xcstrings - info: - path: Targets/ShareExtension/Sources/Resources/Info.plist - properties: - NSExtension: - NSExtensionAttributes: - NSExtensionActivationRule: - NSExtensionActivationSupportsWebURLWithMaxCount: 1 - NSExtensionMainStoryboard: MainInterface - NSExtensionPointIdentifier: com.apple.share-services entitlements: path: Targets/ShareExtension/Sources/Resources/ShareExtension.entitlements properties: @@ -280,6 +283,9 @@ targets: CODE_SIGN_IDENTITY: Apple Development PROVISIONING_PROFILE_SPECIFIER: "" GENERATE_INFOPLIST_FILE: true + INFOPLIST_FILE: Targets/ShareExtension/Sources/Resources/Info.plist + INFOPLIST_KEY_CFBundleDisplayName: ShareExtension + INFOPLIST_KEY_NSHumanReadableCopyright: "" SWIFT_VERSION: 5.0 TARGETED_DEVICE_FAMILY: "1,2" IPHONEOS_DEPLOYMENT_TARGET: "18.0" @@ -291,7 +297,14 @@ targets: platform: iOS deploymentTarget: "18.0" sources: - - Targets/Tests/Sources + # type: group to appear in navigator without target membership (synced folders get built) + - path: Targets/Tests/Config + type: group + buildPhase: none + - path: Targets/Tests/Generated + type: group + buildPhase: none + - path: Targets/Tests/Sources dependencies: - target: Flinky - target: FlinkyCore @@ -317,7 +330,14 @@ targets: platform: iOS deploymentTarget: "18.0" sources: - - Targets/FlinkyCoreTests/Sources + # type: group to appear in navigator without target membership (synced folders get built) + - path: Targets/FlinkyCoreTests/Config + type: group + buildPhase: none + - path: Targets/FlinkyCoreTests/Generated + type: group + buildPhase: none + - path: Targets/FlinkyCoreTests/Sources dependencies: - target: Flinky - target: FlinkyCore @@ -343,7 +363,14 @@ targets: platform: iOS deploymentTarget: "18.0" sources: - - Targets/ScreenshotUITests/Sources + # type: group to appear in navigator without target membership (synced folders get built) + - path: Targets/ScreenshotUITests/Config + type: group + buildPhase: none + - path: Targets/ScreenshotUITests/Generated + type: group + buildPhase: none + - path: Targets/ScreenshotUITests/Sources dependencies: - target: Flinky settings: @@ -366,7 +393,14 @@ targets: platform: iOS deploymentTarget: "18.5" sources: - - Targets/UITests/Sources + # type: group to appear in navigator without target membership (synced folders get built) + - path: Targets/UITests/Config + type: group + buildPhase: none + - path: Targets/UITests/Generated + type: group + buildPhase: none + - path: Targets/UITests/Sources dependencies: - target: Flinky settings: @@ -389,7 +423,14 @@ targets: platform: iOS deploymentTarget: "18.5" sources: - - Targets/ShareExtensionTests/Sources + # type: group to appear in navigator without target membership (synced folders get built) + - path: Targets/ShareExtensionTests/Config + type: group + buildPhase: none + - path: Targets/ShareExtensionTests/Generated + type: group + buildPhase: none + - path: Targets/ShareExtensionTests/Sources dependencies: - target: Flinky settings: @@ -413,7 +454,14 @@ targets: platform: iOS deploymentTarget: "18.0" sources: - - Targets/ShareExtensionUITests/Sources + # type: group to appear in navigator without target membership (synced folders get built) + - path: Targets/ShareExtensionUITests/Config + type: group + buildPhase: none + - path: Targets/ShareExtensionUITests/Generated + type: group + buildPhase: none + - path: Targets/ShareExtensionUITests/Sources dependencies: - target: Flinky settings: