diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 889907f..ce9178d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -7,19 +7,29 @@ on: branches: [ master ] jobs: - test: - name: UnitTest - runs-on: macOS-latest - strategy: - matrix: - destination: ['platform=iOS Simulator,OS=18.0,name=iPhone 16 Pro Max'] + build: + name: Build + runs-on: macos-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v4 + - name: Build framework + run: xcodebuild build -scheme QRScanner -destination 'generic/platform=iOS' CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + test: + name: Test + runs-on: macos-latest + timeout-minutes: 15 steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Select latest Xcode - run: sudo xcode-select -s /Applications/Xcode.app/Contents/Developer + - uses: actions/checkout@v4 - name: Run unit tests - run: xcodebuild test -workspace QRScanner.xcworkspace -scheme UnitTests -destination "${destination}" CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO - env: - destination: ${{ matrix.destination }} + run: xcodebuild test -workspace QRScanner.xcworkspace -scheme UnitTests -destination 'platform=iOS Simulator,name=iPhone 16' CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO + + spm: + name: Swift Package Manager + runs-on: macos-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v4 + - name: Build with SPM + run: xcodebuild build -scheme QRScanner -destination 'generic/platform=iOS Simulator' diff --git a/Package.swift b/Package.swift index d9af112..87ed9e8 100644 --- a/Package.swift +++ b/Package.swift @@ -1,4 +1,4 @@ -// swift-tools-version:5.3 +// swift-tools-version:5.9 import PackageDescription @@ -13,14 +13,16 @@ let package = Package( targets: ["QRScanner"] ), ], - dependencies: [], targets: [ .target( name: "QRScanner", - dependencies: [], path: "QRScanner", exclude: [ "Info.plist", + ], + resources: [ + .process("Images.xcassets"), + .copy("PrivacyInfo.xcprivacy"), ] ), ] diff --git a/QRScanner.xcodeproj/project.pbxproj b/QRScanner.xcodeproj/project.pbxproj index d6bfdde..ae718bf 100644 --- a/QRScanner.xcodeproj/project.pbxproj +++ b/QRScanner.xcodeproj/project.pbxproj @@ -10,6 +10,7 @@ 16A16403235710D80032684C /* QRScannerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16A16402235710D80032684C /* QRScannerView.swift */; }; 16A16405235711240032684C /* QRScannerError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16A16404235711240032684C /* QRScannerError.swift */; }; 16A16407235712360032684C /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 16A16406235712360032684C /* Images.xcassets */; }; + 16A16408235712370032684C /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 16A16409235712380032684C /* PrivacyInfo.xcprivacy */; }; 16D0D5EE23570BC800A2EC78 /* QRScanner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 16D0D5E423570BC800A2EC78 /* QRScanner.framework */; }; 16D0D5F523570BC800A2EC78 /* QRScanner.h in Headers */ = {isa = PBXBuildFile; fileRef = 16D0D5E723570BC800A2EC78 /* QRScanner.h */; settings = {ATTRIBUTES = (Public, ); }; }; 43820BFF256A29DD0046AC78 /* Bundle+Module.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43820BFE256A29DD0046AC78 /* Bundle+Module.swift */; }; @@ -32,6 +33,7 @@ 16A16402235710D80032684C /* QRScannerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QRScannerView.swift; sourceTree = ""; }; 16A16404235711240032684C /* QRScannerError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = QRScannerError.swift; sourceTree = ""; }; 16A16406235712360032684C /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + 16A16409235712380032684C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = PrivacyInfo.xcprivacy; sourceTree = ""; }; 16D0D5E423570BC800A2EC78 /* QRScanner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = QRScanner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 16D0D5E723570BC800A2EC78 /* QRScanner.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = QRScanner.h; sourceTree = ""; }; 16D0D5E823570BC800A2EC78 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; @@ -89,6 +91,7 @@ 43820BFF256A29DD0046AC79 /* QRScannerSwiftUIView.swift */, 16A16404235711240032684C /* QRScannerError.swift */, 16D0D5E823570BC800A2EC78 /* Info.plist */, + 16A16409235712380032684C /* PrivacyInfo.xcprivacy */, 16A16406235712360032684C /* Images.xcassets */, ); path = QRScanner; @@ -214,6 +217,7 @@ buildActionMask = 2147483647; files = ( 16A16407235712360032684C /* Images.xcassets in Resources */, + 16A16408235712370032684C /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/QRScanner/PrivacyInfo.xcprivacy b/QRScanner/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..e08a130 --- /dev/null +++ b/QRScanner/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyTracking + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + NSPrivacyAccessedAPITypes + + +