diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png
similarity index 87%
rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png
rename to android/app/src/main/res/mipmap-hdpi/launcher_icon.png
index ecf481f8..a59e9b1e 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@1x.png and b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png differ
diff --git a/android/app/src/main/res/mipmap-mdpi/launcher_icon.png b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png
new file mode 100644
index 00000000..3ae62e40
Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
new file mode 100644
index 00000000..5426f086
Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
similarity index 98%
rename from ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png
rename to android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
index 4b9ccd0e..7cb090e9 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-72x72@2x.png and b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
new file mode 100644
index 00000000..c79fe128
Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png differ
diff --git a/flutter_launcher_icons.yaml b/flutter_launcher_icons.yaml
new file mode 100644
index 00000000..0aaf86bb
--- /dev/null
+++ b/flutter_launcher_icons.yaml
@@ -0,0 +1,6 @@
+flutter_launcher_icons:
+ android: "launcher_icon"
+ ios: true
+ remove_alpha_ios: true
+ image_path: 'assets/logos/paperless_logo_green.png'
+ min_sdk_android: 21 # android min sdk min:16, default 21
\ No newline at end of file
diff --git a/ios/.gitignore b/ios/.gitignore
index 7a7f9873..042ba2e4 100644
--- a/ios/.gitignore
+++ b/ios/.gitignore
@@ -26,9 +26,12 @@ Flutter/flutter_assets/
Flutter/flutter_export_environment.sh
ServiceDefinitions.json
Runner/GeneratedPluginRegistrant.*
+fastlane/report.xml
+*.zip
+*.ipa
# Exceptions to above rules.
!default.mode1v3
!default.mode2v3
!default.pbxuser
-!default.perspectivev3
+!default.perspectivev3
\ No newline at end of file
diff --git a/ios/.ruby-version b/ios/.ruby-version
new file mode 100644
index 00000000..be94e6f5
--- /dev/null
+++ b/ios/.ruby-version
@@ -0,0 +1 @@
+3.2.2
diff --git a/ios/Gemfile b/ios/Gemfile
new file mode 100644
index 00000000..bb94aef5
--- /dev/null
+++ b/ios/Gemfile
@@ -0,0 +1,4 @@
+source "https://rubygems.org"
+
+gem "fastlane"
+gem "cocoapods"
\ No newline at end of file
diff --git a/ios/Gemfile.lock b/ios/Gemfile.lock
new file mode 100644
index 00000000..89f0ff62
--- /dev/null
+++ b/ios/Gemfile.lock
@@ -0,0 +1,282 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.6)
+ rexml
+ activesupport (7.0.5)
+ concurrent-ruby (~> 1.0, >= 1.0.2)
+ i18n (>= 1.6, < 2)
+ minitest (>= 5.1)
+ tzinfo (~> 2.0)
+ addressable (2.8.4)
+ public_suffix (>= 2.0.2, < 6.0)
+ algoliasearch (1.27.5)
+ httpclient (~> 2.8, >= 2.8.3)
+ json (>= 1.5.1)
+ artifactory (3.0.15)
+ atomos (0.1.3)
+ aws-eventstream (1.2.0)
+ aws-partitions (1.776.0)
+ aws-sdk-core (3.174.0)
+ aws-eventstream (~> 1, >= 1.0.2)
+ aws-partitions (~> 1, >= 1.651.0)
+ aws-sigv4 (~> 1.5)
+ jmespath (~> 1, >= 1.6.1)
+ aws-sdk-kms (1.66.0)
+ aws-sdk-core (~> 3, >= 3.174.0)
+ aws-sigv4 (~> 1.1)
+ aws-sdk-s3 (1.123.1)
+ aws-sdk-core (~> 3, >= 3.174.0)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.4)
+ aws-sigv4 (1.5.2)
+ aws-eventstream (~> 1, >= 1.0.2)
+ babosa (1.0.4)
+ claide (1.1.0)
+ cocoapods (1.12.1)
+ addressable (~> 2.8)
+ claide (>= 1.0.2, < 2.0)
+ cocoapods-core (= 1.12.1)
+ cocoapods-deintegrate (>= 1.0.3, < 2.0)
+ cocoapods-downloader (>= 1.6.0, < 2.0)
+ cocoapods-plugins (>= 1.0.0, < 2.0)
+ cocoapods-search (>= 1.0.0, < 2.0)
+ cocoapods-trunk (>= 1.6.0, < 2.0)
+ cocoapods-try (>= 1.1.0, < 2.0)
+ colored2 (~> 3.1)
+ escape (~> 0.0.4)
+ fourflusher (>= 2.3.0, < 3.0)
+ gh_inspector (~> 1.0)
+ molinillo (~> 0.8.0)
+ nap (~> 1.0)
+ ruby-macho (>= 2.3.0, < 3.0)
+ xcodeproj (>= 1.21.0, < 2.0)
+ cocoapods-core (1.12.1)
+ activesupport (>= 5.0, < 8)
+ addressable (~> 2.8)
+ algoliasearch (~> 1.0)
+ concurrent-ruby (~> 1.1)
+ fuzzy_match (~> 2.0.4)
+ nap (~> 1.0)
+ netrc (~> 0.11)
+ public_suffix (~> 4.0)
+ typhoeus (~> 1.0)
+ cocoapods-deintegrate (1.0.5)
+ cocoapods-downloader (1.6.3)
+ cocoapods-plugins (1.0.0)
+ nap
+ cocoapods-search (1.0.1)
+ cocoapods-trunk (1.6.0)
+ nap (>= 0.8, < 2.0)
+ netrc (~> 0.11)
+ cocoapods-try (1.2.0)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander (4.6.0)
+ highline (~> 2.0.0)
+ concurrent-ruby (1.2.2)
+ declarative (0.0.20)
+ digest-crc (0.6.4)
+ rake (>= 12.0.0, < 14.0.0)
+ domain_name (0.5.20190701)
+ unf (>= 0.0.5, < 1.0.0)
+ dotenv (2.8.1)
+ emoji_regex (3.2.3)
+ escape (0.0.4)
+ ethon (0.16.0)
+ ffi (>= 1.15.0)
+ excon (0.100.0)
+ faraday (1.10.3)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-httpclient (~> 1.0)
+ faraday-multipart (~> 1.0)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.0)
+ faraday-patron (~> 1.0)
+ faraday-rack (~> 1.0)
+ faraday-retry (~> 1.0)
+ ruby2_keywords (>= 0.0.4)
+ faraday-cookie_jar (0.0.7)
+ faraday (>= 0.8.0)
+ http-cookie (~> 1.0.0)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-httpclient (1.0.1)
+ faraday-multipart (1.0.4)
+ multipart-post (~> 2)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.2.0)
+ faraday-patron (1.0.0)
+ faraday-rack (1.0.0)
+ faraday-retry (1.0.3)
+ faraday_middleware (1.2.0)
+ faraday (~> 1.0)
+ fastimage (2.2.7)
+ fastlane (2.213.0)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.8, < 3.0.0)
+ artifactory (~> 3.0)
+ aws-sdk-s3 (~> 1.0)
+ babosa (>= 1.0.3, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored
+ commander (~> 4.6)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 4.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (~> 1.0)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (~> 1.0)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-apis-androidpublisher_v3 (~> 0.3)
+ google-apis-playcustomapp_v1 (~> 0.1)
+ google-cloud-storage (~> 1.31)
+ highline (~> 2.0)
+ json (< 3.0.0)
+ jwt (>= 2.1.0, < 3)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multipart-post (>= 2.0.0, < 3.0.0)
+ naturally (~> 2.2)
+ optparse (~> 0.1.1)
+ plist (>= 3.1.0, < 4.0.0)
+ rubyzip (>= 2.0.0, < 3.0.0)
+ security (= 0.1.3)
+ simctl (~> 1.6.3)
+ terminal-notifier (>= 2.0.0, < 3.0.0)
+ terminal-table (>= 1.4.5, < 2.0.0)
+ tty-screen (>= 0.6.3, < 1.0.0)
+ tty-spinner (>= 0.8.0, < 1.0.0)
+ word_wrap (~> 1.0.0)
+ xcodeproj (>= 1.13.0, < 2.0.0)
+ xcpretty (~> 0.3.0)
+ xcpretty-travis-formatter (>= 0.0.3)
+ ffi (1.15.5)
+ fourflusher (2.3.1)
+ fuzzy_match (2.0.4)
+ gh_inspector (1.1.3)
+ google-apis-androidpublisher_v3 (0.42.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-core (0.11.0)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (>= 0.16.2, < 2.a)
+ httpclient (>= 2.8.1, < 3.a)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.a)
+ rexml
+ webrick
+ google-apis-iamcredentials_v1 (0.17.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-playcustomapp_v1 (0.13.0)
+ google-apis-core (>= 0.11.0, < 2.a)
+ google-apis-storage_v1 (0.19.0)
+ google-apis-core (>= 0.9.0, < 2.a)
+ google-cloud-core (1.6.0)
+ google-cloud-env (~> 1.0)
+ google-cloud-errors (~> 1.0)
+ google-cloud-env (1.6.0)
+ faraday (>= 0.17.3, < 3.0)
+ google-cloud-errors (1.3.1)
+ google-cloud-storage (1.44.0)
+ addressable (~> 2.8)
+ digest-crc (~> 0.4)
+ google-apis-iamcredentials_v1 (~> 0.1)
+ google-apis-storage_v1 (~> 0.19.0)
+ google-cloud-core (~> 1.6)
+ googleauth (>= 0.16.2, < 2.a)
+ mini_mime (~> 1.0)
+ googleauth (1.5.2)
+ faraday (>= 0.17.3, < 3.a)
+ jwt (>= 1.4, < 3.0)
+ memoist (~> 0.16)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (>= 0.16, < 2.a)
+ highline (2.0.3)
+ http-cookie (1.0.5)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ i18n (1.14.1)
+ concurrent-ruby (~> 1.0)
+ jmespath (1.6.2)
+ json (2.6.3)
+ jwt (2.7.0)
+ memoist (0.16.2)
+ mini_magick (4.12.0)
+ mini_mime (1.1.2)
+ minitest (5.18.0)
+ molinillo (0.8.0)
+ multi_json (1.15.0)
+ multipart-post (2.3.0)
+ nanaimo (0.3.0)
+ nap (1.1.0)
+ naturally (2.2.1)
+ netrc (0.11.0)
+ optparse (0.1.1)
+ os (1.1.4)
+ plist (3.7.0)
+ public_suffix (4.0.7)
+ rake (13.0.6)
+ representable (3.2.0)
+ declarative (< 0.1.0)
+ trailblazer-option (>= 0.1.1, < 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rexml (3.2.5)
+ rouge (2.0.7)
+ ruby-macho (2.5.1)
+ ruby2_keywords (0.0.5)
+ rubyzip (2.3.2)
+ security (0.1.3)
+ signet (0.17.0)
+ addressable (~> 2.8)
+ faraday (>= 0.17.5, < 3.a)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.10)
+ CFPropertyList
+ naturally
+ terminal-notifier (2.0.0)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ trailblazer-option (0.1.2)
+ tty-cursor (0.7.1)
+ tty-screen (0.8.1)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ typhoeus (1.4.0)
+ ethon (>= 0.9.0)
+ tzinfo (2.0.6)
+ concurrent-ruby (~> 1.0)
+ uber (0.1.0)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.8.2)
+ unicode-display_width (1.8.0)
+ webrick (1.8.1)
+ word_wrap (1.0.0)
+ xcodeproj (1.22.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.3.0)
+ rexml (~> 3.2.4)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.1)
+ xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+ x86_64-darwin-22
+
+DEPENDENCIES
+ cocoapods
+ fastlane
+
+BUNDLED WITH
+ 2.4.13
diff --git a/ios/Podfile b/ios/Podfile
index 8c9d13e5..6579a672 100644
--- a/ios/Podfile
+++ b/ios/Podfile
@@ -1,5 +1,5 @@
# Uncomment this line to define a global platform for your project
-# platform :ios, '11.0'
+platform :ios, '16.0'
# CocoaPods analytics sends network stats synchronously affecting flutter build latency.
ENV['COCOAPODS_DISABLE_STATS'] = 'true'
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 0c86e09e..8c6bfc9f 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -48,14 +48,16 @@ PODS:
- Flutter
- flutter_native_splash (0.0.1):
- Flutter
+ - flutter_pdfview (1.0.2):
+ - Flutter
+ - flutter_secure_storage (6.0.0):
+ - Flutter
- fluttertoast (0.0.2):
- Flutter
- Toast
- FMDB (2.7.5):
- FMDB/standard (= 2.7.5)
- FMDB/standard (2.7.5)
- - in_app_review (0.2.0):
- - Flutter
- integration_test (0.0.1):
- Flutter
- local_auth_ios (0.0.1):
@@ -67,9 +69,9 @@ PODS:
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- - pdfx (1.0.0):
+ - permission_handler_apple (9.1.0):
- Flutter
- - permission_handler_apple (9.0.4):
+ - printing (1.0.0):
- Flutter
- ReachabilitySwift (5.0.0)
- receive_sharing_intent (0.0.1):
@@ -79,16 +81,15 @@ PODS:
- SDWebImage/Core (5.13.5)
- share_plus (0.0.1):
- Flutter
- - shared_preferences_foundation (0.0.1):
- - Flutter
- - FlutterMacOS
- - sqflite (0.0.2):
+ - sqflite (0.0.3):
- Flutter
- FMDB (>= 2.7.5)
- SwiftyGif (5.4.3)
- Toast (4.0.0)
- url_launcher_ios (0.0.1):
- Flutter
+ - webview_flutter_wkwebview (0.0.1):
+ - Flutter
- WeScan (1.7.0)
DEPENDENCIES:
@@ -100,20 +101,21 @@ DEPENDENCIES:
- flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`)
- flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
+ - flutter_pdfview (from `.symlinks/plugins/flutter_pdfview/ios`)
+ - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`)
- fluttertoast (from `.symlinks/plugins/fluttertoast/ios`)
- - in_app_review (from `.symlinks/plugins/in_app_review/ios`)
- integration_test (from `.symlinks/plugins/integration_test/ios`)
- local_auth_ios (from `.symlinks/plugins/local_auth_ios/ios`)
- open_filex (from `.symlinks/plugins/open_filex/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/ios`)
- - pdfx (from `.symlinks/plugins/pdfx/ios`)
+ - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
+ - printing (from `.symlinks/plugins/printing/ios`)
- receive_sharing_intent (from `.symlinks/plugins/receive_sharing_intent/ios`)
- share_plus (from `.symlinks/plugins/share_plus/ios`)
- - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/ios`)
- sqflite (from `.symlinks/plugins/sqflite/ios`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
+ - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/ios`)
SPEC REPOS:
trunk:
@@ -143,10 +145,12 @@ EXTERNAL SOURCES:
:path: ".symlinks/plugins/flutter_local_notifications/ios"
flutter_native_splash:
:path: ".symlinks/plugins/flutter_native_splash/ios"
+ flutter_pdfview:
+ :path: ".symlinks/plugins/flutter_pdfview/ios"
+ flutter_secure_storage:
+ :path: ".symlinks/plugins/flutter_secure_storage/ios"
fluttertoast:
:path: ".symlinks/plugins/fluttertoast/ios"
- in_app_review:
- :path: ".symlinks/plugins/in_app_review/ios"
integration_test:
:path: ".symlinks/plugins/integration_test/ios"
local_auth_ios:
@@ -156,24 +160,24 @@ EXTERNAL SOURCES:
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
- :path: ".symlinks/plugins/path_provider_foundation/ios"
- pdfx:
- :path: ".symlinks/plugins/pdfx/ios"
+ :path: ".symlinks/plugins/path_provider_foundation/darwin"
permission_handler_apple:
:path: ".symlinks/plugins/permission_handler_apple/ios"
+ printing:
+ :path: ".symlinks/plugins/printing/ios"
receive_sharing_intent:
:path: ".symlinks/plugins/receive_sharing_intent/ios"
share_plus:
:path: ".symlinks/plugins/share_plus/ios"
- shared_preferences_foundation:
- :path: ".symlinks/plugins/shared_preferences_foundation/ios"
sqflite:
:path: ".symlinks/plugins/sqflite/ios"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
+ webview_flutter_wkwebview:
+ :path: ".symlinks/plugins/webview_flutter_wkwebview/ios"
SPEC CHECKSUMS:
- connectivity_plus: 413a8857dd5d9f1c399a39130850d02fe0feaf7e
+ connectivity_plus: 07c49e96d7fc92bc9920617b83238c4d178b446a
device_info_plus: e5c5da33f982a436e103237c0c85f9031142abed
DKImagePickerController: b512c28220a2b8ac7419f21c491fc8534b7601ac
DKPhotoGallery: fdfad5125a9fdda9cc57df834d49df790dbb4179
@@ -183,27 +187,28 @@ SPEC CHECKSUMS:
flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069
flutter_local_notifications: 0c0b1ae97e741e1521e4c1629a459d04b9aec743
flutter_native_splash: 52501b97d1c0a5f898d687f1646226c1f93c56ef
- fluttertoast: eb263d302cc92e04176c053d2385237e9f43fad0
+ flutter_pdfview: 25f53dd6097661e6395b17de506e6060585946bd
+ flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
+ fluttertoast: fafc4fa4d01a6a9e4f772ecd190ffa525e9e2d9c
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
- in_app_review: 318597b3a06c22bb46dc454d56828c85f444f99d
- integration_test: a1e7d09bd98eca2fc37aefd79d4f41ad37bdbbe5
- local_auth_ios: 0d333dde7780f669e66f19d2ff6005f3ea84008d
+ integration_test: 13825b8a9334a850581300559b8839134b124670
+ local_auth_ios: c6cf091ded637a88f24f86a8875d8b0f526e2605
open_filex: 6e26e659846ec990262224a12ef1c528bb4edbe4
- package_info_plus: 6c92f08e1f853dc01228d6f553146438dafcd14e
- path_provider_foundation: 37748e03f12783f9de2cb2c4eadfaa25fe6d4852
- pdfx: 7b876b09de8b7a0bf444a4f82b439ffcff4ee1ec
- permission_handler_apple: 44366e37eaf29454a1e7b1b7d736c2cceaeb17ce
+ package_info_plus: fd030dabf36271f146f1f3beacd48f564b0f17f7
+ path_provider_foundation: eaf5b3e458fc0e5fbb9940fb09980e853fe058b8
+ permission_handler_apple: 8f116445eff3c0e7c65ad60f5fef5490aa94b4e4
+ printing: 233e1b73bd1f4a05615548e9b5a324c98588640b
ReachabilitySwift: 985039c6f7b23a1da463388634119492ff86c825
receive_sharing_intent: c0d87310754e74c0f9542947e7cbdf3a0335a3b1
SDWebImage: 23d714cd599354ee7906dbae26dff89b421c4370
share_plus: 056a1e8ac890df3e33cb503afffaf1e9b4fbae68
- shared_preferences_foundation: 297b3ebca31b34ec92be11acd7fb0ba932c822ca
- sqflite: 6d358c025f5b867b29ed92fc697fd34924e11904
+ sqflite: 31f7eba61e3074736dff8807a9b41581e4f7f15a
SwiftyGif: 6c3eafd0ce693cad58bb63d2b2fb9bacb8552780
Toast: 91b396c56ee72a5790816f40d3a94dd357abc196
- url_launcher_ios: fb12c43172927bb5cf75aeebd073f883801f1993
+ url_launcher_ios: 08a3dfac5fb39e8759aeb0abbd5d9480f30fc8b4
+ webview_flutter_wkwebview: 2e2d318f21a5e036e2c3f26171342e95908bd60a
WeScan: fed582f6c38014d529afb5aa9ffd1bad38fc72b7
-PODFILE CHECKSUM: 7daa35cc908d9fba025075df27cb57a1ba1ebf13
+PODFILE CHECKSUM: 9223e24dafa668ae1a7107242c9acf3e2044b2a2
-COCOAPODS: 1.11.3
+COCOAPODS: 1.12.1
diff --git a/ios/README.md b/ios/README.md
new file mode 100644
index 00000000..1c8f6295
--- /dev/null
+++ b/ios/README.md
@@ -0,0 +1,174 @@
+
+
+
+
+
+
+
+
iOS Building of Paperless Mobile
+
+
+ Describe how-to package, build and deploy an iOS build !
+
+
+
+
+
+
+
+
+
+
+
+## Important Notice
+An **active Apple Developper Subscription** (*recurring cost*) is needed to publish on Apple Testflight and Apple Store ! Your app will also be reviewed by Apple Validation Team before made available on both.
+A Macbook is also needed as **Xcode is only available on macOS**.
+
+
+## Getting Started
+
+To build a release, please follow these steps:
+
+### Prerequisites
+* We assume here that you already followed pre-requisites from main README.
+* macOS
+* Brew
+* XCode (min. 14.3)
+* XCode Command Line Tools
+* Ruby (with rbenv)
+
+## iOS Specifics
+### Launcher Icons
+> Icons with alpha channel are not allowed in the Apple App Store.
+
+So we need to re-generate them without alpha chanel otherwise our builds will be rejected automatically.
+We will use the flutter package `flutter_launcher_icons`
+
+> These steps needs to be done each time we want to change icon of the application
+
+1. Install the package as a dev dependency
+```sh
+dart pub add dev:flutter_launcher_icons
+```
+2. We now need to add configuration to `flutter_launcher_icons.yaml`
+```sh
+flutter_launcher_icons:
+ android: true
+ ios: true
+ remove_alpha_ios: true
+ image_path: 'assets/logos/paperless_logo_green.png'
+```
+3. Run the package to generate icons
+```sh
+dart run flutter_launcher_icons
+```
+
+## Developper Environment Setup
+### Env Vars
+**fastlane** requires some environment variables set up to run correctly. *In particular, having your locale not set to a UTF-8 locale will cause issues with building and uploading your build.* In your shell profile add the following lines:
+```sh
+export LC_ALL=en_US.UTF-8
+export LANG=en_US.UTF-8
+```
+You can find your shell profile at `~/.bashrc, ~/.bash_profile, ~/.profile or ~/.zshrc` depending on your system.
+
+With nano & ZSH
+```sh
+nano ~/.zshrc
+```
+### Installation of Xcode
+To proceed installation, search Xcode on AppStore and install it.
+### Installation of Xcode Command Line Tools
+To proceed installation, execute this command in your terminal:
+```sh
+xcode-select --install
+```
+### Install of Ruby Manager (rbenv)
+```sh
+brew install rbenv ruby-build
+```
+You now need to load rbenv in your shell
+```sh
+rbenv init
+```
+Confirm your installation by using rbenv-doctor
+```sh
+curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-doctor | bash
+```
+To check fixed version of project
+```sh
+rbenv versions
+```
+## Installing of Ruby Gems
+We will now install ruby gems
+```sh
+gem install bundler
+```
+And install/update gems
+```sh
+bundle update
+```
+
+## Deployment using Fastlane
+Reference: https://docs.fastlane.tools/getting-started/ios/setup/
+Beta deployement: https://docs.fastlane.tools/getting-started/ios/beta-deployment/
+
+## CI/CD
+```sh
+bundle install
+bundle exec fastlane [lane]
+bundle exec fastlane ios sync_match
+```
+
+## Contributor cheatsheet
+### Ruby
+Installation of latest stable release of ruby with rbenv
+```sh
+rbenv install $(rbenv install -l | grep -v - | tail -1)
+#rbenv install -l 2>&1 | grep '^\d' | sort -n | tail -n 1 > .ruby-version # Pick the most recent stable Ruby
+```
+
+Fix the version of project to a new version
+```sh
+rbenv local [version]
+```
+Content of `./Gemfile`
+```
+source "https://rubygems.org"
+
+gem "fastlane"
+```
+Update fastlane gem only
+```sh
+bundle update fastlane
+```
+### Fastlane
+Initialisation of fastlane
+```sh
+bundle exec fastlane init
+```
+List all builds
+```sh
+bundle exec fastlane pilot builds
+```
+List of testers
+```sh
+bundle exec fastlane pilot list
+```
+Test if authenticated with Git/Github
+```sh
+ssh -T git@github.com
+```
+
+```sh
+bundle exec flutter build ipa --export-method development
+bundle exec flutter upgrade
+bundle exec dart fix --dry-run
+bundle exec gem install cocoapods
+bundle exec pod install
+bundle exec pod update
+bundle exec pod --version
+bundle exec flutter pub get
+bundle exec fastlane beta
+```
+### Work in Progress...
\ No newline at end of file
diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj
index 1653b153..1a6779b6 100644
--- a/ios/Runner.xcodeproj/project.pbxproj
+++ b/ios/Runner.xcodeproj/project.pbxproj
@@ -225,6 +225,7 @@
97C146E61CF9000F007C117D /* Project object */ = {
isa = PBXProject;
attributes = {
+ BuildIndependentTargetsInParallel = YES;
LastSwiftUpdateCheck = 1400;
LastUpgradeCheck = 1300;
ORGANIZATIONNAME = "";
@@ -239,7 +240,7 @@
};
};
buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */;
- compatibilityVersion = "Xcode 9.3";
+ compatibilityVersion = "Xcode 14.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
@@ -431,6 +432,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -449,7 +451,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -462,20 +464,27 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
+ CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = "";
+ DEVELOPMENT_TEAM = "$(APPLE_STORE_CONNECT_TEAM_ID)";
+ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = "$(APPLE_STORE_CONNECT_TEAM_ID)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = "Paperless Mobile";
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "de.astubenbord.paperless-mobile";
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development de.astubenbord.paperless-mobile";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
@@ -492,9 +501,10 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = receive_sharing_intent/receive_sharing_intent.entitlements;
- CODE_SIGN_STYLE = Automatic;
+ CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = "";
+ DEVELOPMENT_TEAM = "$(APPLE_STORE_CONNECT_TEAM_ID)";
+ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = "$(APPLE_STORE_CONNECT_TEAM_ID)";
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = receive_sharing_intent/Info.plist;
@@ -511,6 +521,8 @@
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "de.astubenbord.paperless-mobile.receive-sharing-intent";
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development de.astubenbord.paperless-mobile.receive-sharing-intent";
SKIP_INSTALL = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_EMIT_LOC_STRINGS = YES;
@@ -530,9 +542,10 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = receive_sharing_intent/receive_sharing_intent.entitlements;
- CODE_SIGN_STYLE = Automatic;
+ CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
- DEVELOPMENT_TEAM = "";
+ DEVELOPMENT_TEAM = "$(APPLE_STORE_CONNECT_TEAM_ID)";
+ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = "$(APPLE_STORE_CONNECT_TEAM_ID)";
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = receive_sharing_intent/Info.plist;
@@ -548,6 +561,8 @@
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "de.astubenbord.paperless-mobile.receive-sharing-intent";
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development de.astubenbord.paperless-mobile.receive-sharing-intent";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
@@ -565,9 +580,10 @@
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = receive_sharing_intent/receive_sharing_intent.entitlements;
- CODE_SIGN_STYLE = Automatic;
+ CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "";
+ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = "$(APPLE_STORE_CONNECT_TEAM_ID)";
GCC_C_LANGUAGE_STANDARD = gnu11;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = receive_sharing_intent/Info.plist;
@@ -583,6 +599,8 @@
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = "de.astubenbord.paperless-mobile.receive-sharing-intent";
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development de.astubenbord.paperless-mobile.receive-sharing-intent";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
@@ -613,6 +631,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -637,7 +656,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
@@ -668,6 +687,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
@@ -686,7 +706,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
- IPHONEOS_DEPLOYMENT_TARGET = 11.0;
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SUPPORTED_PLATFORMS = iphoneos;
@@ -701,20 +721,27 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
+ CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = "";
+ DEVELOPMENT_TEAM = "$(APPLE_STORE_CONNECT_TEAM_ID)";
+ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = "$(APPLE_STORE_CONNECT_TEAM_ID)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = "Paperless Mobile";
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "de.astubenbord.paperless-mobile";
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development de.astubenbord.paperless-mobile";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
@@ -726,20 +753,27 @@
isa = XCBuildConfiguration;
baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
buildSettings = {
- ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements;
+ CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)";
- DEVELOPMENT_TEAM = "";
+ DEVELOPMENT_TEAM = "$(APPLE_STORE_CONNECT_TEAM_ID)";
+ "DEVELOPMENT_TEAM[sdk=iphoneos*]" = "$(APPLE_STORE_CONNECT_TEAM_ID)";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
+ INFOPLIST_KEY_CFBundleDisplayName = "Paperless Mobile";
+ INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
+ IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "de.astubenbord.paperless-mobile";
PRODUCT_NAME = "$(TARGET_NAME)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development de.astubenbord.paperless-mobile";
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
SWIFT_VERSION = 5.0;
VERSIONING_SYSTEM = "apple-generic";
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
index d36b1fab..53611299 100644
--- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
+++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json
@@ -1,122 +1,122 @@
{
"images" : [
{
- "size" : "20x20",
- "idiom" : "iphone",
"filename" : "Icon-App-20x20@2x.png",
- "scale" : "2x"
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "20x20"
},
{
- "size" : "20x20",
- "idiom" : "iphone",
"filename" : "Icon-App-20x20@3x.png",
- "scale" : "3x"
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "20x20"
},
{
- "size" : "29x29",
- "idiom" : "iphone",
"filename" : "Icon-App-29x29@1x.png",
- "scale" : "1x"
+ "idiom" : "iphone",
+ "scale" : "1x",
+ "size" : "29x29"
},
{
- "size" : "29x29",
- "idiom" : "iphone",
"filename" : "Icon-App-29x29@2x.png",
- "scale" : "2x"
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "29x29"
},
{
- "size" : "29x29",
- "idiom" : "iphone",
"filename" : "Icon-App-29x29@3x.png",
- "scale" : "3x"
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "29x29"
},
{
- "size" : "40x40",
- "idiom" : "iphone",
"filename" : "Icon-App-40x40@2x.png",
- "scale" : "2x"
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "40x40"
},
{
- "size" : "40x40",
- "idiom" : "iphone",
"filename" : "Icon-App-40x40@3x.png",
- "scale" : "3x"
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "40x40"
},
{
- "size" : "60x60",
- "idiom" : "iphone",
"filename" : "Icon-App-60x60@2x.png",
- "scale" : "2x"
+ "idiom" : "iphone",
+ "scale" : "2x",
+ "size" : "60x60"
},
{
- "size" : "60x60",
- "idiom" : "iphone",
"filename" : "Icon-App-60x60@3x.png",
- "scale" : "3x"
+ "idiom" : "iphone",
+ "scale" : "3x",
+ "size" : "60x60"
},
{
- "size" : "20x20",
- "idiom" : "ipad",
"filename" : "Icon-App-20x20@1x.png",
- "scale" : "1x"
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "20x20"
},
{
- "size" : "20x20",
- "idiom" : "ipad",
"filename" : "Icon-App-20x20@2x.png",
- "scale" : "2x"
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "20x20"
},
{
- "size" : "29x29",
- "idiom" : "ipad",
"filename" : "Icon-App-29x29@1x.png",
- "scale" : "1x"
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "29x29"
},
{
- "size" : "29x29",
- "idiom" : "ipad",
"filename" : "Icon-App-29x29@2x.png",
- "scale" : "2x"
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "29x29"
},
{
- "size" : "40x40",
- "idiom" : "ipad",
"filename" : "Icon-App-40x40@1x.png",
- "scale" : "1x"
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "40x40"
},
{
- "size" : "40x40",
- "idiom" : "ipad",
"filename" : "Icon-App-40x40@2x.png",
- "scale" : "2x"
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "40x40"
},
{
- "size" : "76x76",
- "idiom" : "ipad",
"filename" : "Icon-App-76x76@1x.png",
- "scale" : "1x"
+ "idiom" : "ipad",
+ "scale" : "1x",
+ "size" : "76x76"
},
{
- "size" : "76x76",
- "idiom" : "ipad",
"filename" : "Icon-App-76x76@2x.png",
- "scale" : "2x"
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "76x76"
},
{
- "size" : "83.5x83.5",
- "idiom" : "ipad",
"filename" : "Icon-App-83.5x83.5@2x.png",
- "scale" : "2x"
+ "idiom" : "ipad",
+ "scale" : "2x",
+ "size" : "83.5x83.5"
},
{
- "size" : "1024x1024",
- "idiom" : "ios-marketing",
"filename" : "Icon-App-1024x1024@1x.png",
- "scale" : "1x"
+ "idiom" : "ios-marketing",
+ "scale" : "1x",
+ "size" : "1024x1024"
}
],
"info" : {
- "version" : 1,
- "author" : "xcode"
+ "author" : "xcode",
+ "version" : 1
}
}
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png
index 04baef2e..656a539c 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png
index 2deb5cfc..8a554473 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png
index 89d1d460..8915e2ef 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png
index 68003bdc..e2a6cfe9 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png
index 83804fbb..67330407 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png
index 8cbac360..55eb22a6 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png
index 27a1ccb6..34b7a143 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png
index 89d1d460..8915e2ef 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png
index 8468f1e4..7c321c90 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png
index 2fba5fe8..f46fe317 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png
deleted file mode 100644
index 8fa987f0..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png
deleted file mode 100644
index 2e740c5b..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-50x50@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png
deleted file mode 100644
index daaa6541..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@1x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png
deleted file mode 100644
index 066d126f..00000000
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-57x57@2x.png and /dev/null differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png
index 2fba5fe8..f46fe317 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png
index a3d1245f..2aca2d45 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png
index 50614411..1678a863 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png
index bad9f84d..991a080a 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ
diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png
index ae6ab370..de678ae8 100644
Binary files a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png and b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index dde5ed23..6063c833 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -38,6 +38,8 @@
$(FLUTTER_BUILD_NUMBER)
LSRequiresIPhoneOS
+ NSCameraUsageDescription
+ Allow this app access to your camera to scan documents.
NSFaceIDUsageDescription
Allow this app to use FaceID to secure your login credentials.
NSPhotoLibraryUsageDescription
@@ -50,6 +52,8 @@
Main
UIStatusBarHidden
+ UIStatusBarStyle
+
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
@@ -63,11 +67,9 @@
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
- UIViewControllerBasedStatusBarAppearance
-
- NSCameraUsageDescription
- Allow this app access to your camera to scan documents.
UISupportsDocumentBrowser
+ UIViewControllerBasedStatusBarAppearance
+
diff --git a/ios/Runner/Runner.entitlements b/ios/Runner/Runner.entitlements
index eca22488..86c22e8a 100644
--- a/ios/Runner/Runner.entitlements
+++ b/ios/Runner/Runner.entitlements
@@ -4,7 +4,7 @@
com.apple.security.application-groups
- group.de.astubenbord.paperless-mobile
+ group.de.astubenbord.paperless
diff --git a/ios/fastlane/.env.dummy b/ios/fastlane/.env.dummy
new file mode 100644
index 00000000..0a879914
--- /dev/null
+++ b/ios/fastlane/.env.dummy
@@ -0,0 +1,9 @@
+APPLE_ID = ''
+APPLE_STORE_CONNECT_TEAM_ID = ''
+APPLE_DEVELOPER_PORTAL_TEAM_ID = ''
+APPLE_STORE_CONNECT_KEY_ID = ''
+APPLE_STORE_CONNECT_ISSUER_ID = ''
+APPLE_STORE_CONNECT_KEY_FILEPATH = ''
+MATCH_REPO_GIT_URL = ''
+MATCH_PASSWORD = ''
+MATCH_GIT_BASIC_AUTHORIZATION = '' # echo -n your_github_username:your_personal_access_token | base64
\ No newline at end of file
diff --git a/ios/fastlane/.gitignore b/ios/fastlane/.gitignore
new file mode 100644
index 00000000..980444ac
--- /dev/null
+++ b/ios/fastlane/.gitignore
@@ -0,0 +1,7 @@
+# Ignore env files
+.env*
+# Keep the dummy file
+!.env.dummy
+
+# Ignore key files
+keys/*
\ No newline at end of file
diff --git a/ios/fastlane/Appfile b/ios/fastlane/Appfile
new file mode 100644
index 00000000..cd259e79
--- /dev/null
+++ b/ios/fastlane/Appfile
@@ -0,0 +1,8 @@
+app_identifier("de.astubenbord.paperless-mobile") # The bundle identifier of your app
+apple_id("ENV['APPLE_ID']") # Your Apple Developer Portal username
+
+itc_team_id(ENV['APPLE_STORE_CONNECT_TEAM_ID']) # App Store Connect Team ID
+team_id(ENV['APPLE_DEVELOPER_PORTAL_TEAM_ID']) # Developer Portal Team ID
+
+# For more information about the Appfile, see:
+# https://docs.fastlane.tools/advanced/#appfile
diff --git a/ios/fastlane/Fastfile b/ios/fastlane/Fastfile
new file mode 100644
index 00000000..4bf8bbf3
--- /dev/null
+++ b/ios/fastlane/Fastfile
@@ -0,0 +1,85 @@
+# This file contains the fastlane.tools configuration
+# You can find the documentation at https://docs.fastlane.tools
+#
+# For a list of all available actions, check out
+#
+# https://docs.fastlane.tools/actions
+#
+# For a list of all available plugins, check out
+#
+# https://docs.fastlane.tools/plugins/available-plugins
+#
+
+# Uncomment the line if you want fastlane to automatically update itself
+# update_fastlane
+
+# Opt out from analytics
+opt_out_usage
+
+# Default platform
+default_platform(:ios)
+
+# For iOS platform
+platform :ios do
+ # Increment build number before running a lane
+ before_all do
+ #increment_build_number(xcodeproj: "Runner.xcodeproj")
+ end
+
+ # Sync match data
+ lane :sync_match do
+ match(type: "appstore", readonly: true)
+ match(type: "development", readonly: true)
+ end
+
+ # Send a new TestFlight build
+ desc "Push a new beta build to TestFlight"
+ lane :beta do
+
+ # Apple Store Connect
+ api_key = app_store_connect_api_key(
+ key_id: ENV['APPLE_STORE_CONNECT_KEY_ID'],
+ issuer_id: ENV['APPLE_STORE_CONNECT_ISSUER_ID'],
+ key_filepath: ENV['APPLE_STORE_CONNECT_KEY_FILEPATH'],
+ duration: 1200, # optional (maximum 1200)
+ in_house: false # optional but may be required if using match/sigh
+ )
+
+ # Generate changelog from commits
+ changelog_from_git_commits
+
+ # Synchronization of Signing Certs
+ sync_code_signing(
+ type: "appstore",
+ readonly: true,
+ app_identifier: [
+ "de.astubenbord.paperless-mobile",
+ "de.astubenbord.paperless-mobile.receive-sharing-intent"
+ ]
+ )
+
+ # Update of Project Team
+ update_project_team(
+ path: "Runner.xcodeproj",
+ teamid: ENV['APPLE_DEVELOPER_PORTAL_TEAM_ID']
+ )
+
+ # Build of app
+ build_app(
+ workspace: "Runner.xcworkspace",
+ scheme: "Runner",
+ clean: true,
+ export_method: "app-store"
+ )
+
+ # Send to TestFlight
+ upload_to_testflight(api_key: api_key)
+ end
+
+ # Once a lane finished
+ after_all do |lane|
+ say("Successfully finished deployment (#{lane})!")
+ end
+
+# End of iOS platform
+end
diff --git a/ios/fastlane/Matchfile b/ios/fastlane/Matchfile
new file mode 100644
index 00000000..f1ec7a13
--- /dev/null
+++ b/ios/fastlane/Matchfile
@@ -0,0 +1,16 @@
+git_url(ENV['MATCH_REPO_GIT_URL'])
+
+storage_mode("git")
+
+type("development") # The default type, can be: appstore, adhoc, enterprise or development
+
+app_identifier([
+ "de.astubenbord.paperless-mobile",
+ "de.astubenbord.paperless-mobile.receive-sharing-intent"
+])
+username(ENV['APPLE_ID']) # Your Apple Developer Portal username
+
+# For all available options run `fastlane match --help`
+# Remove the # in the beginning of the line to enable the other options
+
+# The docs are available on https://docs.fastlane.tools/actions/match
diff --git a/ios/fastlane/README.md b/ios/fastlane/README.md
new file mode 100644
index 00000000..a18fb227
--- /dev/null
+++ b/ios/fastlane/README.md
@@ -0,0 +1,40 @@
+fastlane documentation
+----
+
+# Installation
+
+Make sure you have the latest version of the Xcode command line tools installed:
+
+```sh
+xcode-select --install
+```
+
+For _fastlane_ installation instructions, see [Installing _fastlane_](https://docs.fastlane.tools/#installing-fastlane)
+
+# Available Actions
+
+## iOS
+
+### ios sync_match
+
+```sh
+[bundle exec] fastlane ios sync_match
+```
+
+
+
+### ios beta
+
+```sh
+[bundle exec] fastlane ios beta
+```
+
+Push a new beta build to TestFlight
+
+----
+
+This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
+
+More information about _fastlane_ can be found on [fastlane.tools](https://fastlane.tools).
+
+The documentation of _fastlane_ can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
diff --git a/ios/receive_sharing_intent/receive_sharing_intent.entitlements b/ios/receive_sharing_intent/receive_sharing_intent.entitlements
index eca22488..86c22e8a 100644
--- a/ios/receive_sharing_intent/receive_sharing_intent.entitlements
+++ b/ios/receive_sharing_intent/receive_sharing_intent.entitlements
@@ -4,7 +4,7 @@
com.apple.security.application-groups
- group.de.astubenbord.paperless-mobile
+ group.de.astubenbord.paperless
diff --git a/packages/paperless_document_scanner/example/ios/Flutter/Debug.xcconfig b/packages/paperless_document_scanner/example/ios/Flutter/Debug.xcconfig
index 592ceee8..ec97fc6f 100644
--- a/packages/paperless_document_scanner/example/ios/Flutter/Debug.xcconfig
+++ b/packages/paperless_document_scanner/example/ios/Flutter/Debug.xcconfig
@@ -1 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"
#include "Generated.xcconfig"
diff --git a/packages/paperless_document_scanner/example/ios/Flutter/Release.xcconfig b/packages/paperless_document_scanner/example/ios/Flutter/Release.xcconfig
index 592ceee8..c4855bfe 100644
--- a/packages/paperless_document_scanner/example/ios/Flutter/Release.xcconfig
+++ b/packages/paperless_document_scanner/example/ios/Flutter/Release.xcconfig
@@ -1 +1,2 @@
+#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"
#include "Generated.xcconfig"
diff --git a/pubspec.lock b/pubspec.lock
index eeb8838b..7db09401 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -233,6 +233,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "2.0.3"
+ cli_util:
+ dependency: transitive
+ description:
+ name: cli_util
+ sha256: b8db3080e59b2503ca9e7922c3df2072cf13992354d5e944074ffa836fba43b7
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.4.0"
clock:
dependency: transitive
description:
@@ -572,6 +580,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.0"
+ flutter_launcher_icons:
+ dependency: "direct dev"
+ description:
+ name: flutter_launcher_icons
+ sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea"
+ url: "https://pub.dev"
+ source: hosted
+ version: "0.13.1"
flutter_lints:
dependency: "direct dev"
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index b39da968..92d9736d 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -113,6 +113,7 @@ dev_dependencies:
hive_generator: ^2.0.0
mock_server:
path: packages/mock_server
+ flutter_launcher_icons: ^0.13.1
# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec
diff --git a/resources/get_it_on_apple_store_en.svg b/resources/get_it_on_apple_store_en.svg
new file mode 100755
index 00000000..072b425a
--- /dev/null
+++ b/resources/get_it_on_apple_store_en.svg
@@ -0,0 +1,46 @@
+
diff --git a/resources/get_it_on_testflight_en.png b/resources/get_it_on_testflight_en.png
new file mode 100644
index 00000000..ed102c33
Binary files /dev/null and b/resources/get_it_on_testflight_en.png differ