Implement CI/CD for Android (#48)
* Implement CI/CD for Android with Fastlane
							
								
								
									
										3
									
								
								mobile/.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						| @@ -46,3 +46,6 @@ app.*.map.json | ||||
| /android/app/debug | ||||
| /android/app/profile | ||||
| /android/app/release | ||||
|  | ||||
| # Fastlane | ||||
| ios/fastlane/report.xml | ||||
							
								
								
									
										3
									
								
								mobile/android/Gemfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | ||||
| source "https://rubygems.org" | ||||
|  | ||||
| gem "fastlane" | ||||
							
								
								
									
										218
									
								
								mobile/android/Gemfile.lock
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,218 @@ | ||||
| GEM | ||||
|   remote: https://rubygems.org/ | ||||
|   specs: | ||||
|     CFPropertyList (3.0.5) | ||||
|       rexml | ||||
|     addressable (2.8.0) | ||||
|       public_suffix (>= 2.0.2, < 5.0) | ||||
|     artifactory (3.0.15) | ||||
|     atomos (0.1.3) | ||||
|     aws-eventstream (1.2.0) | ||||
|     aws-partitions (1.566.0) | ||||
|     aws-sdk-core (3.130.0) | ||||
|       aws-eventstream (~> 1, >= 1.0.2) | ||||
|       aws-partitions (~> 1, >= 1.525.0) | ||||
|       aws-sigv4 (~> 1.1) | ||||
|       jmespath (~> 1.0) | ||||
|     aws-sdk-kms (1.55.0) | ||||
|       aws-sdk-core (~> 3, >= 3.127.0) | ||||
|       aws-sigv4 (~> 1.1) | ||||
|     aws-sdk-s3 (1.113.0) | ||||
|       aws-sdk-core (~> 3, >= 3.127.0) | ||||
|       aws-sdk-kms (~> 1) | ||||
|       aws-sigv4 (~> 1.4) | ||||
|     aws-sigv4 (1.4.0) | ||||
|       aws-eventstream (~> 1, >= 1.0.2) | ||||
|     babosa (1.0.4) | ||||
|     claide (1.1.0) | ||||
|     colored (1.2) | ||||
|     colored2 (3.1.2) | ||||
|     commander (4.6.0) | ||||
|       highline (~> 2.0.0) | ||||
|     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.7.6) | ||||
|     emoji_regex (3.2.3) | ||||
|     excon (0.92.0) | ||||
|     faraday (1.10.0) | ||||
|       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.3) | ||||
|       multipart-post (>= 1.2, < 3) | ||||
|     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.6) | ||||
|     fastlane (2.204.3) | ||||
|       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) | ||||
|       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) | ||||
|     gh_inspector (1.1.3) | ||||
|     google-apis-androidpublisher_v3 (0.16.0) | ||||
|       google-apis-core (>= 0.4, < 2.a) | ||||
|     google-apis-core (0.4.2) | ||||
|       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.10.0) | ||||
|       google-apis-core (>= 0.4, < 2.a) | ||||
|     google-apis-playcustomapp_v1 (0.7.0) | ||||
|       google-apis-core (>= 0.4, < 2.a) | ||||
|     google-apis-storage_v1 (0.11.0) | ||||
|       google-apis-core (>= 0.4, < 2.a) | ||||
|     google-cloud-core (1.6.0) | ||||
|       google-cloud-env (~> 1.0) | ||||
|       google-cloud-errors (~> 1.0) | ||||
|     google-cloud-env (1.5.0) | ||||
|       faraday (>= 0.17.3, < 2.0) | ||||
|     google-cloud-errors (1.2.0) | ||||
|     google-cloud-storage (1.36.1) | ||||
|       addressable (~> 2.8) | ||||
|       digest-crc (~> 0.4) | ||||
|       google-apis-iamcredentials_v1 (~> 0.1) | ||||
|       google-apis-storage_v1 (~> 0.1) | ||||
|       google-cloud-core (~> 1.6) | ||||
|       googleauth (>= 0.16.2, < 2.a) | ||||
|       mini_mime (~> 1.0) | ||||
|     googleauth (1.1.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.4) | ||||
|       domain_name (~> 0.5) | ||||
|     httpclient (2.8.3) | ||||
|     jmespath (1.6.1) | ||||
|     json (2.6.1) | ||||
|     jwt (2.3.0) | ||||
|     memoist (0.16.2) | ||||
|     mini_magick (4.11.0) | ||||
|     mini_mime (1.1.2) | ||||
|     multi_json (1.15.0) | ||||
|     multipart-post (2.0.0) | ||||
|     nanaimo (0.3.0) | ||||
|     naturally (2.2.1) | ||||
|     optparse (0.1.1) | ||||
|     os (1.1.4) | ||||
|     plist (3.6.0) | ||||
|     public_suffix (4.0.6) | ||||
|     rake (13.0.6) | ||||
|     representable (3.1.1) | ||||
|       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) | ||||
|     ruby2_keywords (0.0.5) | ||||
|     rubyzip (2.3.2) | ||||
|     security (0.1.3) | ||||
|     signet (0.16.1) | ||||
|       addressable (~> 2.8) | ||||
|       faraday (>= 0.17.5, < 3.0) | ||||
|       jwt (>= 1.5, < 3.0) | ||||
|       multi_json (~> 1.10) | ||||
|     simctl (1.6.8) | ||||
|       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) | ||||
|     uber (0.1.0) | ||||
|     unf (0.1.4) | ||||
|       unf_ext | ||||
|     unf_ext (0.0.8.1) | ||||
|     unicode-display_width (1.8.0) | ||||
|     webrick (1.7.0) | ||||
|     word_wrap (1.0.0) | ||||
|     xcodeproj (1.21.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-21 | ||||
|  | ||||
| DEPENDENCIES | ||||
|   fastlane | ||||
|  | ||||
| BUNDLED WITH | ||||
|    2.3.7 | ||||
| @@ -25,6 +25,13 @@ apply plugin: 'com.android.application' | ||||
| apply plugin: 'kotlin-android' | ||||
| apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" | ||||
|  | ||||
| def keystoreProperties = new Properties() | ||||
| def keystorePropertiesFile = rootProject.file('key.properties') | ||||
| if (keystorePropertiesFile.exists()) { | ||||
|     keystoreProperties.load(new FileInputStream(keystorePropertiesFile)) | ||||
| } | ||||
|  | ||||
|  | ||||
| android { | ||||
|     compileSdkVersion flutter.compileSdkVersion | ||||
|  | ||||
| @@ -43,18 +50,27 @@ android { | ||||
|  | ||||
|     defaultConfig { | ||||
|         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). | ||||
|         applicationId "com.example.immich_mobile" | ||||
|         applicationId "app.alextran.immich" | ||||
|         minSdkVersion 20 | ||||
|         targetSdkVersion flutter.targetSdkVersion | ||||
|         versionCode flutterVersionCode.toInteger() | ||||
|         versionName flutterVersionName | ||||
|     } | ||||
|  | ||||
|    signingConfigs { | ||||
|        release { | ||||
|            keyAlias keystoreProperties['keyAlias'] | ||||
|            keyPassword keystoreProperties['keyPassword'] | ||||
|            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null | ||||
|            storePassword keystoreProperties['storePassword'] | ||||
|        } | ||||
|    } | ||||
|  | ||||
|     buildTypes { | ||||
|         release { | ||||
|             // TODO: Add your own signing config for the release build. | ||||
|             // Signing with the debug keys for now, so `flutter run --release` works. | ||||
|             signingConfig signingConfigs.debug | ||||
|             signingConfig signingConfigs.release | ||||
|         } | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     package="com.example.immich_mobile"> | ||||
|     <!-- Flutter needs it to communicate with the running application | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app.alextran.immich"> | ||||
|   <!-- Flutter needs it to communicate with the running application | ||||
|          to allow setting breakpoints, to provide hot reload, etc. | ||||
|     --> | ||||
|     <uses-permission android:name="android.permission.INTERNET"/> | ||||
| </manifest> | ||||
|   <uses-permission android:name="android.permission.INTERNET" /> | ||||
| </manifest> | ||||
| @@ -1,4 +1,4 @@ | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.immich_mobile"> | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app.alextran.immich"> | ||||
|   <application android:label="Immich" android:name="${applicationName}" android:usesCleartextTraffic="true" android:icon="@mipmap/ic_launcher"> | ||||
|     <activity android:name=".MainActivity" android:exported="true" android:launchMode="singleTop" android:theme="@style/LaunchTheme" android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode" android:hardwareAccelerated="true" android:windowSoftInputMode="adjustResize"> | ||||
|       <!-- Specifies an Android theme to apply to this Activity as soon as | ||||
|   | ||||
| @@ -1,7 +1,6 @@ | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     package="com.example.immich_mobile"> | ||||
|     <!-- Flutter needs it to communicate with the running application | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="app.alextran.immich"> | ||||
|   <!-- Flutter needs it to communicate with the running application | ||||
|          to allow setting breakpoints, to provide hot reload, etc. | ||||
|     --> | ||||
|     <uses-permission android:name="android.permission.INTERNET"/> | ||||
| </manifest> | ||||
|   <uses-permission android:name="android.permission.INTERNET" /> | ||||
| </manifest> | ||||
							
								
								
									
										2
									
								
								mobile/android/fastlane/Appfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,2 @@ | ||||
| json_key_file("/Users/alex/Documents/immich-fastlane-googleplaystore-key.json") # Path to the json secret file - Follow https://docs.fastlane.tools/actions/supply/#setup to get one | ||||
| package_name("app.alextran.immich") # e.g. com.krausefx.app | ||||
							
								
								
									
										25
									
								
								mobile/android/fastlane/Fastfile
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,25 @@ | ||||
| # 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 | ||||
|  | ||||
| default_platform(:android) | ||||
|  | ||||
| platform :android do | ||||
|  | ||||
|   desc "Update AAB to PlayStore" | ||||
|   lane :beta do | ||||
|     upload_to_play_store(track: 'beta', aab: '../build/app/outputs/bundle/release/app-release.aab') | ||||
|   end | ||||
|  | ||||
| end | ||||
							
								
								
									
										32
									
								
								mobile/android/fastlane/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,32 @@ | ||||
| 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 | ||||
|  | ||||
| ## Android | ||||
|  | ||||
| ### android beta | ||||
|  | ||||
| ```sh | ||||
| [bundle exec] fastlane android beta | ||||
| ``` | ||||
|  | ||||
| Update AAB to PlayStore | ||||
|  | ||||
| ---- | ||||
|  | ||||
| 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). | ||||
							
								
								
									
										20
									
								
								mobile/android/fastlane/report.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,20 @@ | ||||
| <?xml version="1.0" encoding="UTF-8"?> | ||||
| <testsuites> | ||||
|   <testsuite name="fastlane.lanes"> | ||||
|      | ||||
|      | ||||
|      | ||||
|        | ||||
|       <testcase classname="fastlane.lanes" name="0: default_platform" time="0.000318"> | ||||
|          | ||||
|       </testcase> | ||||
|      | ||||
|        | ||||
|       <testcase classname="fastlane.lanes" name="1: upload_to_play_store" time="111.253169"> | ||||
|          | ||||
|           <failure message="/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/actions/actions_helper.rb:67:in `execute_action'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:255:in `block in execute_action'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:229:in `chdir'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:229:in `execute_action'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
Fastfile:22:in `block (2 levels) in parsing_binding'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/lane.rb:33:in `call'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:45:in `chdir'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:45:in `execute'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/lane_manager.rb:47:in `cruise_lane'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/commands_generator.rb:109:in `block (2 levels) in run'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/commander-4.6.0/lib/commander/command.rb:187:in `call'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/commander-4.6.0/lib/commander/command.rb:157:in `run'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/commander-4.6.0/lib/commander/runner.rb:444:in `run_active_command'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:124:in `run!'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/commander-4.6.0/lib/commander/delegates.rb:18:in `run!'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/commands_generator.rb:353:in `run'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/commands_generator.rb:42:in `start'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/cli_tools_distributor.rb:122:in `take_off'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/bin/fastlane:23:in `<top (required)>'
/usr/local/Cellar/fastlane/2.204.3/libexec/bin/fastlane:25:in `load'
/usr/local/Cellar/fastlane/2.204.3/libexec/bin/fastlane:25:in `<main>'

Google Api Error: Invalid request - APK specifies a version code that has already been used." /> | ||||
|          | ||||
|       </testcase> | ||||
|      | ||||
|   </testsuite> | ||||
| </testsuites> | ||||
							
								
								
									
										3
									
								
								mobile/android/metadata/en-US/full_description.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | ||||
| This is a client app for Immich Server and you will need to run/manage the server on your own in order to use the app. | ||||
|  | ||||
| Github URL: https://github.com/alextran1502/immich | ||||
							
								
								
									
										
											BIN
										
									
								
								mobile/android/metadata/en-US/images/featureGraphic.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 48 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mobile/android/metadata/en-US/images/icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 41 KiB | 
| After Width: | Height: | Size: 32 KiB | 
| After Width: | Height: | Size: 403 KiB | 
| After Width: | Height: | Size: 55 KiB | 
| After Width: | Height: | Size: 74 KiB | 
| After Width: | Height: | Size: 183 KiB | 
| After Width: | Height: | Size: 84 KiB | 
| After Width: | Height: | Size: 3.4 MiB | 
| After Width: | Height: | Size: 185 KiB | 
| After Width: | Height: | Size: 1.5 MiB | 
| After Width: | Height: | Size: 4.0 MiB | 
| After Width: | Height: | Size: 84 KiB | 
| After Width: | Height: | Size: 3.4 MiB | 
| After Width: | Height: | Size: 185 KiB | 
| After Width: | Height: | Size: 1.5 MiB | 
| After Width: | Height: | Size: 4.0 MiB | 
							
								
								
									
										1
									
								
								mobile/android/metadata/en-US/short_description.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| Self-hosted photo and video backup solution directly from your mobile phone. | ||||
							
								
								
									
										1
									
								
								mobile/android/metadata/en-US/title.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | ||||
| Immich | ||||
							
								
								
									
										0
									
								
								mobile/android/metadata/en-US/video.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -5,14 +5,17 @@ | ||||
|      | ||||
|      | ||||
|        | ||||
|       <testcase classname="fastlane.lanes" name="0: default_platform" time="0.000289"> | ||||
|       <testcase classname="fastlane.lanes" name="0: default_platform" time="0.001066"> | ||||
|          | ||||
|       </testcase> | ||||
|      | ||||
|        | ||||
|       <testcase classname="fastlane.lanes" name="1: build_app" time="16.240124"> | ||||
|       <testcase classname="fastlane.lanes" name="1: build_app" time="71.433647"> | ||||
|          | ||||
|           <failure message="/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/actions/actions_helper.rb:67:in `execute_action'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:255:in `block in execute_action'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:229:in `chdir'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:229:in `execute_action'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:157:in `trigger_action_by_name'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/fast_file.rb:159:in `method_missing'
Fastfile:21:in `block (2 levels) in parsing_binding'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/lane.rb:33:in `call'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:49:in `block in execute'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:45:in `chdir'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/runner.rb:45:in `execute'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/lane_manager.rb:47:in `cruise_lane'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/command_line_handler.rb:36:in `handle'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/commands_generator.rb:109:in `block (2 levels) in run'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/commander-4.6.0/lib/commander/command.rb:187:in `call'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/commander-4.6.0/lib/commander/command.rb:157:in `run'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/commander-4.6.0/lib/commander/runner.rb:444:in `run_active_command'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb:124:in `run!'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/commander-4.6.0/lib/commander/delegates.rb:18:in `run!'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/commands_generator.rb:353:in `run'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/commands_generator.rb:42:in `start'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/fastlane/lib/fastlane/cli_tools_distributor.rb:122:in `take_off'
/usr/local/Cellar/fastlane/2.204.3/libexec/gems/fastlane-2.204.3/bin/fastlane:23:in `<top (required)>'
/usr/local/Cellar/fastlane/2.204.3/libexec/bin/fastlane:25:in `load'
/usr/local/Cellar/fastlane/2.204.3/libexec/bin/fastlane:25:in `<main>'

Error building the application - see the log above" /> | ||||
|       </testcase> | ||||
|      | ||||
|        | ||||
|       <testcase classname="fastlane.lanes" name="2: upload_to_testflight" time="104.299383"> | ||||
|          | ||||
|       </testcase> | ||||
|      | ||||
|   | ||||
| @@ -1,11 +1,9 @@ | ||||
| import 'package:device_info_plus/device_info_plus.dart'; | ||||
| import 'package:flutter_udid/flutter_udid.dart'; | ||||
| import 'dart:io' show Platform; | ||||
|  | ||||
| class DeviceInfoService { | ||||
|   Future<Map<String, dynamic>> getDeviceInfo() async { | ||||
|     // Get device info | ||||
|     DeviceInfoPlugin deviceInfo = DeviceInfoPlugin(); | ||||
|     String deviceId = await FlutterUdid.consistentUdid; | ||||
|     String deviceType = ""; | ||||
|  | ||||
|   | ||||
| @@ -5,4 +5,7 @@ watch: | ||||
| 	flutter packages pub run build_runner watch --delete-conflicting-outputs | ||||
|  | ||||
| create_app_icon: | ||||
| 	flutter pub run flutter_launcher_icons:main | ||||
| 	flutter pub run flutter_launcher_icons:main | ||||
|  | ||||
| build_release_android: | ||||
| 	flutter build appbundle | ||||
| @@ -232,48 +232,6 @@ packages: | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "2.2.1" | ||||
|   device_info_plus: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|       name: device_info_plus | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "3.2.1" | ||||
|   device_info_plus_linux: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: device_info_plus_linux | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "2.1.1" | ||||
|   device_info_plus_macos: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: device_info_plus_macos | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "2.2.1" | ||||
|   device_info_plus_platform_interface: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: device_info_plus_platform_interface | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "2.3.0+1" | ||||
|   device_info_plus_web: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: device_info_plus_web | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "2.1.0" | ||||
|   device_info_plus_windows: | ||||
|     dependency: transitive | ||||
|     description: | ||||
|       name: device_info_plus_windows | ||||
|       url: "https://pub.dartlang.org" | ||||
|     source: hosted | ||||
|     version: "2.1.1" | ||||
|   dio: | ||||
|     dependency: "direct main" | ||||
|     description: | ||||
|   | ||||
| @@ -2,7 +2,7 @@ name: immich_mobile | ||||
| description: A new Flutter project. | ||||
|  | ||||
| publish_to: "none" | ||||
| version: 1.1.0+1 | ||||
| version: 1.2.0+2 | ||||
|  | ||||
| environment: | ||||
|   sdk: ">=2.15.1 <3.0.0" | ||||
| @@ -17,7 +17,6 @@ dependencies: | ||||
|   hive: | ||||
|   hive_flutter: | ||||
|   dio: ^4.0.4 | ||||
|   device_info_plus: ^3.2.1 | ||||
|   cached_network_image: ^3.2.0 | ||||
|   google_fonts: ^2.2.0 | ||||
|   percent_indicator: ^3.4.0 | ||||
|   | ||||