瀏覽代碼

fix(mobile): Generate 1 splash screen on Android (#1443)

martyfuhry 2 年之前
父節點
當前提交
00630bd4a3
共有 29 個文件被更改,包括 326 次插入158 次删除
  1. 二進制
      mobile/android/app/src/main/res/drawable-hdpi/android12splash.png
  2. 二進制
      mobile/android/app/src/main/res/drawable-mdpi/android12splash.png
  3. 二進制
      mobile/android/app/src/main/res/drawable-night-hdpi/android12splash.png
  4. 二進制
      mobile/android/app/src/main/res/drawable-night-mdpi/android12splash.png
  5. 二進制
      mobile/android/app/src/main/res/drawable-night-xhdpi/android12splash.png
  6. 二進制
      mobile/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png
  7. 二進制
      mobile/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png
  8. 二進制
      mobile/android/app/src/main/res/drawable-v21/background.png
  9. 3 9
      mobile/android/app/src/main/res/drawable-v21/launch_background.xml
  10. 二進制
      mobile/android/app/src/main/res/drawable-xhdpi/android12splash.png
  11. 二進制
      mobile/android/app/src/main/res/drawable-xxhdpi/android12splash.png
  12. 二進制
      mobile/android/app/src/main/res/drawable-xxxhdpi/android12splash.png
  13. 二進制
      mobile/android/app/src/main/res/drawable/background.png
  14. 3 9
      mobile/android/app/src/main/res/drawable/launch_background.xml
  15. 19 0
      mobile/android/app/src/main/res/values-night-v31/styles.xml
  16. 19 0
      mobile/android/app/src/main/res/values-v31/styles.xml
  17. 3 0
      mobile/android/app/src/main/res/values/styles.xml
  18. 二進制
      mobile/assets/immich-logo-no-outline-android12.png
  19. 137 0
      mobile/flutter_native_splash.yaml
  20. 5 5
      mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json
  21. 二進制
      mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png
  22. 二進制
      mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png
  23. 二進制
      mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png
  24. 11 4
      mobile/ios/Runner/Base.lproj/LaunchScreen.storyboard
  25. 94 102
      mobile/ios/Runner/Info.plist
  26. 5 23
      mobile/lib/shared/views/splash_screen.dart
  27. 4 1
      mobile/makefile
  28. 18 4
      mobile/pubspec.lock
  29. 5 1
      mobile/pubspec.yaml

二進制
mobile/android/app/src/main/res/drawable-hdpi/android12splash.png


二進制
mobile/android/app/src/main/res/drawable-mdpi/android12splash.png


二進制
mobile/android/app/src/main/res/drawable-night-hdpi/android12splash.png


二進制
mobile/android/app/src/main/res/drawable-night-mdpi/android12splash.png


二進制
mobile/android/app/src/main/res/drawable-night-xhdpi/android12splash.png


二進制
mobile/android/app/src/main/res/drawable-night-xxhdpi/android12splash.png


二進制
mobile/android/app/src/main/res/drawable-night-xxxhdpi/android12splash.png


二進制
mobile/android/app/src/main/res/drawable-v21/background.png


+ 3 - 9
mobile/android/app/src/main/res/drawable-v21/launch_background.xml

@@ -1,12 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Modify this file to customize your launch splash screen -->
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:drawable="?android:colorBackground" />
-
-    <!-- You can insert your own image assets here -->
-    <!-- <item>
-        <bitmap
-            android:gravity="center"
-            android:src="@mipmap/launch_image" />
-    </item> -->
+    <item>
+        <bitmap android:gravity="fill" android:src="@drawable/background"/>
+    </item>
 </layer-list>
 </layer-list>

二進制
mobile/android/app/src/main/res/drawable-xhdpi/android12splash.png


二進制
mobile/android/app/src/main/res/drawable-xxhdpi/android12splash.png


二進制
mobile/android/app/src/main/res/drawable-xxxhdpi/android12splash.png


二進制
mobile/android/app/src/main/res/drawable/background.png


+ 3 - 9
mobile/android/app/src/main/res/drawable/launch_background.xml

@@ -1,12 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Modify this file to customize your launch splash screen -->
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:drawable="@android:color/white" />
-
-    <!-- You can insert your own image assets here -->
-    <!-- <item>
-        <bitmap
-            android:gravity="center"
-            android:src="@mipmap/launch_image" />
-    </item> -->
+    <item>
+        <bitmap android:gravity="fill" android:src="@drawable/background"/>
+    </item>
 </layer-list>
 </layer-list>

+ 19 - 0
mobile/android/app/src/main/res/values-night-v31/styles.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
+    <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
+        <item name="android:forceDarkAllowed">false</item>
+        <item name="android:windowFullscreen">false</item>
+        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
+        <item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
+    </style>
+    <!-- Theme applied to the Android Window as soon as the process has started.
+         This theme determines the color of the Android Window while your
+         Flutter UI initializes, as well as behind your Flutter UI while its
+         running.
+         
+         This Theme is only used starting with V2 of Flutter's Android embedding. -->
+    <style name="NormalTheme" parent="@android:style/Theme.Black.NoTitleBar">
+        <item name="android:windowBackground">?android:colorBackground</item>
+    </style>
+</resources>

+ 19 - 0
mobile/android/app/src/main/res/values-v31/styles.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <!-- Theme applied to the Android Window while the process is starting when the OS's Dark Mode setting is off -->
+    <style name="LaunchTheme" parent="@android:style/Theme.Light.NoTitleBar">
+        <item name="android:forceDarkAllowed">false</item>
+        <item name="android:windowFullscreen">false</item>
+        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
+        <item name="android:windowSplashScreenAnimatedIcon">@drawable/android12splash</item>
+    </style>
+    <!-- Theme applied to the Android Window as soon as the process has started.
+         This theme determines the color of the Android Window while your
+         Flutter UI initializes, as well as behind your Flutter UI while its
+         running.
+         
+         This Theme is only used starting with V2 of Flutter's Android embedding. -->
+    <style name="NormalTheme" parent="@android:style/Theme.Light.NoTitleBar">
+        <item name="android:windowBackground">?android:colorBackground</item>
+    </style>
+</resources>

+ 3 - 0
mobile/android/app/src/main/res/values/styles.xml

@@ -5,6 +5,9 @@
         <!-- Show a splash screen on the activity. Automatically removed when
         <!-- Show a splash screen on the activity. Automatically removed when
              Flutter draws its first frame -->
              Flutter draws its first frame -->
         <item name="android:windowBackground">@drawable/launch_background</item>
         <item name="android:windowBackground">@drawable/launch_background</item>
+        <item name="android:forceDarkAllowed">false</item>
+        <item name="android:windowFullscreen">false</item>
+        <item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
     </style>
     </style>
     <!-- Theme applied to the Android Window as soon as the process has started.
     <!-- Theme applied to the Android Window as soon as the process has started.
          This theme determines the color of the Android Window while your
          This theme determines the color of the Android Window while your

二進制
mobile/assets/immich-logo-no-outline-android12.png


+ 137 - 0
mobile/flutter_native_splash.yaml

@@ -0,0 +1,137 @@
+flutter_native_splash:
+  # This package generates native code to customize Flutter's default white native splash screen
+  # with background color and splash image.
+  # Customize the parameters below, and run the following command in the terminal:
+  # flutter pub run flutter_native_splash:create
+  # To restore Flutter's default white splash screen, run the following command in the terminal:
+  # flutter pub run flutter_native_splash:remove
+
+  # color or background_image is the only required parameter.  Use color to set the background
+  # of your splash screen to a solid color.  Use background_image to set the background of your
+  # splash screen to a png image.  This is useful for gradients. The image will be stretch to the
+  # size of the app. Only one parameter can be used, color and background_image cannot both be set.
+  background_image: "assets/immich-logo-no-outline.png"
+
+  # Optional parameters are listed below.  To enable a parameter, uncomment the line by removing
+  # the leading # character.
+
+  # The image parameter allows you to specify an image used in the splash screen.  It must be a
+  # png file and should be sized for 4x pixel density.
+  #image: assets/splash.png
+
+  # The branding property allows you to specify an image used as branding in the splash screen.
+  # It must be a png file. It is supported for Android, iOS and the Web.  For Android 12,
+  # see the Android 12 section below.
+  #branding: assets/dart.png
+
+  # To position the branding image at the bottom of the screen you can use bottom, bottomRight,
+  # and bottomLeft. The default values is bottom if not specified or specified something else.
+  #branding_mode: bottom
+
+  # The color_dark, background_image_dark, image_dark, branding_dark are parameters that set the background
+  # and image when the device is in dark mode. If they are not specified, the app will use the
+  # parameters from above. If the image_dark parameter is specified, color_dark or
+  # background_image_dark must be specified.  color_dark and background_image_dark cannot both be
+  # set.
+  #color_dark: "#042a49"
+  #background_image_dark: "assets/dark-background.png"
+  #image_dark: assets/splash-invert.png
+  #branding_dark: assets/dart_dark.png
+
+  # Android 12 handles the splash screen differently than previous versions.  Please visit
+  # https://developer.android.com/guide/topics/ui/splash-screen
+  # Following are Android 12 specific parameter.
+  android_12:
+    # The image parameter sets the splash screen icon image.  If this parameter is not specified,
+    # the app's launcher icon will be used instead.
+    # Please note that the splash screen will be clipped to a circle on the center of the screen.
+    # App icon with an icon background: This should be 960×960 pixels, and fit within a circle
+    # 640 pixels in diameter.
+    # App icon without an icon background: This should be 1152×1152 pixels, and fit within a circle
+    # 768 pixels in diameter.
+    image: assets/immich-logo-no-outline-android12.png
+
+    # Splash screen background color.
+    #color: "#42a5f5"
+
+    # App icon background color.
+    #icon_background_color: "#111111"
+
+    # The branding property allows you to specify an image used as branding in the splash screen.
+    #branding: assets/dart.png
+
+    # The image_dark, color_dark, icon_background_color_dark, and branding_dark set values that
+    # apply when the device is in dark mode. If they are not specified, the app will use the
+    # parameters from above.
+    #image_dark: assets/android12splash-invert.png
+    #color_dark: "#042a49"
+    #icon_background_color_dark: "#eeeeee"
+
+  # The android, ios and web parameters can be used to disable generating a splash screen on a given
+  # platform.
+  #android: false
+  #ios: false
+  #web: false
+
+  # Platform specific images can be specified with the following parameters, which will override
+  # the respective parameter.  You may specify all, selected, or none of these parameters:
+  #color_android: "#42a5f5"
+  #color_dark_android: "#042a49"
+  #color_ios: "#42a5f5"
+  #color_dark_ios: "#042a49"
+  #color_web: "#42a5f5"
+  #color_dark_web: "#042a49"
+  #image_android: assets/splash-android.png
+  #image_dark_android: assets/splash-invert-android.png
+  #image_ios: assets/splash-ios.png
+  #image_dark_ios: assets/splash-invert-ios.png
+  #image_web: assets/splash-web.png
+  #image_dark_web: assets/splash-invert-web.png
+  #background_image_android: "assets/background-android.png"
+  #background_image_dark_android: "assets/dark-background-android.png"
+  #background_image_ios: "assets/background-ios.png"
+  #background_image_dark_ios: "assets/dark-background-ios.png"
+  #background_image_web: "assets/background-web.png"
+  #background_image_dark_web: "assets/dark-background-web.png"
+  #branding_android: assets/brand-android.png
+  #branding_dark_android: assets/dart_dark-android.png
+  #branding_ios: assets/brand-ios.png
+  #branding_dark_ios: assets/dart_dark-ios.png
+
+  # The position of the splash image can be set with android_gravity, ios_content_mode, and
+  # web_image_mode parameters.  All default to center.
+  #
+  # android_gravity can be one of the following Android Gravity (see
+  # https://developer.android.com/reference/android/view/Gravity): bottom, center,
+  # center_horizontal, center_vertical, clip_horizontal, clip_vertical, end, fill, fill_horizontal,
+  # fill_vertical, left, right, start, or top.
+  #android_gravity: center
+  #
+  # ios_content_mode can be one of the following iOS UIView.ContentMode (see
+  # https://developer.apple.com/documentation/uikit/uiview/contentmode): scaleToFill,
+  # scaleAspectFit, scaleAspectFill, center, top, bottom, left, right, topLeft, topRight,
+  # bottomLeft, or bottomRight.
+  #ios_content_mode: center
+  #
+  # web_image_mode can be one of the following modes: center, contain, stretch, and cover.
+  #web_image_mode: center
+
+  # The screen orientation can be set in Android with the android_screen_orientation parameter.
+  # Valid parameters can be found here:
+  # https://developer.android.com/guide/topics/manifest/activity-element#screen
+  #android_screen_orientation: sensorLandscape
+
+  # To hide the notification bar, use the fullscreen parameter.  Has no effect in web since web
+  # has no notification bar.  Defaults to false.
+  # NOTE: Unlike Android, iOS will not automatically show the notification bar when the app loads.
+  #       To show the notification bar, add the following code to your Flutter app:
+  #       WidgetsFlutterBinding.ensureInitialized();
+  #       SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom, SystemUiOverlay.top]);
+  #fullscreen: true
+
+  # If you have changed the name(s) of your info.plist file(s), you can specify the filename(s)
+  # with the info_plist_files parameter.  Remove only the # characters in the three lines below,
+  # do not remove any spaces:
+  #info_plist_files:
+  #  - 'ios/Runner/Info-Debug.plist'
+  #  - 'ios/Runner/Info-Release.plist'

+ 5 - 5
mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json

@@ -1,23 +1,23 @@
 {
 {
   "images" : [
   "images" : [
     {
     {
-      "idiom" : "universal",
       "filename" : "LaunchImage.png",
       "filename" : "LaunchImage.png",
+      "idiom" : "universal",
       "scale" : "1x"
       "scale" : "1x"
     },
     },
     {
     {
-      "idiom" : "universal",
       "filename" : "LaunchImage@2x.png",
       "filename" : "LaunchImage@2x.png",
+      "idiom" : "universal",
       "scale" : "2x"
       "scale" : "2x"
     },
     },
     {
     {
-      "idiom" : "universal",
       "filename" : "LaunchImage@3x.png",
       "filename" : "LaunchImage@3x.png",
+      "idiom" : "universal",
       "scale" : "3x"
       "scale" : "3x"
     }
     }
   ],
   ],
   "info" : {
   "info" : {
-    "version" : 1,
-    "author" : "xcode"
+    "author" : "xcode",
+    "version" : 1
   }
   }
 }
 }

二進制
mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png


二進制
mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png


二進制
mobile/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png


+ 11 - 4
mobile/ios/Runner/Base.lproj/LaunchScreen.storyboard

@@ -16,13 +16,19 @@
                     <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                     <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                         <subviews>
-                            <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4">
-                            </imageView>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleToFill" image="LaunchBackground" translatesAutoresizingMaskIntoConstraints="NO" id="tWc-Dq-wcI"/>
+                            <imageView opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" image="LaunchImage" translatesAutoresizingMaskIntoConstraints="NO" id="YRO-k0-Ey4"></imageView>
                         </subviews>
                         </subviews>
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <constraints>
                         <constraints>
-                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="1a2-6s-vTC"/>
-                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="4X2-HB-R7a"/>
+                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="3T2-ad-Qdv"/>
+                            <constraint firstItem="tWc-Dq-wcI" firstAttribute="bottom" secondItem="Ze5-6b-2t3" secondAttribute="bottom" id="RPx-PI-7Xg"/>
+                            <constraint firstItem="tWc-Dq-wcI" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="SdS-ul-q2q"/>
+                            <constraint firstAttribute="trailing" secondItem="tWc-Dq-wcI" secondAttribute="trailing" id="Swv-Gf-Rwn"/>
+                            <constraint firstAttribute="trailing" secondItem="YRO-k0-Ey4" secondAttribute="trailing" id="TQA-XW-tRk"/>
+                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="bottom" secondItem="Ze5-6b-2t3" secondAttribute="bottom" id="duK-uY-Gun"/>
+                            <constraint firstItem="tWc-Dq-wcI" firstAttribute="leading" secondItem="Ze5-6b-2t3" secondAttribute="leading" id="kV7-tw-vXt"/>
+                            <constraint firstItem="YRO-k0-Ey4" firstAttribute="top" secondItem="Ze5-6b-2t3" secondAttribute="top" id="xPn-NY-SIU"/>
                         </constraints>
                         </constraints>
                     </view>
                     </view>
                 </viewController>
                 </viewController>
@@ -33,5 +39,6 @@
     </scenes>
     </scenes>
     <resources>
     <resources>
         <image name="LaunchImage" width="168" height="185"/>
         <image name="LaunchImage" width="168" height="185"/>
+        <image name="LaunchBackground" width="1" height="1"/>
     </resources>
     </resources>
 </document>
 </document>

+ 94 - 102
mobile/ios/Runner/Info.plist

@@ -1,105 +1,97 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 <plist version="1.0">
 <plist version="1.0">
-  <dict>
-    <key>CFBundleDevelopmentRegion</key>
-    <string>$(DEVELOPMENT_LANGUAGE)</string>
-    <key>CFBundleDisplayName</key>
-    <string>Immich</string>
-    <key>CFBundleExecutable</key>
-    <string>$(EXECUTABLE_NAME)</string>
-    <key>CFBundleIdentifier</key>
-    <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
-    <key>CFBundleInfoDictionaryVersion</key>
-    <string>6.0</string>
-    <key>CFBundleName</key>
-    <string>immich_mobile</string>
-    <key>CFBundlePackageType</key>
-    <string>APPL</string>
-    <key>CFBundleShortVersionString</key>
-    <string>1.43.0</string>
-    <key>CFBundleSignature</key>
-    <string>????</string>
-    <key>CFBundleVersion</key>
-    <string>82</string>
-    <key>LSRequiresIPhoneOS</key>
-    <true />
-    <key>MGLMapboxMetricsEnabledSettingShownInApp</key>
-    <true />
-    <key>NSAppTransportSecurity</key>
-    <dict>
-      <key>NSAllowsArbitraryLoads</key>
-      <true />
-    </dict>
-    <key>NSLocationAlwaysUsageDescription</key>
-    <string>Enable location setting to show position of assets on map</string>
-
-    <key>NSLocationWhenInUseUsageDescription</key>
-    <string>Enable location setting to show position of assets on map</string>
-
-    <key>NSPhotoLibraryUsageDescription</key>
-    <string>We need to manage backup your photos album</string>
-
-    <key>NSPhotoLibraryAddUsageDescription</key>
-    <string>We need to manage backup your photos album</string>
-
-    <key>NSCameraUsageDescription</key>
-    <string>We need to access the camera to let you take beautiful video using this app</string>
-
-    <key>NSMicrophoneUsageDescription</key>
-    <string>We need to access the microphone to let you take beautiful video using this app</string>
-
-    <key>UILaunchStoryboardName</key>
-    <string>LaunchScreen</string>
-    <key>UIMainStoryboardFile</key>
-    <string>Main</string>
-    <key>UISupportedInterfaceOrientations</key>
-    <array>
-      <string>UIInterfaceOrientationPortrait</string>
-      <string>UIInterfaceOrientationLandscapeLeft</string>
-      <string>UIInterfaceOrientationLandscapeRight</string>
-    </array>
-    <key>UISupportedInterfaceOrientations~ipad</key>
-    <array>
-      <string>UIInterfaceOrientationPortrait</string>
-      <string>UIInterfaceOrientationPortraitUpsideDown</string>
-      <string>UIInterfaceOrientationLandscapeLeft</string>
-      <string>UIInterfaceOrientationLandscapeRight</string>
-    </array>
-
-    <key>UIViewControllerBasedStatusBarAppearance</key>
-    <true />
-    <key>io.flutter.embedded_views_preview</key>
-    <true />
-    <key>ITSAppUsesNonExemptEncryption</key>
-    <false />
-    <key>CADisableMinimumFrameDurationOnPhone</key>
-    <true />
-
-
-    <key>LSApplicationQueriesSchemes</key>
-    <array>
-      <string>https</string>
-    </array>
-
-    <key>CFBundleLocalizations</key>
-    <array>
-      <string>cs</string>
-      <string>da</string>
-      <string>de</string>
-      <string>en</string>
-      <string>es</string>
-      <string>fi</string>
-      <string>fr</string>
-      <string>it</string>
-      <string>ja</string>
-      <string>ko</string>
-      <string>nl</string>
-      <string>pl</string>
-      <string>pt</string>
-      <string>ru</string>
-      <string>sk</string>
-      <string>zh</string>
-    </array>
-  </dict>
-</plist>
+	<dict>
+		<key>CFBundleDevelopmentRegion</key>
+		<string>$(DEVELOPMENT_LANGUAGE)</string>
+		<key>CFBundleDisplayName</key>
+		<string>Immich</string>
+		<key>CFBundleExecutable</key>
+		<string>$(EXECUTABLE_NAME)</string>
+		<key>CFBundleIdentifier</key>
+		<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+		<key>CFBundleInfoDictionaryVersion</key>
+		<string>6.0</string>
+		<key>CFBundleName</key>
+		<string>immich_mobile</string>
+		<key>CFBundlePackageType</key>
+		<string>APPL</string>
+		<key>CFBundleShortVersionString</key>
+		<string>1.42.0</string>
+		<key>CFBundleSignature</key>
+		<string>????</string>
+		<key>CFBundleVersion</key>
+		<string>79</string>
+		<key>LSRequiresIPhoneOS</key>
+		<true/>
+		<key>MGLMapboxMetricsEnabledSettingShownInApp</key>
+		<true/>
+		<key>NSAppTransportSecurity</key>
+		<dict>
+			<key>NSAllowsArbitraryLoads</key>
+			<true/>
+		</dict>
+		<key>NSLocationAlwaysUsageDescription</key>
+		<string>Enable location setting to show position of assets on map</string>
+		<key>NSLocationWhenInUseUsageDescription</key>
+		<string>Enable location setting to show position of assets on map</string>
+		<key>NSPhotoLibraryUsageDescription</key>
+		<string>We need to manage backup your photos album</string>
+		<key>NSPhotoLibraryAddUsageDescription</key>
+		<string>We need to manage backup your photos album</string>
+		<key>NSCameraUsageDescription</key>
+		<string>We need to access the camera to let you take beautiful video using this app</string>
+		<key>NSMicrophoneUsageDescription</key>
+		<string>We need to access the microphone to let you take beautiful video using this app</string>
+		<key>UILaunchStoryboardName</key>
+		<string>LaunchScreen</string>
+		<key>UIMainStoryboardFile</key>
+		<string>Main</string>
+		<key>UISupportedInterfaceOrientations</key>
+		<array>
+			<string>UIInterfaceOrientationPortrait</string>
+			<string>UIInterfaceOrientationLandscapeLeft</string>
+			<string>UIInterfaceOrientationLandscapeRight</string>
+		</array>
+		<key>UISupportedInterfaceOrientations~ipad</key>
+		<array>
+			<string>UIInterfaceOrientationPortrait</string>
+			<string>UIInterfaceOrientationPortraitUpsideDown</string>
+			<string>UIInterfaceOrientationLandscapeLeft</string>
+			<string>UIInterfaceOrientationLandscapeRight</string>
+		</array>
+		<key>UIViewControllerBasedStatusBarAppearance</key>
+		<true/>
+		<key>io.flutter.embedded_views_preview</key>
+		<true/>
+		<key>ITSAppUsesNonExemptEncryption</key>
+		<false/>
+		<key>CADisableMinimumFrameDurationOnPhone</key>
+		<true/>
+		<key>LSApplicationQueriesSchemes</key>
+		<array>
+			<string>https</string>
+		</array>
+		<key>CFBundleLocalizations</key>
+		<array>
+			<string>cs</string>
+			<string>da</string>
+			<string>de</string>
+			<string>en</string>
+			<string>es</string>
+			<string>fi</string>
+			<string>fr</string>
+			<string>it</string>
+			<string>ja</string>
+			<string>ko</string>
+			<string>nl</string>
+			<string>pl</string>
+			<string>pt</string>
+			<string>ru</string>
+			<string>sk</string>
+			<string>zh</string>
+		</array>
+		<key>UIStatusBarHidden</key>
+		<false/>
+	</dict>
+</plist>

+ 5 - 23
mobile/lib/shared/views/splash_screen.dart

@@ -57,30 +57,12 @@ class SplashScreenPage extends HookConsumerWidget {
       [],
       [],
     );
     );
 
 
