diff --git a/.fvmrc b/.fvmrc
index e8b4151..d80cf57 100644
--- a/.fvmrc
+++ b/.fvmrc
@@ -1,3 +1,3 @@
{
- "flutter": "3.35.7"
+ "flutter": "3.41.9"
}
\ No newline at end of file
diff --git a/.github/workflows/action_pull_request.yml b/.github/workflows/action_pull_request.yml
index 4cb31a0..70fcdc0 100644
--- a/.github/workflows/action_pull_request.yml
+++ b/.github/workflows/action_pull_request.yml
@@ -15,4 +15,4 @@ jobs:
flutter pub get
- name: Run unit tests
run: |
- dart run test test/unit
\ No newline at end of file
+ flutter test test/unit
\ No newline at end of file
diff --git a/example/README.md b/example/README.md
index 51a3c1f..dec67f0 100644
--- a/example/README.md
+++ b/example/README.md
@@ -1,16 +1,3 @@
# flutter_security_suite_example
Demonstrates how to use the flutter_security_suite plugin.
-
-## Getting Started
-
-This project is a starting point for a Flutter application.
-
-A few resources to get you started if this is your first Flutter project:
-
-- [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab)
-- [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook)
-
-For help getting started with Flutter development, view the
-[online documentation](https://docs.flutter.dev/), which offers tutorials,
-samples, guidance on mobile development, and a full API reference.
diff --git a/example/ios/Flutter/AppFrameworkInfo.plist b/example/ios/Flutter/AppFrameworkInfo.plist
index 7c56964..391a902 100644
--- a/example/ios/Flutter/AppFrameworkInfo.plist
+++ b/example/ios/Flutter/AppFrameworkInfo.plist
@@ -20,7 +20,5 @@
????
CFBundleVersion
1.0
- MinimumOSVersion
- 12.0
diff --git a/example/ios/Flutter/Debug.xcconfig b/example/ios/Flutter/Debug.xcconfig
index ec97fc6..592ceee 100644
--- a/example/ios/Flutter/Debug.xcconfig
+++ b/example/ios/Flutter/Debug.xcconfig
@@ -1,2 +1 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"
diff --git a/example/ios/Flutter/Release.xcconfig b/example/ios/Flutter/Release.xcconfig
index c4855bf..592ceee 100644
--- a/example/ios/Flutter/Release.xcconfig
+++ b/example/ios/Flutter/Release.xcconfig
@@ -1,2 +1 @@
-#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"
diff --git a/example/ios/Podfile b/example/ios/Podfile
deleted file mode 100644
index e549ee2..0000000
--- a/example/ios/Podfile
+++ /dev/null
@@ -1,43 +0,0 @@
-# Uncomment this line to define a global platform for your project
-# platform :ios, '12.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
-
-target 'Runner' do
- use_frameworks!
-
- 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/example/ios/Podfile.lock b/example/ios/Podfile.lock
deleted file mode 100644
index b0584b5..0000000
--- a/example/ios/Podfile.lock
+++ /dev/null
@@ -1,28 +0,0 @@
-PODS:
- - Flutter (1.0.0)
- - flutter_security_suite (0.0.1):
- - Flutter
- - integration_test (0.0.1):
- - Flutter
-
-DEPENDENCIES:
- - Flutter (from `Flutter`)
- - flutter_security_suite (from `.symlinks/plugins/flutter_security_suite/ios`)
- - integration_test (from `.symlinks/plugins/integration_test/ios`)
-
-EXTERNAL SOURCES:
- Flutter:
- :path: Flutter
- flutter_security_suite:
- :path: ".symlinks/plugins/flutter_security_suite/ios"
- integration_test:
- :path: ".symlinks/plugins/integration_test/ios"
-
-SPEC CHECKSUMS:
- Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
- flutter_security_suite: a9890dcbd2e76a83bc2298f3f6b2d9f315376ce8
- integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e
-
-PODFILE CHECKSUM: 4305caec6b40dde0ae97be1573c53de1882a07e5
-
-COCOAPODS: 1.16.2
diff --git a/example/ios/Runner.xcodeproj/project.pbxproj b/example/ios/Runner.xcodeproj/project.pbxproj
index 4bfc4e0..522b916 100644
--- a/example/ios/Runner.xcodeproj/project.pbxproj
+++ b/example/ios/Runner.xcodeproj/project.pbxproj
@@ -7,11 +7,10 @@
objects = {
/* Begin PBXBuildFile section */
- 06C8C0D3CF976D1D69498A09 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2EAACB7790AEE144371DAD0C /* Pods_Runner.framework */; };
1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; };
- 1AA504E7684C8B39B5B00931 /* Pods_RunnerTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CA5023F8CC0B967ADF663A14 /* Pods_RunnerTests.framework */; };
3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; };
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,14 +42,11 @@
/* Begin PBXFileReference section */
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 = ""; };
- 2EAACB7790AEE144371DAD0C /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 3225712303A52FBEF52BF0E5 /* 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 = ""; };
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 = ""; };
- 502C6C4C877C6DA4D4326B68 /* 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 = ""; };
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 = ""; };
- 74E78E3A4379A79C8EFEEC23 /* 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 = ""; };
+ 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 = ""; };
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 = ""; };
@@ -59,10 +55,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 = ""; };
- A131707164119A63A6B3A3B5 /* 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 = ""; };
- CA5023F8CC0B967ADF663A14 /* Pods_RunnerTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_RunnerTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- CDB33CE8F0AD18FA7FE718F9 /* 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 = ""; };
- DD9F4103BE12F7167044727D /* 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 */
@@ -70,7 +62,6 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 1AA504E7684C8B39B5B00931 /* Pods_RunnerTests.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -78,22 +69,13 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
- 06C8C0D3CF976D1D69498A09 /* Pods_Runner.framework in Frameworks */,
+ 78A318202AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
- 064094E3410EDF0878A0F06A /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 2EAACB7790AEE144371DAD0C /* Pods_Runner.framework */,
- CA5023F8CC0B967ADF663A14 /* Pods_RunnerTests.framework */,
- );
- name = Frameworks;
- sourceTree = "";
- };
331C8082294A63A400263BE5 /* RunnerTests */ = {
isa = PBXGroup;
children = (
@@ -104,6 +86,7 @@
9740EEB11CF90186004384FC /* Flutter */ = {
isa = PBXGroup;
children = (
+ 78E0A7A72DC9AD7400C4905E /* FlutterGeneratedPluginSwiftPackage */,
3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */,
9740EEB21CF90195004384FC /* Debug.xcconfig */,
7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
@@ -120,7 +103,6 @@
97C146EF1CF9000F007C117D /* Products */,
331C8082294A63A400263BE5 /* RunnerTests */,
AA06477C9E5353785ACD0306 /* Pods */,
- 064094E3410EDF0878A0F06A /* Frameworks */,
);
sourceTree = "";
};
@@ -151,12 +133,6 @@
AA06477C9E5353785ACD0306 /* Pods */ = {
isa = PBXGroup;
children = (
- 502C6C4C877C6DA4D4326B68 /* Pods-Runner.debug.xcconfig */,
- CDB33CE8F0AD18FA7FE718F9 /* Pods-Runner.release.xcconfig */,
- A131707164119A63A6B3A3B5 /* Pods-Runner.profile.xcconfig */,
- 3225712303A52FBEF52BF0E5 /* Pods-RunnerTests.debug.xcconfig */,
- DD9F4103BE12F7167044727D /* Pods-RunnerTests.release.xcconfig */,
- 74E78E3A4379A79C8EFEEC23 /* Pods-RunnerTests.profile.xcconfig */,
);
path = Pods;
sourceTree = "";
@@ -168,7 +144,6 @@
isa = PBXNativeTarget;
buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */;
buildPhases = (
- 1AEBC890EE5EEFF821F5BC55 /* [CP] Check Pods Manifest.lock */,
331C807D294A63A400263BE5 /* Sources */,
331C807F294A63A400263BE5 /* Resources */,
2FEC2D68D2973627684E8349 /* Frameworks */,
@@ -187,20 +162,21 @@
isa = PBXNativeTarget;
buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */;
buildPhases = (
- 8EB0CEA059EEE71516130123 /* [CP] Check Pods Manifest.lock */,
9740EEB61CF901F6004384FC /* Run Script */,
97C146EA1CF9000F007C117D /* Sources */,
97C146EB1CF9000F007C117D /* Frameworks */,
97C146EC1CF9000F007C117D /* Resources */,
9705A1C41CF9048500538489 /* Embed Frameworks */,
3B06AD1E1E4923F5004D2608 /* Thin Binary */,
- DA89AA7750CC03BCF3CE6CD1 /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = Runner;
+ packageProductDependencies = (
+ 78A3181F2AECB46A00862997 /* FlutterGeneratedPluginSwiftPackage */,
+ );
productName = Runner;
productReference = 97C146EE1CF9000F007C117D /* Runner.app */;
productType = "com.apple.product-type.application";
@@ -234,6 +210,9 @@
Base,
);
mainGroup = 97C146E51CF9000F007C117D;
+ packageReferences = (
+ 781AD8BC2B33823900A9FFBB /* XCLocalSwiftPackageReference "FlutterGeneratedPluginSwiftPackage" */,
+ );
productRefGroup = 97C146EF1CF9000F007C117D /* Products */;
projectDirPath = "";
projectRoot = "";
@@ -266,28 +245,6 @@
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
- 1AEBC890EE5EEFF821F5BC55 /* [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;
- };
3B06AD1E1E4923F5004D2608 /* Thin Binary */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -304,28 +261,6 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin";
};
- 8EB0CEA059EEE71516130123 /* [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;
- };
9740EEB61CF901F6004384FC /* Run Script */ = {
isa = PBXShellScriptBuildPhase;
alwaysOutOfDate = 1;
@@ -341,23 +276,6 @@
shellPath = /bin/sh;
shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build";
};
- DA89AA7750CC03BCF3CE6CD1 /* [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;
- };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -450,7 +368,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -483,7 +401,6 @@
};
331C8088294A63A400263BE5 /* Debug */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 3225712303A52FBEF52BF0E5 /* Pods-RunnerTests.debug.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -501,7 +418,6 @@
};
331C8089294A63A400263BE5 /* Release */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = DD9F4103BE12F7167044727D /* Pods-RunnerTests.release.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -517,7 +433,6 @@
};
331C808A294A63A400263BE5 /* Profile */ = {
isa = XCBuildConfiguration;
- baseConfigurationReference = 74E78E3A4379A79C8EFEEC23 /* Pods-RunnerTests.profile.xcconfig */;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
@@ -580,7 +495,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -631,7 +546,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 12.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -721,6 +636,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/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 15cada4..c3fedb2 100644
--- a/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -5,6 +5,24 @@
+
+
+
+
+
+
+
+
+
+
Bool {
- GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
+
+ func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
+ GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
+ }
}
diff --git a/example/ios/Runner/Info.plist b/example/ios/Runner/Info.plist
index 3029c21..2f5ec71 100644
--- a/example/ios/Runner/Info.plist
+++ b/example/ios/Runner/Info.plist
@@ -2,6 +2,8 @@
+ CADisableMinimumFrameDurationOnPhone
+
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
@@ -24,6 +26,29 @@
$(FLUTTER_BUILD_NUMBER)
LSRequiresIPhoneOS
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneClassName
+ UIWindowScene
+ UISceneConfigurationName
+ flutter
+ UISceneDelegateClassName
+ FlutterSceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
+ UIApplicationSupportsIndirectInputEvents
+
UILaunchStoryboardName
LaunchScreen
UIMainStoryboardFile
@@ -41,9 +66,5 @@
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
- CADisableMinimumFrameDurationOnPhone
-
- UIApplicationSupportsIndirectInputEvents
-
diff --git a/example/pubspec.lock b/example/pubspec.lock
index 12e9f88..a2df242 100644
--- a/example/pubspec.lock
+++ b/example/pubspec.lock
@@ -21,10 +21,10 @@ packages:
dependency: transitive
description:
name: characters
- sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
+ sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b
url: "https://pub.dev"
source: hosted
- version: "1.4.0"
+ version: "1.4.1"
clock:
dependency: transitive
description:
@@ -141,26 +141,26 @@ packages:
dependency: transitive
description:
name: matcher
- sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
+ sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
url: "https://pub.dev"
source: hosted
- version: "0.12.17"
+ version: "0.12.19"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
- sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
+ sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b"
url: "https://pub.dev"
source: hosted
- version: "0.11.1"
+ version: "0.13.0"
meta:
dependency: transitive
description:
name: meta
- sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
+ sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
url: "https://pub.dev"
source: hosted
- version: "1.16.0"
+ version: "1.17.0"
path:
dependency: transitive
description:
@@ -250,10 +250,10 @@ packages:
dependency: transitive
description:
name: test_api
- sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
+ sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a"
url: "https://pub.dev"
source: hosted
- version: "0.7.6"
+ version: "0.7.10"
vector_math:
dependency: transitive
description:
@@ -279,5 +279,5 @@ packages:
source: hosted
version: "3.1.0"
sdks:
- dart: ">=3.8.0-0 <4.0.0"
- flutter: ">=3.18.0-18.0.pre.54"
+ dart: ">=3.9.0-0 <4.0.0"
+ flutter: ">=3.41.0"
diff --git a/ios/.gitignore b/ios/.gitignore
index 034771f..0c88507 100644
--- a/ios/.gitignore
+++ b/ios/.gitignore
@@ -35,4 +35,4 @@ Icon?
/Flutter/Generated.xcconfig
/Flutter/ephemeral/
-/Flutter/flutter_export_environment.sh
+/Flutter/flutter_export_environment.sh
\ No newline at end of file
diff --git a/ios/Assets/.gitkeep b/ios/Assets/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/ios/Resources/PrivacyInfo.xcprivacy b/ios/Resources/PrivacyInfo.xcprivacy
deleted file mode 100644
index a34b7e2..0000000
--- a/ios/Resources/PrivacyInfo.xcprivacy
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- NSPrivacyTrackingDomains
-
- NSPrivacyAccessedAPITypes
-
- NSPrivacyCollectedDataTypes
-
- NSPrivacyTracking
-
-
-
diff --git a/ios/flutter_security_suite.podspec b/ios/flutter_security_suite.podspec
index 20becf0..0015405 100644
--- a/ios/flutter_security_suite.podspec
+++ b/ios/flutter_security_suite.podspec
@@ -1,29 +1,19 @@
-#
-# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html.
-# Run `pod lib lint flutter_security_suite.podspec` to validate before publishing.
-#
Pod::Spec.new do |s|
s.name = 'flutter_security_suite'
s.version = '0.0.1'
- s.summary = 'A new Flutter plugin project.'
+ s.summary = 'Security utilities for Flutter apps.'
s.description = <<-DESC
-A new Flutter plugin project.
+Security utilities for Flutter apps.
DESC
s.homepage = 'http://example.com'
s.license = { :file => '../LICENSE' }
- s.author = { 'Your Company' => 'email@example.com' }
+ s.author = { 'Apadmi Ltd.' => 'tomh@apadmi.com' }
s.source = { :path => '.' }
- s.source_files = 'Classes/**/*'
+ s.source_files = 'flutter_security_suite/Sources/flutter_security_suite/**/*.swift'
s.dependency 'Flutter'
- s.platform = :ios, '12.0'
+ 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' }
s.swift_version = '5.0'
-
- # If your plugin requires a privacy manifest, for example if it uses any
- # required reason APIs, update the PrivacyInfo.xcprivacy file to describe your
- # plugin's privacy impact, and then uncomment this line. For more information,
- # see https://developer.apple.com/documentation/bundleresources/privacy_manifest_files
- # s.resource_bundles = {'flutter_security_suite_privacy' => ['Resources/PrivacyInfo.xcprivacy']}
end
diff --git a/ios/flutter_security_suite/Package.swift b/ios/flutter_security_suite/Package.swift
new file mode 100644
index 0000000..5c61a41
--- /dev/null
+++ b/ios/flutter_security_suite/Package.swift
@@ -0,0 +1,29 @@
+// swift-tools-version: 5.9
+// The swift-tools-version declares the minimum version of Swift required to build this package.
+
+import PackageDescription
+
+let package = Package(
+ name: "flutter_security_suite",
+ platforms: [
+ .iOS("13.0")
+ ],
+ products: [
+ .library(name: "flutter-security-suite", targets: ["flutter_security_suite"])
+ ],
+ dependencies: [
+ .package(name: "FlutterFramework", path: "../FlutterFramework")
+ ],
+ targets: [
+ .target(
+ name: "flutter_security_suite",
+ dependencies: [
+ .product(name: "FlutterFramework", package: "FlutterFramework"),
+ "CInternalDarwin"
+ ]
+ ),
+ .target(
+ name: "CInternalDarwin"
+ )
+ ]
+)
diff --git a/ios/flutter_security_suite/Sources/CInternalDarwin/empty.c b/ios/flutter_security_suite/Sources/CInternalDarwin/empty.c
new file mode 100644
index 0000000..580a6b1
--- /dev/null
+++ b/ios/flutter_security_suite/Sources/CInternalDarwin/empty.c
@@ -0,0 +1,7 @@
+//
+// empty.c
+// flutter_security_suite
+//
+// Created by Tom Handcock on 08/05/2026.
+//
+
diff --git a/ios/flutter_security_suite/Sources/CInternalDarwin/include/CInternalDarwin.h b/ios/flutter_security_suite/Sources/CInternalDarwin/include/CInternalDarwin.h
new file mode 100644
index 0000000..8628c68
--- /dev/null
+++ b/ios/flutter_security_suite/Sources/CInternalDarwin/include/CInternalDarwin.h
@@ -0,0 +1,14 @@
+//
+// CInternalDarwin.h
+// flutter_security_suite
+//
+// Created by Tom Handcock on 08/05/2026.
+//
+
+#ifndef CInternalDarwin_h
+#define CInternalDarwin_h
+
+#include
+#include
+
+#endif
diff --git a/ios/Classes/DebuggerChecker.swift b/ios/flutter_security_suite/Sources/flutter_security_suite/DebuggerChecker.swift
similarity index 87%
rename from ios/Classes/DebuggerChecker.swift
rename to ios/flutter_security_suite/Sources/flutter_security_suite/DebuggerChecker.swift
index 877bca4..06050cd 100644
--- a/ios/Classes/DebuggerChecker.swift
+++ b/ios/flutter_security_suite/Sources/flutter_security_suite/DebuggerChecker.swift
@@ -4,6 +4,10 @@
//
// Created by Tom Handcock on 24/06/2025.
//
+#if SWIFT_PACKAGE
+import CInternalDarwin
+import Darwin
+#endif
class DebuggerChecker {
func isDebugged() -> Bool {
diff --git a/ios/Classes/FlutterSecuritySuitePlugin.swift b/ios/flutter_security_suite/Sources/flutter_security_suite/FlutterSecuritySuitePlugin.swift
similarity index 100%
rename from ios/Classes/FlutterSecuritySuitePlugin.swift
rename to ios/flutter_security_suite/Sources/flutter_security_suite/FlutterSecuritySuitePlugin.swift
diff --git a/ios/Classes/JailbreakChecker.swift b/ios/flutter_security_suite/Sources/flutter_security_suite/JailbreakChecker.swift
similarity index 99%
rename from ios/Classes/JailbreakChecker.swift
rename to ios/flutter_security_suite/Sources/flutter_security_suite/JailbreakChecker.swift
index bbd4685..f3d58eb 100644
--- a/ios/Classes/JailbreakChecker.swift
+++ b/ios/flutter_security_suite/Sources/flutter_security_suite/JailbreakChecker.swift
@@ -5,6 +5,14 @@
// Created by Tom Handcock on 24/06/2025.
//
// Based on checks described in https://github.com/securing/IOSSecuritySuite/tree/1.9.11
+
+#if SWIFT_PACKAGE
+import CInternalDarwin
+import Darwin
+#endif
+import Foundation
+import UIKit
+
class JailbreakChecker {
let simulatorChecker: SimulatorChecker
diff --git a/ios/Classes/ReverseEngineerChecker.swift b/ios/flutter_security_suite/Sources/flutter_security_suite/ReverseEngineerChecker.swift
similarity index 97%
rename from ios/Classes/ReverseEngineerChecker.swift
rename to ios/flutter_security_suite/Sources/flutter_security_suite/ReverseEngineerChecker.swift
index f169d2e..89172b2 100644
--- a/ios/Classes/ReverseEngineerChecker.swift
+++ b/ios/flutter_security_suite/Sources/flutter_security_suite/ReverseEngineerChecker.swift
@@ -4,6 +4,10 @@
//
// Created by Tom Handcock on 24/06/2025.
//
+#if SWIFT_PACKAGE
+import CInternalDarwin
+import Darwin
+#endif
class ReverseEngineerChecker {
diff --git a/ios/Classes/SecuritySuiteApi.g.swift b/ios/flutter_security_suite/Sources/flutter_security_suite/SecuritySuiteApi.g.swift
similarity index 100%
rename from ios/Classes/SecuritySuiteApi.g.swift
rename to ios/flutter_security_suite/Sources/flutter_security_suite/SecuritySuiteApi.g.swift
diff --git a/ios/Classes/SecuritySuiteImpl.swift b/ios/flutter_security_suite/Sources/flutter_security_suite/SecuritySuiteImpl.swift
similarity index 100%
rename from ios/Classes/SecuritySuiteImpl.swift
rename to ios/flutter_security_suite/Sources/flutter_security_suite/SecuritySuiteImpl.swift
diff --git a/ios/Classes/ServiceLocator.swift b/ios/flutter_security_suite/Sources/flutter_security_suite/ServiceLocator.swift
similarity index 100%
rename from ios/Classes/ServiceLocator.swift
rename to ios/flutter_security_suite/Sources/flutter_security_suite/ServiceLocator.swift
diff --git a/ios/Classes/SimulatorChecker.swift b/ios/flutter_security_suite/Sources/flutter_security_suite/SimulatorChecker.swift
similarity index 100%
rename from ios/Classes/SimulatorChecker.swift
rename to ios/flutter_security_suite/Sources/flutter_security_suite/SimulatorChecker.swift
diff --git a/pigeons/security_suite_messages.dart b/pigeons/security_suite_messages.dart
index 650149d..1bd3060 100644
--- a/pigeons/security_suite_messages.dart
+++ b/pigeons/security_suite_messages.dart
@@ -8,7 +8,7 @@ import 'package:pigeon/pigeon.dart';
kotlinOut:
"android/src/main/kotlin/com/apadmi/flutter_security_suite/SecuritySuiteApi.g.kt",
kotlinOptions: KotlinOptions(errorClassName: "FlutterSecuritySuiteError"),
- swiftOut: "ios/Classes/SecuritySuiteApi.g.swift",
+ swiftOut: "ios/flutter_security_suite/Sources/flutter_security_suite/SecuritySuiteApi.g.swift",
swiftOptions: SwiftOptions(errorClassName: "SecuritySuiteError"),
),
)
diff --git a/pubspec.yaml b/pubspec.yaml
index 3822681..fd806b6 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -5,7 +5,7 @@ homepage:
environment:
sdk: ^3.7.2
- flutter: '>=3.3.0'
+ flutter: '>=3.41.0'
dependencies:
flutter: