diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 370d64c3..da6ca4f1 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -1,4 +1,8 @@ name: Lint Build and Test + +permissions: + contents: read + on: pull_request: push: @@ -16,10 +20,17 @@ jobs: - uses: actions/checkout@v5 - uses: subosito/flutter-action@v2 with: - flutter-version: '3.32.0' # Set the desired Flutter version here + flutter-version: '3.32.0' channel: 'stable' - - name: Install Dependencies - run: flutter pub get && cd sample && flutter pub get && cd .. + - name: Enable SPM and Run Tests + run: | + flutter config --enable-swift-package-manager + flutter pub get + flutter test + cd sample + flutter config --enable-swift-package-manager + flutter test + cd .. - name: Lint Flutter run: dart format . --set-exit-if-changed && flutter analyze Android: @@ -42,8 +53,14 @@ jobs: with: flutter-version: ${{ matrix.flutter-version }} channel: 'stable' - - name: Install Dependencies - run: flutter pub get && cd sample && flutter pub get && cd .. + - name: Enable SPM and Build Android Sample App + run: | + flutter config --enable-swift-package-manager + flutter pub get + cd sample + flutter config --enable-swift-package-manager + flutter build apk + cd .. - name: Lint Android uses: musichin/ktlint-check@v3 with: @@ -52,26 +69,63 @@ jobs: **/**.kt !**/**.g.kt !**/generated/** - - name: Test - run: flutter test && cd sample && flutter test && cd .. - - name: Build Android Sample App - run: cd sample && flutter build apk && cd .. iOS: - # TODO: Change back to macos-latest once it points to macOS 14 (Q2 '24) + name: iOS Build runs-on: macos-14 - timeout-minutes: 10 + timeout-minutes: 15 steps: - uses: actions/checkout@v5 + - run: touch sample/ios/smile_config.json + - uses: subosito/flutter-action@v2 with: - flutter-version: '3.32.0' # Set the desired Flutter version here + flutter-version: '3.32.0' channel: 'stable' - - name: Setup Cocoapods - uses: maxim-lobanov/setup-cocoapods@v1 - with: - version: 1.14.3 - - name: Install Dependencies - run: flutter pub get && cd sample && flutter pub get && cd .. + + # Ensure all iOS build artifacts are downloaded + - name: Precache iOS artifacts + run: flutter precache --ios + + # ✅ Force-enable Swift Package Manager and verify the setting persisted + - name: Enable Swift Package Manager (persistently) + run: | + flutter config --enable-swift-package-manager + echo "=== Flutter Settings ===" + cat "$HOME/.flutter_settings" || echo "No settings file found" + flutter config + + # ✅ Make sure Xcode is configured and selected + - name: Select Xcode 15+ + run: sudo xcode-select -s /Applications/Xcode_15.2.app + + # ✅ Run all iOS-related commands in one shell to preserve context - name: Build iOS Sample App - run: cd sample/ios && pod install && flutter build ios --no-codesign && cd .. + shell: bash + run: | + set -e + flutter pub get + cd sample + flutter pub get + echo "Building iOS app..." + flutter build ios --no-codesign --verbose + + # iOS: + # TODO: Change back to macos-latest once it points to macOS 14 (Q2 '24) + # runs-on: macos-14 + # timeout-minutes: 10 + # steps: + # - uses: actions/checkout@v5 + # - run: touch sample/ios/smile_config.json + # - uses: subosito/flutter-action@v2 + # with: + # flutter-version: '3.32.0' + # channel: 'stable' + # - name: Enable SPM and Build iOS Sample App + # run: | + # flutter config --enable-swift-package-manager + # flutter pub get + # cd sample/ios + # flutter config --enable-swift-package-manager + # flutter build ios --no-codesign + # cd .. \ No newline at end of file diff --git a/.gitignore b/.gitignore index 5b9c7d04..8f0aa87c 100644 --- a/.gitignore +++ b/.gitignore @@ -33,4 +33,7 @@ build/ .fvm/ smile_config.json -sample/android/app/.cxx \ No newline at end of file +sample/android/app/.cxx + +.build/ +.swiftpm/ \ No newline at end of file diff --git a/ios/Assets/.gitkeep b/ios/Assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/ios/smile_id.podspec b/ios/smile_id.podspec deleted file mode 100644 index 0f5d5543..00000000 --- a/ios/smile_id.podspec +++ /dev/null @@ -1,28 +0,0 @@ -# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. -# Run `pod lib lint smileid.podspec` to validate before publishing. -# -package = YAML.load_file('../pubspec.yaml') -Pod::Spec.new do |s| - s.name = 'smile_id' - s.version = package["version"] - s.summary = 'Official Smile ID SDK for Flutter' - s.description = package["description"] - s.homepage = package["homepage"] - s.author = { 'Smile ID' => 'support@usesmileid.com' } - s.source = { :path => '.' } - s.source_files = 'Classes/**/*' - s.dependency 'Flutter' - s.dependency 'SmileID', '11.1.1' - # for development alongside sample/ios/Podfile uncomment the version and specify - # tag or branch in sample/ios/Podfile - # s.dependency "SmileID" - s.platform = :ios, '13.0' - - # Flutter.framework does not contain a i386 slice. - s.pod_target_xcconfig = { - 'DEFINES_MODULE' => 'YES', - 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386', - 'GCC_PREPROCESSOR_DEFINITIONS' => "SMILE_ID_VERSION=\\\"#{package["version"]}\\\"" - } - s.swift_version = '5.0' -end diff --git a/ios/smile_id/Package.swift b/ios/smile_id/Package.swift new file mode 100644 index 00000000..0b09fd29 --- /dev/null +++ b/ios/smile_id/Package.swift @@ -0,0 +1,27 @@ +// swift-tools-version: 5.9 +import PackageDescription + +let package = Package( + name: "smile_id", + platforms: [ + .iOS(.v13) + ], + products: [ + .library( + name: "smile-id", + targets: ["smile_id"] + ) + ], + dependencies: [ + .package(url: "https://github.com/smileidentity/ios.git", exact: "11.1.2") + ], + targets: [ + .target( + name: "smile_id", + dependencies: [ + .product(name: "SmileID", package: "ios") + ], + path: "Sources/smile_id" + ) + ] +) \ No newline at end of file diff --git a/ios/Classes/FlutterPlatformView+EmbedSwiftUIView.swift b/ios/smile_id/Sources/smile_id/FlutterPlatformView+EmbedSwiftUIView.swift similarity index 100% rename from ios/Classes/FlutterPlatformView+EmbedSwiftUIView.swift rename to ios/smile_id/Sources/smile_id/FlutterPlatformView+EmbedSwiftUIView.swift diff --git a/ios/Classes/Mapper.swift b/ios/smile_id/Sources/smile_id/Mapper.swift similarity index 99% rename from ios/Classes/Mapper.swift rename to ios/smile_id/Sources/smile_id/Mapper.swift index 9339f3a9..dd1ecf18 100644 --- a/ios/Classes/Mapper.swift +++ b/ios/smile_id/Sources/smile_id/Mapper.swift @@ -1,4 +1,5 @@ import SmileID +import Foundation func convertNullableMapToNonNull(data: [String?: String?]?) -> [String: String]? { guard let unwrappedData = data else { diff --git a/ios/Classes/SmileIDBiometricKYC.swift b/ios/smile_id/Sources/smile_id/SmileIDBiometricKYC.swift similarity index 100% rename from ios/Classes/SmileIDBiometricKYC.swift rename to ios/smile_id/Sources/smile_id/SmileIDBiometricKYC.swift diff --git a/ios/Classes/SmileIDDictExt.swift b/ios/smile_id/Sources/smile_id/SmileIDDictExt.swift similarity index 98% rename from ios/Classes/SmileIDDictExt.swift rename to ios/smile_id/Sources/smile_id/SmileIDDictExt.swift index dfe4a873..7e43de64 100644 --- a/ios/Classes/SmileIDDictExt.swift +++ b/ios/smile_id/Sources/smile_id/SmileIDDictExt.swift @@ -1,3 +1,5 @@ +import Foundation + extension Dictionary where Key == String, Value == Any { func toJSONCompatibleDictionary() -> [String: Any] { var jsonCompatibleDict = [String: Any]() diff --git a/ios/Classes/SmileIDDocumentCaptureView.swift b/ios/smile_id/Sources/smile_id/SmileIDDocumentCaptureView.swift similarity index 100% rename from ios/Classes/SmileIDDocumentCaptureView.swift rename to ios/smile_id/Sources/smile_id/SmileIDDocumentCaptureView.swift diff --git a/ios/Classes/SmileIDDocumentVerification.swift b/ios/smile_id/Sources/smile_id/SmileIDDocumentVerification.swift similarity index 100% rename from ios/Classes/SmileIDDocumentVerification.swift rename to ios/smile_id/Sources/smile_id/SmileIDDocumentVerification.swift diff --git a/ios/Classes/SmileIDEnhancedDocumentVerification.swift b/ios/smile_id/Sources/smile_id/SmileIDEnhancedDocumentVerification.swift similarity index 100% rename from ios/Classes/SmileIDEnhancedDocumentVerification.swift rename to ios/smile_id/Sources/smile_id/SmileIDEnhancedDocumentVerification.swift diff --git a/ios/Classes/SmileIDMessages.g.swift b/ios/smile_id/Sources/smile_id/SmileIDMessages.g.swift similarity index 100% rename from ios/Classes/SmileIDMessages.g.swift rename to ios/smile_id/Sources/smile_id/SmileIDMessages.g.swift diff --git a/ios/Classes/SmileIDPlugin.swift b/ios/smile_id/Sources/smile_id/SmileIDPlugin.swift similarity index 100% rename from ios/Classes/SmileIDPlugin.swift rename to ios/smile_id/Sources/smile_id/SmileIDPlugin.swift diff --git a/ios/Classes/SmileIDSmartSelfieAuthentication.swift b/ios/smile_id/Sources/smile_id/SmileIDSmartSelfieAuthentication.swift similarity index 100% rename from ios/Classes/SmileIDSmartSelfieAuthentication.swift rename to ios/smile_id/Sources/smile_id/SmileIDSmartSelfieAuthentication.swift diff --git a/ios/Classes/SmileIDSmartSelfieAuthenticationEnhanced.swift b/ios/smile_id/Sources/smile_id/SmileIDSmartSelfieAuthenticationEnhanced.swift similarity index 100% rename from ios/Classes/SmileIDSmartSelfieAuthenticationEnhanced.swift rename to ios/smile_id/Sources/smile_id/SmileIDSmartSelfieAuthenticationEnhanced.swift diff --git a/ios/Classes/SmileIDSmartSelfieCaptureView.swift b/ios/smile_id/Sources/smile_id/SmileIDSmartSelfieCaptureView.swift similarity index 100% rename from ios/Classes/SmileIDSmartSelfieCaptureView.swift rename to ios/smile_id/Sources/smile_id/SmileIDSmartSelfieCaptureView.swift diff --git a/ios/Classes/SmileIDSmartSelfieEnrollment.swift b/ios/smile_id/Sources/smile_id/SmileIDSmartSelfieEnrollment.swift similarity index 100% rename from ios/Classes/SmileIDSmartSelfieEnrollment.swift rename to ios/smile_id/Sources/smile_id/SmileIDSmartSelfieEnrollment.swift diff --git a/ios/Classes/SmileIDSmartSelfieEnrollmentEnhanced.swift b/ios/smile_id/Sources/smile_id/SmileIDSmartSelfieEnrollmentEnhanced.swift similarity index 100% rename from ios/Classes/SmileIDSmartSelfieEnrollmentEnhanced.swift rename to ios/smile_id/Sources/smile_id/SmileIDSmartSelfieEnrollmentEnhanced.swift diff --git a/ios/Classes/SmileIDUtils.swift b/ios/smile_id/Sources/smile_id/SmileIDUtils.swift similarity index 98% rename from ios/Classes/SmileIDUtils.swift rename to ios/smile_id/Sources/smile_id/SmileIDUtils.swift index 822428e6..ee9aa129 100644 --- a/ios/Classes/SmileIDUtils.swift +++ b/ios/smile_id/Sources/smile_id/SmileIDUtils.swift @@ -1,5 +1,6 @@ import Foundation import SmileID +import UIKit extension String { func isValidUrl() -> Bool { diff --git a/pigeon/messages.dart b/pigeon/messages.dart index 481affd6..25add489 100644 --- a/pigeon/messages.dart +++ b/pigeon/messages.dart @@ -6,7 +6,7 @@ import 'package:pigeon/pigeon.dart'; kotlinOut: 'android/src/main/kotlin/com/smileidentity/flutter/generated/SmileIDMessages.g.kt', kotlinOptions: KotlinOptions(errorClassName: "SmileFlutterError"), - swiftOut: 'ios/Classes/SmileIDMessages.g.swift', + swiftOut: 'ios/smile_id/Sources/smile_id/SmileIDMessages.g.swift', swiftOptions: SwiftOptions(), dartPackageName: 'smileid', )) diff --git a/pubspec.yaml b/pubspec.yaml index 1c295f06..d5691aa8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -10,15 +10,15 @@ environment: dependencies: flutter: sdk: flutter - plugin_platform_interface: ^2.0.2 + plugin_platform_interface: ^2.1.8 dev_dependencies: - build_runner: ^2.5.4 + build_runner: ^2.7.1 flutter_test: sdk: flutter - flutter_lints: ^4.0.0 - mockito: ^5.4.6 - pigeon: ">=25.5.0 <27.0.0" + flutter_lints: ^6.0.0 + mockito: ^5.5.0 + pigeon: ^26.0.2 flutter: plugin: diff --git a/sample/.gitignore b/sample/.gitignore index 24476c5d..6c319542 100644 --- a/sample/.gitignore +++ b/sample/.gitignore @@ -5,9 +5,11 @@ *.swp .DS_Store .atom/ +.build/ .buildlog/ .history .svn/ +.swiftpm/ migrate_working_dir/ # IntelliJ related diff --git a/sample/ios/Flutter/AppFrameworkInfo.plist b/sample/ios/Flutter/AppFrameworkInfo.plist index 9625e105..1dc6cf76 100644 --- a/sample/ios/Flutter/AppFrameworkInfo.plist +++ b/sample/ios/Flutter/AppFrameworkInfo.plist @@ -21,6 +21,6 @@ CFBundleVersion 1.0 MinimumOSVersion - 11.0 + 13.0 diff --git a/sample/ios/Podfile b/sample/ios/Podfile deleted file mode 100644 index 691d5dca..00000000 --- a/sample/ios/Podfile +++ /dev/null @@ -1,48 +0,0 @@ -# Uncomment this line to define a global platform for your project -# source 'https://github.com/CocoaPods/Specs.git' - -platform :ios, '13.0' - -# CocoaPods analytics sends network stats synchronously affecting flutter build latency. -ENV['COCOAPODS_DISABLE_STATS'] = 'true' - -project 'Runner', { - 'Debug' => :debug, - 'Profile' => :release, - 'Release' => :release, -} - -def flutter_root - generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) - unless File.exist?(generated_xcode_build_settings_path) - raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" - end - - File.foreach(generated_xcode_build_settings_path) do |line| - matches = line.match(/FLUTTER_ROOT\=(.*)/) - return matches[1].strip if matches - end - raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" -end - -require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) - -flutter_ios_podfile_setup -# for development alongside ../../ios/smile_id.podspec uncomment the version and specify -# tag or branch in here DO NOT MERGE THIS TO main branch -# pod 'SmileID', git: 'https://github.com/smileidentity/ios.git', branch: 'main' -target 'Runner' do - use_frameworks! - use_modular_headers! - - flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) - target 'RunnerTests' do - inherit! :search_paths - end -end - -post_install do |installer| - installer.pods_project.targets.each do |target| - flutter_additional_ios_build_settings(target) - end -end diff --git a/sample/ios/Podfile.lock b/sample/ios/Podfile.lock deleted file mode 100644 index 14fa5a2f..00000000 --- a/sample/ios/Podfile.lock +++ /dev/null @@ -1,55 +0,0 @@ -PODS: - - FingerprintJS (1.6.0): - - FingerprintJS/Core (= 1.6.0) - - FingerprintJS/Core (1.6.0): - - FingerprintJS/SystemControl - - FingerprintJS/SystemControl (1.6.0) - - Flutter (1.0.0) - - lottie-ios (4.5.2) - - Sentry (8.55.0): - - Sentry/Core (= 8.55.0) - - Sentry/Core (8.55.0) - - smile_id (11.2.0): - - Flutter - - SmileID (= 11.1.1) - - SmileID (11.1.1): - - FingerprintJS (= 1.6.0) - - lottie-ios (= 4.5.2) - - Sentry (= 8.55.0) - - SmileIDSecurity (= 11.1.1) - - ZIPFoundation (= 0.9.19) - - SmileIDSecurity (11.1.1) - - ZIPFoundation (0.9.19) - -DEPENDENCIES: - - Flutter (from `Flutter`) - - smile_id (from `.symlinks/plugins/smile_id/ios`) - -SPEC REPOS: - trunk: - - FingerprintJS - - lottie-ios - - Sentry - - SmileID - - SmileIDSecurity - - ZIPFoundation - -EXTERNAL SOURCES: - Flutter: - :path: Flutter - smile_id: - :path: ".symlinks/plugins/smile_id/ios" - -SPEC CHECKSUMS: - FingerprintJS: 3a0c3e7f5035ecae199e5e5836200d9b20f1266a - Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 - lottie-ios: 96784afc26ea031d3e2b6cae342a4b8915072489 - Sentry: f7dddfabe691274d6d630f04621e1345f9d6b9e0 - smile_id: 34d2793c6fb8c2116e38b78f69ecaf6e84f01b89 - SmileID: 814fac7c88593349680276789688496f1a948403 - SmileIDSecurity: 2849074a33fa738cb7478f90b32b7f7333a14630 - ZIPFoundation: b8c29ea7ae353b309bc810586181fd073cb3312c - -PODFILE CHECKSUM: 81be4fc09878044dc75c762493ad56e861d5bf57 - -COCOAPODS: 1.16.2 diff --git a/sample/ios/Runner.xcodeproj/project.pbxproj b/sample/ios/Runner.xcodeproj/project.pbxproj index 922cfa0e..fb94bfd3 100644 --- a/sample/ios/Runner.xcodeproj/project.pbxproj +++ b/sample/ios/Runner.xcodeproj/project.pbxproj @@ -7,13 +7,12 @@ objects = { /* Begin PBXBuildFile section */ - 0E26DE9A4BBFAB70477FC199 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DAC1B1019A4344403D288225 /* Pods_RunnerTests.framework */; }; 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; 1E00B1732CAD9CCB005AF69D /* smile_config.json in Resources */ = {isa = PBXBuildFile; fileRef = 1E00B1722CAD9CCB005AF69D /* smile_config.json */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; - 5B80C33C8AA5AEC1DEEE0454 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 61B805DA5C7C6EBD647CDE99 /* Pods_Runner.framework */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */ = {isa = PBXBuildFile; productRef = 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; @@ -43,19 +42,16 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ - 14946750E16A70C02E2F3C34 /* Pods-RunnerTests.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.profile.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.profile.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 1E00B1722CAD9CCB005AF69D /* smile_config.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = smile_config.json; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; - 5C652CB71A7AB2429A3C6A10 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 61B805DA5C7C6EBD647CDE99 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = FlutterGeneratedPluginSwiftPackage; path = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 857D4E11B730E02CEB2ADE45 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -63,10 +59,6 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - A6959E5C96570A69F821B57B /* Pods-RunnerTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.debug.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.debug.xcconfig"; sourceTree = ""; }; - A83351B06B2150A5D6F10EDF /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; - DAC1B1019A4344403D288225 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E9E476750FBAFFE9B1CFF1C1 /* Pods-RunnerTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-RunnerTests.release.xcconfig"; path = "Target Support Files/Pods-RunnerTests/Pods-RunnerTests.release.xcconfig"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -74,7 +66,6 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 0E26DE9A4BBFAB70477FC199 /* Pods_RunnerTests.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -82,7 +73,7 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5B80C33C8AA5AEC1DEEE0454 /* Pods_Runner.framework in Frameworks */, + 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -100,28 +91,14 @@ 8DBB1F55683EA43C9742452B /* Pods */ = { isa = PBXGroup; children = ( - 857D4E11B730E02CEB2ADE45 /* Pods-Runner.debug.xcconfig */, - 5C652CB71A7AB2429A3C6A10 /* Pods-Runner.release.xcconfig */, - A83351B06B2150A5D6F10EDF /* Pods-Runner.profile.xcconfig */, - A6959E5C96570A69F821B57B /* Pods-RunnerTests.debug.xcconfig */, - E9E476750FBAFFE9B1CFF1C1 /* Pods-RunnerTests.release.xcconfig */, - 14946750E16A70C02E2F3C34 /* Pods-RunnerTests.profile.xcconfig */, ); path = Pods; sourceTree = ""; }; - 8E0191F07CFF6ACB887C3F26 /* Frameworks */ = { - isa = PBXGroup; - children = ( - 61B805DA5C7C6EBD647CDE99 /* Pods_Runner.framework */, - DAC1B1019A4344403D288225 /* Pods_RunnerTests.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; 9740EEB11CF90186004384FC /* Flutter */ = { isa = PBXGroup; children = ( + 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */, 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, 9740EEB21CF90195004384FC /* Debug.xcconfig */, 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, @@ -139,7 +116,6 @@ 97C146EF1CF9000F007C117D /* Products */, 331C8082294A63A400263BE5 /* RunnerTests */, 8DBB1F55683EA43C9742452B /* Pods */, - 8E0191F07CFF6ACB887C3F26 /* Frameworks */, ); sourceTree = ""; }; @@ -174,7 +150,6 @@ isa = PBXNativeTarget; buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; buildPhases = ( - EDAE0762F9348B433B079036 /* [CP] Check Pods Manifest.lock */, 331C807D294A63A400263BE5 /* Sources */, 331C807F294A63A400263BE5 /* Resources */, 0E23658A9DE936F074D923E1 /* Frameworks */, @@ -193,20 +168,21 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - AF437F207D9EA8834573DCCC /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, 9705A1C41CF9048500538489 /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, - 05361EC2B2383623327B34A7 /* [CP] Embed Pods Frameworks */, ); buildRules = ( ); dependencies = ( ); name = Runner; + packageProductDependencies = ( + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */, + ); productName = Runner; productReference = 97C146EE1CF9000F007C117D /* Runner.app */; productType = "com.apple.product-type.application"; @@ -218,7 +194,7 @@ isa = PBXProject; attributes = { BuildIndependentTargetsInParallel = YES; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1510; ORGANIZATIONNAME = ""; TargetAttributes = { 331C8080294A63A400263BE5 = { @@ -240,6 +216,9 @@ Base, ); mainGroup = 97C146E51CF9000F007C117D; + packageReferences = ( + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */, + ); productRefGroup = 97C146EF1CF9000F007C117D /* Products */; projectDirPath = ""; projectRoot = ""; @@ -273,23 +252,6 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXShellScriptBuildPhase section */ - 05361EC2B2383623327B34A7 /* [CP] Embed Pods Frameworks */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-input-files.xcfilelist", - ); - name = "[CP] Embed Pods Frameworks"; - outputFileListPaths = ( - "${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks-${CONFIGURATION}-output-files.xcfilelist", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; - showEnvVarsInLog = 0; - }; 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; @@ -321,50 +283,6 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - AF437F207D9EA8834573DCCC /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-Runner-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; - EDAE0762F9348B433B079036 /* [CP] Check Pods Manifest.lock */ = { - isa = PBXShellScriptBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - inputFileListPaths = ( - ); - inputPaths = ( - "${PODS_PODFILE_DIR_PATH}/Podfile.lock", - "${PODS_ROOT}/Manifest.lock", - ); - name = "[CP] Check Pods Manifest.lock"; - outputFileListPaths = ( - ); - outputPaths = ( - "$(DERIVED_FILE_DIR)/Pods-RunnerTests-checkManifestLockResult.txt", - ); - runOnlyForDeploymentPostprocessing = 0; - shellPath = /bin/sh; - shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; - showEnvVarsInLog = 0; - }; /* End PBXShellScriptBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -493,7 +411,6 @@ }; 331C8088294A63A400263BE5 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A6959E5C96570A69F821B57B /* Pods-RunnerTests.debug.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -511,7 +428,6 @@ }; 331C8089294A63A400263BE5 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E9E476750FBAFFE9B1CFF1C1 /* Pods-RunnerTests.release.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -527,7 +443,6 @@ }; 331C808A294A63A400263BE5 /* Profile */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 14946750E16A70C02E2F3C34 /* Pods-RunnerTests.profile.xcconfig */; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; @@ -729,6 +644,20 @@ defaultConfigurationName = Release; }; /* End XCConfigurationList section */ + +/* Begin XCLocalSwiftPackageReference section */ + 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */ = { + isa = XCLocalSwiftPackageReference; + relativePath = Flutter/ephemeral/Packages/FlutterGeneratedPluginSwiftPackage; + }; +/* End XCLocalSwiftPackageReference section */ + +/* Begin XCSwiftPackageProductDependency section */ + 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */ = { + isa = XCSwiftPackageProductDependency; + productName = FlutterGeneratedPluginSwiftPackage; + }; +/* End XCSwiftPackageProductDependency section */ }; rootObject = 97C146E61CF9000F007C117D /* Project object */; } diff --git a/sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..f6ba9583 --- /dev/null +++ b/sample/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,50 @@ +{ + "pins" : [ + { + "identity" : "fingerprintjs-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/fingerprintjs/fingerprintjs-ios", + "state" : { + "revision" : "2e2ead3d02c46736d9b4a66373700489113e293a", + "version" : "1.6.0" + } + }, + { + "identity" : "lottie-spm", + "kind" : "remoteSourceControl", + "location" : "https://github.com/airbnb/lottie-spm", + "state" : { + "revision" : "04f2fd18cc9404a0a0917265a449002674f24ec9", + "version" : "4.5.2" + } + }, + { + "identity" : "sentry-cocoa", + "kind" : "remoteSourceControl", + "location" : "https://github.com/getsentry/sentry-cocoa", + "state" : { + "revision" : "e9bcb13a491c00da6c9d100fe73954aea9e9d8a6", + "version" : "8.57.0" + } + }, + { + "identity" : "smile-id-security", + "kind" : "remoteSourceControl", + "location" : "https://github.com/smileidentity/smile-id-security", + "state" : { + "revision" : "b7e9f7d82ddaf00b60d9a7b968d853073077adb9", + "version" : "11.1.2" + } + }, + { + "identity" : "zipfoundation", + "kind" : "remoteSourceControl", + "location" : "https://github.com/weichsel/ZIPFoundation.git", + "state" : { + "revision" : "22787ffb59de99e5dc1fbfe80b19c97a904ad48d", + "version" : "0.9.20" + } + } + ], + "version" : 2 +} diff --git a/sample/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/sample/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 8e3ca5df..c3fedb29 100644 --- a/sample/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/sample/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -5,6 +5,24 @@ + + + + + + + + + + diff --git a/sample/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved b/sample/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 00000000..f6ba9583 --- /dev/null +++ b/sample/ios/Runner.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,50 @@ +{ + "pins" : [ + { + "identity" : "fingerprintjs-ios", + "kind" : "remoteSourceControl", + "location" : "https://github.com/fingerprintjs/fingerprintjs-ios", + "state" : { + "revision" : "2e2ead3d02c46736d9b4a66373700489113e293a", + "version" : "1.6.0" + } + }, + { + "identity" : "lottie-spm", + "kind" : "remoteSourceControl", + "location" : "https://github.com/airbnb/lottie-spm", + "state" : { + "revision" : "04f2fd18cc9404a0a0917265a449002674f24ec9", + "version" : "4.5.2" + } + }, + { + "identity" : "sentry-cocoa", + "kind" : "remoteSourceControl", + "location" : "https://github.com/getsentry/sentry-cocoa", + "state" : { + "revision" : "e9bcb13a491c00da6c9d100fe73954aea9e9d8a6", + "version" : "8.57.0" + } + }, + { + "identity" : "smile-id-security", + "kind" : "remoteSourceControl", + "location" : "https://github.com/smileidentity/smile-id-security", + "state" : { + "revision" : "b7e9f7d82ddaf00b60d9a7b968d853073077adb9", + "version" : "11.1.2" + } + }, + { + "identity" : "zipfoundation", + "kind" : "remoteSourceControl", + "location" : "https://github.com/weichsel/ZIPFoundation.git", + "state" : { + "revision" : "22787ffb59de99e5dc1fbfe80b19c97a904ad48d", + "version" : "0.9.20" + } + } + ], + "version" : 2 +} diff --git a/sample/ios/Runner/AppDelegate.swift b/sample/ios/Runner/AppDelegate.swift index 70693e4a..b6363034 100644 --- a/sample/ios/Runner/AppDelegate.swift +++ b/sample/ios/Runner/AppDelegate.swift @@ -1,7 +1,7 @@ import UIKit import Flutter -@UIApplicationMain +@main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, diff --git a/sample/pubspec.lock b/sample/pubspec.lock index fe2c3dac..6c3d43a1 100644 --- a/sample/pubspec.lock +++ b/sample/pubspec.lock @@ -79,10 +79,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + sha256: "3105dc8492f6183fb076ccf1f351ac3d60564bff92e20bfc4af9cc1651f4e7e1" url: "https://pub.dev" source: hosted - version: "2.0.3" + version: "6.0.0" flutter_test: dependency: "direct dev" description: flutter @@ -102,34 +102,34 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0" + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" url: "https://pub.dev" source: hosted - version: "10.0.9" + version: "11.0.2" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" url: "https://pub.dev" source: hosted - version: "3.0.9" + version: "3.0.10" leak_tracker_testing: dependency: transitive description: name: leak_tracker_testing - sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" lints: dependency: transitive description: name: lints - sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + sha256: a5e2b223cb7c9c8efdc663ef484fdd95bb243bff242ef5b13e26883547fce9a0 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "6.0.0" matcher: dependency: transitive description: @@ -182,10 +182,10 @@ packages: dependency: transitive description: name: process - sha256: "107d8be718f120bbba9dcd1e95e3bd325b1b4a4f07db64154635ba03f2567a0d" + sha256: c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744 url: "https://pub.dev" source: hosted - version: "5.0.3" + version: "5.0.5" sky_engine: dependency: transitive description: flutter @@ -197,7 +197,7 @@ packages: path: ".." relative: true source: path - version: "11.2.0" + version: "11.2.2" source_span: dependency: transitive description: @@ -250,26 +250,26 @@ packages: dependency: transitive description: name: test_api - sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd + sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00" url: "https://pub.dev" source: hosted - version: "0.7.4" + version: "0.7.6" vector_math: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b url: "https://pub.dev" source: hosted - version: "2.1.4" + version: "2.2.0" vm_service: dependency: transitive description: name: vm_service - sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02 + sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60" url: "https://pub.dev" source: hosted - version: "15.0.0" + version: "15.0.2" webdriver: dependency: transitive description: @@ -279,5 +279,5 @@ packages: source: hosted version: "3.1.0" sdks: - dart: ">=3.7.0-0 <4.0.0" + dart: ">=3.8.0 <4.0.0" flutter: ">=3.18.0-18.0.pre.54" diff --git a/sample/pubspec.yaml b/sample/pubspec.yaml index 1b3c99a0..2de45c87 100644 --- a/sample/pubspec.yaml +++ b/sample/pubspec.yaml @@ -1,14 +1,13 @@ name: sample description: Smile ID Flutter Sample App -# The following line prevents the package from being accidentally published to -# pub.dev using `flutter pub publish`. This is preferred for private packages. +version: 1.0.0 publish_to: 'none' # Remove this line if you wish to publish to pub.dev environment: sdk: '>=3.0.5 <4.0.0' dependencies: - cupertino_icons: ^1.0.2 + cupertino_icons: ^1.0.8 flutter: sdk: flutter smile_id: @@ -19,7 +18,7 @@ dependencies: path: ../ dev_dependencies: - flutter_lints: ^2.0.3 + flutter_lints: ^6.0.0 flutter_test: sdk: flutter integration_test: @@ -27,6 +26,3 @@ dev_dependencies: flutter: uses-material-design: true - # assets: - # - images/a_dot_burr.jpeg - # - images/a_dot_ham.jpeg