-    return Scaffold(
+    return const Scaffold(
       body: Center(
       body: Center(
-        child: Column(
-          mainAxisAlignment: MainAxisAlignment.center,
-          crossAxisAlignment: CrossAxisAlignment.center,
-          children: [
-            const Image(
-              image: AssetImage('assets/immich-logo-no-outline.png'),
-              width: 200,
-              filterQuality: FilterQuality.high,
-            ),
-            Padding(
-              padding: const EdgeInsets.all(16.0),
-              child: Text(
-                'IMMICH',
-                style: TextStyle(
-                  fontFamily: 'SnowburstOne',
-                  fontWeight: FontWeight.bold,
-                  fontSize: 48,
-                  color: Theme.of(context).primaryColor,
-                ),
-              ),
-            ),
-          ],
+        child: Image(
+          image: AssetImage('assets/immich-logo-no-outline.png'),
+          width: 200,
+          filterQuality: FilterQuality.high,
         ),
         ),
       ),
       ),
     );
     );

+ 4 - 1
mobile/makefile

@@ -8,4 +8,7 @@ create_app_icon:
 	flutter pub run flutter_launcher_icons:main
 	flutter pub run flutter_launcher_icons:main
 
 
 build_release_android:
 build_release_android:
-	flutter build appbundle
+	flutter build appbundle
+
+create_splash:
+	flutter pub run flutter_native_splash:create

