diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 3acca990..0baceeaa 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -37,33 +37,33 @@ jobs:
artifact_path: |
build/linux/*.deb
build/linux/*.tar.gz
- - target: Linux-arm
- os: ubuntu-22.04-arm
- artifact_name: release-Linux-arm
- artifact_path: |
- build/linux/*.deb
- build/linux/*.tar.gz
-# - target: iOS
-# os: macos-latest
-# cache_pod_key: ios-pods
-# cache_pod_path: ios/Pods
-# cache_pod_restore_keys_hash_file: ios/Podfile.lock
-# artifact_name: release-iOS
-# artifact_path: build/**/*.ipa
-# - target: MacOS
-# os: macos-latest
-# cache_pod_key: macos-pods
-# cache_pod_path: macos/Pods
-# cache_pod_restore_keys_hash_file: macos/Podfile.lock
-# artifact_name: release-MacOS
-# artifact_path: /Users/runner/work/CloudOTP/CloudOTP/*.dmg
+ # - target: Linux-arm
+ # os: ubuntu-22.04-arm
+ # artifact_name: release-Linux-arm
+ # artifact_path: |
+ # build/linux/*.deb
+ # build/linux/*.tar.gz
+ - target: iOS
+ os: macos-latest
+ cache_pod_key: ios-pods
+ cache_pod_path: ios/Pods
+ cache_pod_restore_keys_hash_file: ios/Podfile.lock
+ artifact_name: release-iOS
+ artifact_path: build/ios/ipa/*.ipa
+ - target: macOS
+ os: macos-latest
+ cache_pod_key: macos-pods
+ cache_pod_path: macos/Pods
+ cache_pod_restore_keys_hash_file: macos/Podfile.lock
+ artifact_name: release-macOS
+ artifact_path: build/macos/*.dmg
outputs:
version: ${{ steps.get_version.outputs.version }}
date: ${{ steps.get_version.outputs.date}}
arch: ${{ steps.get_version.outputs.arch}}
runs-on: ${{ matrix.os }}
env:
- FLUTTER_VERSION: 3.27.2
+ FLUTTER_VERSION: 3.41.9
steps:
# Checkout branch
- name: Checkout
@@ -78,10 +78,10 @@ jobs:
# Setup Flutter
- name: Setup Flutter
- uses: subosito/flutter-action@v2.21.0
+ uses: subosito/flutter-action@v2.23.0
with:
flutter-version: ${{ env.FLUTTER_VERSION }}
- channel: 'master'
+ channel: 'stable'
cache: true
# Setup JDK
@@ -93,6 +93,20 @@ jobs:
java-version: '17'
cache: gradle
+ # Cache CocoaPods
+ - name: Cache CocoaPods
+ if: matrix.cache_pod_key != ''
+ uses: actions/cache@v4
+ with:
+ path: ${{ matrix.cache_pod_path }}
+ key: ${{ matrix.cache_pod_key }}-${{ hashFiles(matrix.cache_pod_restore_keys_hash_file) }}
+ restore-keys: ${{ matrix.cache_pod_key }}-
+
+ # Update CocoaPods repo
+ - name: Update CocoaPods repo
+ if: matrix.target == 'iOS' || matrix.target == 'macOS'
+ run: pod repo update
+
# Flutter Pub Get
- name: Flutter Pub Get
run: |
@@ -188,6 +202,36 @@ jobs:
dpkg-deb --build --root-owner-group CloudOTP-${{ steps.get_version.outputs.version }}-linux-${{ steps.get_version.outputs.arch }}
tar -zcvf CloudOTP-${{ steps.get_version.outputs.version }}-linux-${{ steps.get_version.outputs.arch }}.tar.gz -C CloudOTP-${{ steps.get_version.outputs.version }}-linux-${{ steps.get_version.outputs.arch }} .
+ # Build iOS .ipa (no codesign)
+ - name: Build iOS
+ if: matrix.target == 'iOS'
+ run: |
+ flutter build ipa --release --no-codesign
+ mkdir -p build/ios/ipa
+ cd build/ios/archive/Runner.xcarchive/Products/Applications
+ mkdir -p Payload
+ mv Runner.app Payload/ 2>/dev/null || mv CloudOTP.app Payload/ 2>/dev/null || true
+ zip -r ../../../../../../build/ios/ipa/CloudOTP-${{ steps.get_version.outputs.version }}-ios.ipa Payload
+
+ # Build macOS .app & .dmg
+ - name: Disable macOS codesigning
+ if: matrix.target == 'macOS'
+ run: |
+ sed -i '' 's/"CODE_SIGN_IDENTITY\[sdk=macosx\*\]" = "Apple Development"/CODE_SIGN_IDENTITY = "-"/g' macos/Runner.xcodeproj/project.pbxproj
+ sed -i '' 's/CODE_SIGN_STYLE = Automatic/CODE_SIGN_STYLE = Manual/g' macos/Runner.xcodeproj/project.pbxproj
+ sed -i '' 's/DEVELOPMENT_TEAM = 9CAPQ7Q4W8/DEVELOPMENT_TEAM = ""/g' macos/Runner.xcodeproj/project.pbxproj
+ sed -i '' 's/CODE_SIGN_ENTITLEMENTS = Runner\/Release.entitlements/CODE_SIGN_ENTITLEMENTS = ""/g' macos/Runner.xcodeproj/project.pbxproj
+ sed -i '' 's/CODE_SIGN_ENTITLEMENTS = Runner\/DebugProfile.entitlements/CODE_SIGN_ENTITLEMENTS = ""/g' macos/Runner.xcodeproj/project.pbxproj
+ - name: Build macOS
+ if: matrix.target == 'macOS'
+ run: |
+ flutter build macos --release
+ APP_PATH="build/macos/Build/Products/Release/CloudOTP.app"
+ codesign --force --deep -s - "$APP_PATH"
+ DMG_NAME="CloudOTP-${{ steps.get_version.outputs.version }}-macos-universal.dmg"
+ mkdir -p build/macos
+ hdiutil create -volname CloudOTP -srcfolder "$APP_PATH" -ov -format UDZO "build/macos/$DMG_NAME"
+
# Upload Artifacts
- name: Upload Artifacts
uses: actions/upload-artifact@v4
@@ -223,8 +267,10 @@ jobs:
mv /tmp/artifacts/release-Windows/*.exe /tmp/artifacts/final/
mv /tmp/artifacts/release-Linux/*.deb /tmp/artifacts/final/
mv /tmp/artifacts/release-Linux/*.tar.gz /tmp/artifacts/final/
- mv /tmp/artifacts/release-Linux-arm/*.deb /tmp/artifacts/final/
- mv /tmp/artifacts/release-Linux-arm/*.tar.gz /tmp/artifacts/final/
+ # mv /tmp/artifacts/release-Linux-arm/*.deb /tmp/artifacts/final/
+ # mv /tmp/artifacts/release-Linux-arm/*.tar.gz /tmp/artifacts/final/
+ mv /tmp/artifacts/release-iOS/*.ipa /tmp/artifacts/final/ 2>/dev/null || true
+ mv /tmp/artifacts/release-macOS/*.dmg /tmp/artifacts/final/ 2>/dev/null || true
cd /tmp/artifacts/final
for file in *; do
diff --git a/.gitignore b/.gitignore
index 32e3845e..0a3de426 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,9 +5,11 @@
*.swp
.DS_Store
.atom/
+.build/
.buildlog/
.history
.svn/
+.swiftpm/
migrate_working_dir/
# IntelliJ related
@@ -30,7 +32,8 @@ migrate_working_dir/
.packages
.pub-cache/
.pub/
-/build/
+**/build/
+**/.plugin_symlinks/
# Symbolication related
app.*.symbols
@@ -47,6 +50,7 @@ app.*.map.json
**/generated/
cloudotp.db
+*.ipa
/assets/fonts/**
diff --git a/android/app/build.gradle b/android/app/build.gradle
index 0c3d690f..52cdb80c 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -50,7 +50,7 @@ android {
defaultConfig {
applicationId "com.cloudchewie.cloudotp"
- minSdkVersion 23
+ minSdkVersion flutter.minSdkVersion
targetSdkVersion flutter.targetSdkVersion
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
@@ -89,9 +89,17 @@ flutter {
dependencies {
implementation "androidx.core:core-splashscreen:1.0.1"
- implementation 'androidx.core:core-ktx:1.13.1'
+ implementation 'androidx.core:core-ktx:1.15.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation "androidx.interpolator:interpolator:1.0.0"
implementation 'com.google.gms:google-services:4.2.0'
+
+ configurations.configureEach {
+ resolutionStrategy {
+ force 'androidx.core:core:1.15.0'
+ force 'androidx.core:core-ktx:1.15.0'
+ force 'androidx.browser:browser:1.8.0'
+ }
+ }
}
diff --git a/android/app/src/main/res/xml/network_security_config.xml b/android/app/src/main/res/xml/network_security_config.xml
index bb6ab93d..d7b4192e 100644
--- a/android/app/src/main/res/xml/network_security_config.xml
+++ b/android/app/src/main/res/xml/network_security_config.xml
@@ -3,7 +3,6 @@
-
-
\ No newline at end of file
+
diff --git a/android/build.gradle b/android/build.gradle
index ceba1f59..90ad290a 100644
--- a/android/build.gradle
+++ b/android/build.gradle
@@ -5,7 +5,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:8.0.2'
+ classpath 'com.android.tools.build:gradle:8.7.0'
// classpath 'com.android.tools:r8:1.6.82'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
@@ -22,7 +22,7 @@ rootProject.buildDir = '../build'
subprojects {
afterEvaluate {
android {
- compileSdkVersion 34
+ compileSdkVersion 35
}
if (it.plugins.hasPlugin('com.android.library') || it.plugins.hasPlugin('com.android.application')) {
it.android {
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 5e6b5427..afa1e8eb 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
diff --git a/android/settings.gradle b/android/settings.gradle
index a3010453..2513f907 100644
--- a/android/settings.gradle
+++ b/android/settings.gradle
@@ -23,7 +23,7 @@ pluginManagement {
plugins {
id "dev.flutter.flutter-plugin-loader" version "1.0.0"
- id "com.android.application" version "8.0.2" apply false
+ id "com.android.application" version "8.7.0" apply false
id "org.jetbrains.kotlin.android" version "2.1.10" apply false
}
diff --git a/ios/.gitignore b/ios/.gitignore
index 7a7f9873..94e7aef9 100644
--- a/ios/.gitignore
+++ b/ios/.gitignore
@@ -1,3 +1,4 @@
+build/
**/dgph
*.mode1v3
*.mode2v3
diff --git a/ios/Flutter/AppFrameworkInfo.plist b/ios/Flutter/AppFrameworkInfo.plist
index 7c569640..391a902b 100644
--- a/ios/Flutter/AppFrameworkInfo.plist
+++ b/ios/Flutter/AppFrameworkInfo.plist
@@ -20,7 +20,5 @@
????
CFBundleVersion
1.0
- MinimumOSVersion
- 12.0
diff --git a/ios/Podfile b/ios/Podfile
index 2f6ae3bd..235c8cc0 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
-# platform :ios, '12.0'
+platform :ios, '13.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
@@ -33,8 +33,6 @@ target 'Runner' do
flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
- pod 'SQLCipher', '~> 4.5'
-
target 'RunnerTests' do
inherit! :search_paths
end
@@ -43,11 +41,61 @@ end
post_install do |installer|
installer.pods_project.targets.each do |target|
flutter_additional_ios_build_settings(target)
+ end
+
+ # Aggressively remove all SQLCipher.bundle targets and references
+ pods_project = installer.pods_project
+
+ # Step 1: Identify bundle targets to remove
+ bundle_target_names = Set.new
+ pods_project.targets.to_a.each do |target|
+ if target.respond_to?(:product_type) && target.product_type == 'com.apple.product-type.bundle' && target.name.include?('SQLCipher')
+ bundle_target_names << target.name
+ end
+ end
+
+ # Step 2: Remove dependencies on bundle targets from all other targets
+ pods_project.targets.each do |target|
+ next if bundle_target_names.include?(target.name)
+ target.dependencies.to_a.each do |dep|
+ if dep.target && bundle_target_names.include?(dep.target.name)
+ dep.remove_from_project
+ end
+ end
+ end
+
+ # Step 3: Remove SQLCipher.bundle from ALL build phases of ALL targets
+ pods_project.targets.each do |target|
+ next if bundle_target_names.include?(target.name)
+ target.build_phases.each do |phase|
+ next unless phase.respond_to?(:files)
+ phase.files.to_a.each do |build_file|
+ name = build_file.display_name || ''
+ if name.include?('SQLCipher.bundle') || name.include?('SQLCipher-SQLCipher') || name.include?('FMDB-SQLCipher')
+ build_file.remove_from_project
+ end
+ end
+ end
+ end
+
+ # Step 4: Remove the bundle targets themselves
+ pods_project.targets.to_a.each do |target|
+ if bundle_target_names.include?(target.name)
+ target.remove_from_project
+ end
+ end
+ # Step 5: Remove all file references to SQLCipher.bundle
+ pods_project.files.to_a.each do |file_ref|
+ if file_ref.path && file_ref.path.include?('SQLCipher.bundle')
+ file_ref.remove_from_project
+ end
+ end
+
+ pods_project.save
+
+ installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
- # You can remove unused permissions here
- # for more information: https://github.com/BaseflowIT/flutter-permission-handler/blob/master/permission_handler/ios/Classes/PermissionHandlerEnums.h
- # e.g. when you don't need camera permission, just add 'PERMISSION_CAMERA=0'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS'] ||= [
'$(inherited)',
@@ -75,10 +123,6 @@ post_install do |installer|
## dart: PermissionGroup.photos
'PERMISSION_PHOTOS=1',
- ## The 'PERMISSION_LOCATION' macro enables the `locationWhenInUse` and `locationAlways` permission. If
- ## the application only requires `locationWhenInUse`, only specify the `PERMISSION_LOCATION_WHENINUSE`
- ## macro.
- ##
## dart: [PermissionGroup.location, PermissionGroup.locationAlways, PermissionGroup.locationWhenInUse]
'PERMISSION_LOCATION=0',
'PERMISSION_LOCATION_WHENINUSE=0',
@@ -104,7 +148,6 @@ post_install do |installer|
## dart: PermissionGroup.criticalAlerts
'PERMISSION_ASSISTANT=0',
]
-
end
end
-end
\ No newline at end of file
+end
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 7a780080..76434921 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -1,5 +1,5 @@
PODS:
- - audio_session (0.0.1):
+ - app_links (0.0.2):
- Flutter
- biometric_storage (0.0.1):
- Flutter
@@ -43,12 +43,10 @@ PODS:
- flutter_inappwebview_ios (0.0.1):
- Flutter
- flutter_inappwebview_ios/Core (= 0.0.1)
- - OrderedSet (~> 5.0)
+ - OrderedSet (~> 6.0.3)
- flutter_inappwebview_ios/Core (0.0.1):
- Flutter
- - OrderedSet (~> 5.0)
- - flutter_local_notifications (0.0.1):
- - Flutter
+ - OrderedSet (~> 6.0.3)
- flutter_native_splash (0.0.1):
- Flutter
- flutter_secure_storage (6.0.0):
@@ -57,91 +55,38 @@ PODS:
- Flutter
- fluttertoast (0.0.2):
- Flutter
- - Toast
- FMDB/SQLCipher (2.7.11):
- SQLCipher (~> 4.0)
- - GoogleDataTransport (9.4.1):
- - GoogleUtilities/Environment (~> 7.7)
- - nanopb (< 2.30911.0, >= 2.30908.0)
- - PromisesObjC (< 3.0, >= 1.2)
- - GoogleMLKit/BarcodeScanning (6.0.0):
- - GoogleMLKit/MLKitCore
- - MLKitBarcodeScanning (~> 5.0.0)
- - GoogleMLKit/MLKitCore (6.0.0):
- - MLKitCommon (~> 11.0.0)
- - GoogleToolboxForMac/Defines (4.2.1)
- - GoogleToolboxForMac/Logger (4.2.1):
- - GoogleToolboxForMac/Defines (= 4.2.1)
- - "GoogleToolboxForMac/NSData+zlib (4.2.1)":
- - GoogleToolboxForMac/Defines (= 4.2.1)
- - GoogleUtilities/Environment (7.13.3):
- - GoogleUtilities/Privacy
- - PromisesObjC (< 3.0, >= 1.2)
- - GoogleUtilities/Logger (7.13.3):
- - GoogleUtilities/Environment
- - GoogleUtilities/Privacy
- - GoogleUtilities/Privacy (7.13.3)
- - GoogleUtilities/UserDefaults (7.13.3):
- - GoogleUtilities/Logger
- - GoogleUtilities/Privacy
- - GoogleUtilitiesComponents (1.1.0):
- - GoogleUtilities/Logger
- - GTMSessionFetcher/Core (3.5.0)
- - install_plugin (2.0.0):
+ - image_gallery_saver (2.0.2):
- Flutter
- isar_flutter_libs (1.0.0):
- Flutter
- - just_audio (0.0.1):
- - Flutter
- local_auth_darwin (0.0.1):
- Flutter
- FlutterMacOS
- - MLImage (1.0.0-beta5)
- - MLKitBarcodeScanning (5.0.0):
- - MLKitCommon (~> 11.0)
- - MLKitVision (~> 7.0)
- - MLKitCommon (11.0.0):
- - GoogleDataTransport (< 10.0, >= 9.4.1)
- - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
- - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
- - GoogleUtilities/UserDefaults (< 8.0, >= 7.13.0)
- - GoogleUtilitiesComponents (~> 1.0)
- - GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
- - MLKitVision (7.0.0):
- - GoogleToolboxForMac/Logger (< 5.0, >= 4.2.1)
- - "GoogleToolboxForMac/NSData+zlib (< 5.0, >= 4.2.1)"
- - GTMSessionFetcher/Core (< 4.0, >= 3.3.2)
- - MLImage (= 1.0.0-beta5)
- - MLKitCommon (~> 11.0)
- - mobile_scanner (5.2.3):
+ - mobile_scanner (7.0.0):
- Flutter
- - GoogleMLKit/BarcodeScanning (~> 6.0.0)
+ - FlutterMacOS
- move_to_background (0.0.1):
- Flutter
- - nanopb (2.30910.0):
- - nanopb/decode (= 2.30910.0)
- - nanopb/encode (= 2.30910.0)
- - nanopb/decode (2.30910.0)
- - nanopb/encode (2.30910.0)
- native_device_orientation (0.0.1):
- Flutter
- - OrderedSet (5.0.0)
+ - OrderedSet (6.0.3)
- package_info_plus (0.4.5):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- - permission_handler_apple (9.1.1):
+ - permission_handler_apple (9.3.0):
- Flutter
- - PromisesObjC (2.4.0)
- protocol_handler_ios (0.0.1):
- Flutter
- restart_app (0.0.1):
- Flutter
- - screen_protector (1.2.1):
+ - screen_protector (1.5.1):
- Flutter
- - ScreenProtectorKit (~> 1.3.1)
- - ScreenProtectorKit (1.3.1)
+ - ScreenProtectorKit (= 1.5.1)
+ - ScreenProtectorKit (1.5.1)
- SDWebImage (5.19.7):
- SDWebImage/Core (= 5.19.7)
- SDWebImage/Core (5.19.7)
@@ -162,35 +107,24 @@ PODS:
- SQLCipher/standard (4.5.7):
- SQLCipher/common
- SwiftyGif (5.4.5)
- - Toast (4.1.1)
- url_launcher_ios (0.0.1):
- Flutter
- - video_player_avfoundation (0.0.1):
- - Flutter
- - FlutterMacOS
- - wakelock_plus (0.0.1):
- - Flutter
- - webview_flutter_wkwebview (0.0.1):
- - Flutter
- - FlutterMacOS
DEPENDENCIES:
- - audio_session (from `.symlinks/plugins/audio_session/ios`)
+ - app_links (from `.symlinks/plugins/app_links/ios`)
- biometric_storage (from `.symlinks/plugins/biometric_storage/ios`)
- device_info_plus (from `.symlinks/plugins/device_info_plus/ios`)
- file_picker (from `.symlinks/plugins/file_picker/ios`)
- Flutter (from `Flutter`)
- flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`)
- - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
- flutter_web_auth_2 (from `.symlinks/plugins/flutter_web_auth_2/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- - install_plugin (from `.symlinks/plugins/install_plugin/ios`)
+ - image_gallery_saver (from `.symlinks/plugins/image_gallery_saver/ios`)
- isar_flutter_libs (from `.symlinks/plugins/isar_flutter_libs/ios`)
- - just_audio (from `.symlinks/plugins/just_audio/ios`)
- local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`)
- - mobile_scanner (from `.symlinks/plugins/mobile_scanner/ios`)
+ - mobile_scanner (from `.symlinks/plugins/mobile_scanner/darwin`)
- move_to_background (from `.symlinks/plugins/move_to_background/ios`)
- native_device_orientation (from `.symlinks/plugins/native_device_orientation/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
@@ -204,37 +138,21 @@ DEPENDENCIES:
- sqflite (from `.symlinks/plugins/sqflite/darwin`)
- sqflite_sqlcipher (from `.symlinks/plugins/sqflite_sqlcipher/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
- - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
- - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/darwin`)
SPEC REPOS:
trunk:
- DKImagePickerController
- DKPhotoGallery
- FMDB
- - GoogleDataTransport
- - GoogleMLKit
- - GoogleToolboxForMac
- - GoogleUtilities
- - GoogleUtilitiesComponents
- - GTMSessionFetcher
- - MLImage
- - MLKitBarcodeScanning
- - MLKitCommon
- - MLKitVision
- - nanopb
- OrderedSet
- - PromisesObjC
- ScreenProtectorKit
- SDWebImage
- SQLCipher
- SwiftyGif
- - Toast
EXTERNAL SOURCES:
- audio_session:
- :path: ".symlinks/plugins/audio_session/ios"
+ app_links:
+ :path: ".symlinks/plugins/app_links/ios"
biometric_storage:
:path: ".symlinks/plugins/biometric_storage/ios"
device_info_plus:
@@ -245,8 +163,6 @@ EXTERNAL SOURCES:
:path: Flutter
flutter_inappwebview_ios:
:path: ".symlinks/plugins/flutter_inappwebview_ios/ios"
- flutter_local_notifications:
- :path: ".symlinks/plugins/flutter_local_notifications/ios"
flutter_native_splash:
:path: ".symlinks/plugins/flutter_native_splash/ios"
flutter_secure_storage:
@@ -255,16 +171,14 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_web_auth_2/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
- install_plugin:
- :path: ".symlinks/plugins/install_plugin/ios"
+ image_gallery_saver:
+ :path: ".symlinks/plugins/image_gallery_saver/ios"
isar_flutter_libs:
:path: ".symlinks/plugins/isar_flutter_libs/ios"
- just_audio:
- :path: ".symlinks/plugins/just_audio/ios"
local_auth_darwin:
:path: ".symlinks/plugins/local_auth_darwin/darwin"
mobile_scanner:
- :path: ".symlinks/plugins/mobile_scanner/ios"
+ :path: ".symlinks/plugins/mobile_scanner/darwin"
move_to_background:
:path: ".symlinks/plugins/move_to_background/ios"
native_device_orientation:
@@ -291,68 +205,44 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/sqflite_sqlcipher/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
- video_player_avfoundation:
- :path: ".symlinks/plugins/video_player_avfoundation/darwin"
- wakelock_plus:
- :path: ".symlinks/plugins/wakelock_plus/ios"
- webview_flutter_wkwebview:
- :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin"
SPEC CHECKSUMS:
- audio_session: 088d2483ebd1dc43f51d253d4a1c517d9a2e7207
- biometric_storage: 1400f1382af3a4cc2bf05340e13c3d8de873ceb9
- device_info_plus: 97af1d7e84681a90d0693e63169a5d50e0839a0d
+ app_links: 76b66b60cc809390ca1ad69bfd66b998d2387ac7
+ biometric_storage: 662167ef947fba48891850f0b3042f892a839e9a
+ device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe
DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
- file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
- Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
- flutter_inappwebview_ios: 97215cf7d4677db55df76782dbd2930c5e1c1ea0
- flutter_local_notifications: 4cde75091f6327eb8517fa068a0a5950212d2086
- flutter_native_splash: edf599c81f74d093a4daf8e17bd7a018854bc778
- flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
- flutter_web_auth_2: 051cf9f5dc366f31b5dcc4e2952c2b954767be8a
- fluttertoast: e9a18c7be5413da53898f660530c56f35edfba9c
+ file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be
+ Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
+ flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
+ flutter_native_splash: 35ddbc7228eafcb3969dcc5f1fbbe27c1145a4f0
+ flutter_secure_storage: 2c2ff13db9e0a5647389bff88b0ecac56e3f3418
+ flutter_web_auth_2: 3464a7c16dc6480b6194fc89913bae6e82f28405
+ fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
FMDB: 57486c1117fd8e0e6b947b2f54c3f42bf8e57a4e
- GoogleDataTransport: 6c09b596d841063d76d4288cc2d2f42cc36e1e2a
- GoogleMLKit: 97ac7af399057e99182ee8edfa8249e3226a4065
- GoogleToolboxForMac: d1a2cbf009c453f4d6ded37c105e2f67a32206d8
- GoogleUtilities: ea963c370a38a8069cc5f7ba4ca849a60b6d7d15
- GoogleUtilitiesComponents: 679b2c881db3b615a2777504623df6122dd20afe
- GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
- install_plugin: b52f81470a1f37b006607bdf7ffc6031df43fe76
- isar_flutter_libs: b69f437aeab9c521821c3f376198c4371fa21073
- just_audio: baa7252489dbcf47a4c7cc9ca663e9661c99aafa
- local_auth_darwin: 66e40372f1c29f383a314c738c7446e2f7fdadc3
- MLImage: 1824212150da33ef225fbd3dc49f184cf611046c
- MLKitBarcodeScanning: 10ca0845a6d15f2f6e911f682a1998b68b973e8b
- MLKitCommon: afec63980417d29ffbb4790529a1b0a2291699e1
- MLKitVision: e858c5f125ecc288e4a31127928301eaba9ae0c1
- mobile_scanner: 96e91f2e1fb396bb7df8da40429ba8dfad664740
- move_to_background: 39a5b79b26d577b0372cbe8a8c55e7aa9fcd3a2d
- nanopb: 438bc412db1928dac798aa6fd75726007be04262
- native_device_orientation: 348b10c346a60ebbc62fb235a4fdb5d1b61a8f55
- OrderedSet: aaeb196f7fef5a9edf55d89760da9176ad40b93c
- package_info_plus: 58f0028419748fad15bf008b270aaa8e54380b1c
- path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
- permission_handler_apple: e76247795d700c14ea09e3a2d8855d41ee80a2e6
- PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47
- protocol_handler_ios: a5db8abc38526ee326988b808be621e5fd568990
- restart_app: 806659942bf932f6ce51c5372f91ce5e81c8c14a
- screen_protector: 6f92086bd2f2f4b54f54913289b9d1310610140b
- ScreenProtectorKit: 83a6281b02c7a5902ee6eac4f5045f674e902ae4
+ image_gallery_saver: 14711d79da40581063e8842a11acf1969d781ed7
+ isar_flutter_libs: 9fc2cfb928c539e1b76c481ba5d143d556d94920
+ local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb
+ mobile_scanner: 9157936403f5a0644ca3779a38ff8404c5434a93
+ move_to_background: 155f7bfbd34d43ad847cb630d2d2d87c17199710
+ native_device_orientation: e3580675687d5034770da198f6839ebf2122ef94
+ OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
+ package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
+ path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
+ permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
+ protocol_handler_ios: 59f23ee71f3ec602d67902ca7f669a80957888d5
+ restart_app: 9cda5378aacc5000e3f66ee76a9201534e7d3ecf
+ screen_protector: 18c6aca2dc5d2a832f6787a5318f97f03e9d3150
+ ScreenProtectorKit: 6ceb3e0808341a9bc15d175bff40dfdd4b32da71
SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
- share_plus: 8875f4f2500512ea181eef553c3e27dba5135aad
- sodium_libs: 1faae17af662384acbd13e41867a0008cd2e2318
- sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec
- sqflite_sqlcipher: 6f70d131e6b340a17d4bb6708a023e5c07ca24d3
+ share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
+ sodium_libs: 6c6d0e83f4ee427c6464caa1f1bdc2abf3ca0b7f
+ sqflite: c35dad70033b8862124f8337cc994a809fcd9fa3
+ sqflite_sqlcipher: 253ead9c2add962dbd31b1fd8cd5c0c6d3c736d1
SQLCipher: 5e6bfb47323635c8b657b1b27d25c5f1baf63bf5
SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
- Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
- url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
- video_player_avfoundation: 7c6c11d8470e1675df7397027218274b6d2360b3
- wakelock_plus: 78ec7c5b202cab7761af8e2b2b3d0671be6c4ae1
- webview_flutter_wkwebview: 0982481e3d9c78fd5c6f62a002fcd24fc791f1e4
+ url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
-PODFILE CHECKSUM: 44086395d77aeeb5c32c934343e42735d44366be
+PODFILE CHECKSUM: 4bb9f7e4e6a468a9e1d07ae49e6c4cb7bed36dc1
-COCOAPODS: 1.15.2
+COCOAPODS: 1.16.2
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 677f7372..78882539 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -473,7 +473,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;
@@ -602,7 +602,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;
@@ -653,7 +653,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;
diff --git a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
index 8e3ca5df..e3773d42 100644
--- a/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
+++ b/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme
@@ -26,6 +26,7 @@
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+ customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit"
shouldUseLaunchSchemeArgsEnv = "YES">
diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift
index 62666446..c30b367e 100644
--- a/ios/Runner/AppDelegate.swift
+++ b/ios/Runner/AppDelegate.swift
@@ -2,12 +2,15 @@ import Flutter
import UIKit
@main
-@objc class AppDelegate: FlutterAppDelegate {
+@objc class AppDelegate: FlutterAppDelegate, FlutterImplicitEngineDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
- GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
+
+ func didInitializeImplicitFlutterEngine(_ engineBridge: FlutterImplicitEngineBridge) {
+ GeneratedPluginRegistrant.register(with: engineBridge.pluginRegistry)
+ }
}
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 3fe8c6ce..cad82ea6 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -2,6 +2,8 @@
+ CADisableMinimumFrameDurationOnPhone
+
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
@@ -20,14 +22,6 @@
$(FLUTTER_BUILD_NAME)
CFBundleSignature
????
- CFBundleVersion
- $(FLUTTER_BUILD_NUMBER)
- LSRequiresIPhoneOS
-
- UILaunchStoryboardName
- LaunchScreen
- UIMainStoryboardFile
- Main
CFBundleURLTypes
@@ -41,17 +35,50 @@
+ CFBundleVersion
+ $(FLUTTER_BUILD_NUMBER)
LSApplicationQueriesSchemes
sms
tel
- NSFaceIDUsageDescription
- Authenticate
+ LSRequiresIPhoneOS
+
NSCameraUsageDescription
Scan qrcodes to analyze tokens.
+ NSFaceIDUsageDescription
+ Authenticate
NSPhotoLibraryUsageDescription
Select photos to analyze tokens from qrcodes.
+ UIApplicationSceneManifest
+
+ UIApplicationSupportsMultipleScenes
+
+ UISceneConfigurations
+
+ UIWindowSceneSessionRoleApplication
+
+
+ UISceneClassName
+ UIWindowScene
+ UISceneConfigurationName
+ flutter
+ UISceneDelegateClassName
+ FlutterSceneDelegate
+ UISceneStoryboardFile
+ Main
+
+
+
+
+ UIApplicationSupportsIndirectInputEvents
+
+ UILaunchStoryboardName
+ LaunchScreen
+ UIMainStoryboardFile
+ Main
+ UIStatusBarHidden
+
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
@@ -65,11 +92,5 @@
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
- CADisableMinimumFrameDurationOnPhone
-
- UIApplicationSupportsIndirectInputEvents
-
- UIStatusBarHidden
-
diff --git a/l10n.yaml b/l10n.yaml
index bfb3f244..a4c7d648 100644
--- a/l10n.yaml
+++ b/l10n.yaml
@@ -2,5 +2,4 @@ arb-dir: lib/l10n
template-arb-file: intl_en.arb
output-localization-file: app_localizations.dart
output-class: AppLocalizations
-output-dir: lib/generated
-synthetic-package: false
\ No newline at end of file
+output-dir: lib/generated
\ No newline at end of file
diff --git a/lib/Database/auto_backup_log_dao.dart b/lib/Database/auto_backup_log_dao.dart
index 1c9d31ca..8a54dc8e 100644
--- a/lib/Database/auto_backup_log_dao.dart
+++ b/lib/Database/auto_backup_log_dao.dart
@@ -38,7 +38,7 @@ class AutoBackupLogDao {
List