+ 18 - 4
mobile/pubspec.lock

@@ -325,7 +325,7 @@ packages:
       name: flutter_launcher_icons
       name: flutter_launcher_icons
       url: "https://pub.dartlang.org"
       url: "https://pub.dartlang.org"
     source: hosted
     source: hosted
-    version: "0.9.2"
+    version: "0.9.3"
   flutter_lints:
   flutter_lints:
     dependency: "direct dev"
     dependency: "direct dev"
     description:
     description:
@@ -345,6 +345,13 @@ packages:
       url: "https://pub.dartlang.org"
       url: "https://pub.dartlang.org"
     source: hosted
     source: hosted
     version: "0.14.0"
     version: "0.14.0"
+  flutter_native_splash:
+    dependency: "direct dev"
+    description:
+      name: flutter_native_splash
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.2.17"
   flutter_plugin_android_lifecycle:
   flutter_plugin_android_lifecycle:
     dependency: transitive
     dependency: transitive
     description:
     description:
@@ -450,7 +457,7 @@ packages:
       name: html
       name: html
       url: "https://pub.dartlang.org"
       url: "https://pub.dartlang.org"
     source: hosted
     source: hosted
-    version: "0.15.0"
+    version: "0.15.1"
   http:
   http:
     dependency: "direct main"
     dependency: "direct main"
     description:
     description:
@@ -473,12 +480,12 @@ packages:
     source: hosted
     source: hosted
     version: "4.0.1"
     version: "4.0.1"
   image:
   image:
-    dependency: transitive
+    dependency: "direct overridden"
     description:
     description:
       name: image
       name: image
       url: "https://pub.dartlang.org"
       url: "https://pub.dartlang.org"
     source: hosted
     source: hosted
-    version: "3.2.0"
+    version: "4.0.12"
   image_picker:
   image_picker:
     dependency: "direct main"
     dependency: "direct main"
     description:
     description:
@@ -1119,6 +1126,13 @@ packages:
       url: "https://pub.dartlang.org"
       url: "https://pub.dartlang.org"
     source: hosted
     source: hosted
     version: "0.3.1"
     version: "0.3.1"
+  universal_io:
+    dependency: transitive
+    description:
+      name: universal_io
+      url: "https://pub.dartlang.org"
+    source: hosted
+    version: "2.0.4"
   url_launcher:
   url_launcher:
     dependency: "direct main"
     dependency: "direct main"
     description:
     description:

+ 5 - 1
mobile/pubspec.yaml

@@ -56,10 +56,14 @@ dev_dependencies:
   hive_generator: ^1.1.2
   hive_generator: ^1.1.2
   build_runner: ^2.2.1
   build_runner: ^2.2.1
   auto_route_generator: ^5.0.2
   auto_route_generator: ^5.0.2
-  flutter_launcher_icons: "^0.9.2"
+  flutter_launcher_icons: ^0.9.2
+  flutter_native_splash: ^2.2.17
   integration_test:
   integration_test:
     sdk: flutter
     sdk: flutter
 
 
+dependency_overrides: 
+  image: ^4.0.12
+
 flutter:
 flutter:
   uses-material-design: true
   uses-material-design: true
   assets:
   assets: