aboutsummaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authordavidpkj <davidpenkow1@gmail.com>2022-07-17 19:25:26 +0200
committerdavidpkj <davidpenkow1@gmail.com>2022-07-17 19:25:26 +0200
commitd282f4bb380ce9c445d6bd3a4c9f001bb6b5f501 (patch)
tree023428b7fa249b66a34d0d83c2f0df0ea572ba75 /android
Initial Commit
Diffstat (limited to 'android')
-rw-r--r--android/.gitignore13
-rw-r--r--android/app/build.gradle82
-rw-r--r--android/app/src/debug/AndroidManifest.xml8
-rw-r--r--android/app/src/main/AndroidManifest.xml65
-rw-r--r--android/app/src/main/kotlin/com/davidpenkowoj/kulinar_app/MainActivity.kt7
-rw-r--r--android/app/src/main/kotlin/com/example/kulinar_app/MainActivity.kt44
-rw-r--r--android/app/src/main/res/drawable-v21/launch_background.xml12
-rw-r--r--android/app/src/main/res/drawable/launch_background.xml15
-rw-r--r--android/app/src/main/res/drawable/launcher_icon.pngbin0 -> 16317 bytes
-rw-r--r--android/app/src/main/res/mipmap-hdpi/ic_launcher.pngbin0 -> 544 bytes
-rw-r--r--android/app/src/main/res/mipmap-hdpi/launcher_icon.pngbin0 -> 3644 bytes
-rw-r--r--android/app/src/main/res/mipmap-hdpi/notification_icon.pngbin0 -> 1761 bytes
-rw-r--r--android/app/src/main/res/mipmap-mdpi/ic_launcher.pngbin0 -> 442 bytes
-rw-r--r--android/app/src/main/res/mipmap-mdpi/launcher_icon.pngbin0 -> 2552 bytes
-rw-r--r--android/app/src/main/res/mipmap-mdpi/notification_icon.pngbin0 -> 1275 bytes
-rw-r--r--android/app/src/main/res/mipmap-xhdpi/ic_launcher.pngbin0 -> 721 bytes
-rw-r--r--android/app/src/main/res/mipmap-xhdpi/launcher_icon.pngbin0 -> 4525 bytes
-rw-r--r--android/app/src/main/res/mipmap-xhdpi/notification_icon.pngbin0 -> 2156 bytes
-rw-r--r--android/app/src/main/res/mipmap-xxhdpi/ic_launcher.pngbin0 -> 1031 bytes
-rw-r--r--android/app/src/main/res/mipmap-xxhdpi/launcher_icon.pngbin0 -> 7166 bytes
-rw-r--r--android/app/src/main/res/mipmap-xxhdpi/notification_icon.pngbin0 -> 2755 bytes
-rw-r--r--android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.pngbin0 -> 1443 bytes
-rw-r--r--android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.pngbin0 -> 8735 bytes
-rw-r--r--android/app/src/main/res/mipmap-xxxhdpi/notification_icon.pngbin0 -> 3426 bytes
-rw-r--r--android/app/src/main/res/values-night/styles.xml18
-rw-r--r--android/app/src/main/res/values/styles.xml19
-rw-r--r--android/app/src/profile/AndroidManifest.xml8
-rw-r--r--android/build.gradle31
-rw-r--r--android/gradle.properties3
-rw-r--r--android/gradle/wrapper/gradle-wrapper.properties6
-rw-r--r--android/settings.gradle11
31 files changed, 342 insertions, 0 deletions
diff --git a/android/.gitignore b/android/.gitignore
new file mode 100644
index 0000000..6f56801
--- /dev/null
+++ b/android/.gitignore
@@ -0,0 +1,13 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/android/app/build.gradle b/android/app/build.gradle
new file mode 100644
index 0000000..b2b235a
--- /dev/null
+++ b/android/app/build.gradle
@@ -0,0 +1,82 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+ throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+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 33 // flutter.compileSdkVersion
+ ndkVersion flutter.ndkVersion
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ defaultConfig {
+ applicationId "com.davidpenkowoj.kulinar_app"
+ // You can update the following values to match your application needs.
+ // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-build-configuration.
+ minSdkVersion flutter.minSdkVersion
+ 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 {
+ signingConfig signingConfigs.release
+ }
+ }
+}
+
+flutter {
+ source '../..'
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
diff --git a/android/app/src/debug/AndroidManifest.xml b/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..457869c
--- /dev/null
+++ b/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,8 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.kulinar_app">
+ <!-- The INTERNET permission is required for development. Specifically,
+ the Flutter tool 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>
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..6572c66
--- /dev/null
+++ b/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,65 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.kulinar_app">
+
+ <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
+ <uses-permission android:name="android.permission.INTERNET"/>
+
+ <application
+ android:label="Kulinar"
+ android:theme="@style/LaunchTheme"
+ android:icon="@mipmap/launcher_icon"
+ android:requestLegacyExternalStorage="true">
+ <activity
+ android:exported="true"
+ android:turnScreenOn="true"
+ android:showWhenLocked="true"
+ android:name=".MainActivity"
+ 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
+ the Android process has started. This theme is visible to the user
+ while the Flutter UI initializes. After that, this theme continues
+ to determine the Window background behind the Flutter UI. -->
+ <meta-data
+ android:name="io.flutter.embedding.android.NormalTheme"
+ android:resource="@style/NormalTheme"
+ />
+ <!-- Displays an Android View that continues showing the launch screen
+ Drawable until Flutter paints its first frame, then this splash
+ screen fades out. A splash screen is useful to avoid any visual
+ gap between the end of Android's launch screen and the painting of
+ Flutter's first frame. -->
+ <meta-data
+ android:name="io.flutter.embedding.android.SplashScreenDrawable"
+ android:resource="@drawable/launch_background"
+ />
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN"/>
+ <category android:name="android.intent.category.LAUNCHER"/>
+ </intent-filter>
+ <intent-filter android:icon="@mipmap/launcher_icon"
+ android:label="Kulinar"
+ android:priority="1">
+ <action android:name="android.intent.action.VIEW"/>
+ <category android:name="android.intent.category.DEFAULT"/>
+ <category android:name="android.intent.category.BROWSABLE"/>
+ <data android:scheme="content" />
+ <data android:scheme="http" />
+ <data android:scheme="file" />
+ <data android:mimeType="*/*" />
+ <data android:pathPattern=".*\\.kulinar" />
+ </intent-filter>
+ </activity>
+ <!-- Don't delete the meta-data below.
+ This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
+ <meta-data
+ android:name="flutterEmbedding"
+ android:value="2" />
+ </application>
+</manifest>
diff --git a/android/app/src/main/kotlin/com/davidpenkowoj/kulinar_app/MainActivity.kt b/android/app/src/main/kotlin/com/davidpenkowoj/kulinar_app/MainActivity.kt
new file mode 100644
index 0000000..a839c73
--- /dev/null
+++ b/android/app/src/main/kotlin/com/davidpenkowoj/kulinar_app/MainActivity.kt
@@ -0,0 +1,7 @@
+package com.davidpenkowoj.kulinar_app
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity() {
+}
+ \ No newline at end of file
diff --git a/android/app/src/main/kotlin/com/example/kulinar_app/MainActivity.kt b/android/app/src/main/kotlin/com/example/kulinar_app/MainActivity.kt
new file mode 100644
index 0000000..9f76b6f
--- /dev/null
+++ b/android/app/src/main/kotlin/com/example/kulinar_app/MainActivity.kt
@@ -0,0 +1,44 @@
+package com.example.kulinar_app
+
+import io.flutter.embedding.android.FlutterActivity
+import android.content.Intent
+import android.os.Bundle
+import androidx.annotation.NonNull
+import io.flutter.embedding.engine.FlutterEngine
+import io.flutter.plugin.common.MethodChannel
+import io.flutter.plugins.GeneratedPluginRegistrant
+
+class MainActivity : FlutterActivity() {
+ private val CHANNEL = "com.davidpenkowoj.kulinar.openfile"
+
+ var openPath: String? = null
+ override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
+ GeneratedPluginRegistrant.registerWith(flutterEngine)
+ val channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL)
+ channel.setMethodCallHandler { call, result ->
+ when (call.method) {
+ "getOpenFileUrl" -> {
+ result.success(openPath)
+ }
+ else -> result.notImplemented()
+ }
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ handleOpenFileUrl(intent)
+ }
+
+ override fun onNewIntent(intent: Intent) {
+ super.onNewIntent(intent)
+ handleOpenFileUrl(intent)
+ }
+
+ private fun handleOpenFileUrl(intent: Intent?) {
+ val path = intent?.data?.path
+ if (path != null) {
+ openPath = path
+ }
+ }
+}
diff --git a/android/app/src/main/res/drawable-v21/launch_background.xml b/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000..f74085f
--- /dev/null
+++ b/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+<?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">
+ <item android:drawable="?android:colorBackground" />
+
+ <!-- You can insert your own image assets here -->
+ <!-- <item>
+ <bitmap
+ android:gravity="center"
+ android:src="@mipmap/launch_image" />
+ </item> -->
+</layer-list>
diff --git a/android/app/src/main/res/drawable/launch_background.xml b/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..07f7a98
--- /dev/null
+++ b/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,15 @@
+<?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">
+ <!-- <item android:drawable="@android:color/holo_green_dark" /> -->
+ <item android:drawable="@color/primaryColor" />
+
+ <!-- You can insert your own image assets here -->
+ <item android:width="250dp"
+ android:height="250dp"
+ android:gravity="center">
+ <bitmap
+ android:gravity="fill_horizontal|fill_vertical"
+ android:src="@drawable/launcher_icon" />
+ </item>
+</layer-list>
diff --git a/android/app/src/main/res/drawable/launcher_icon.png b/android/app/src/main/res/drawable/launcher_icon.png
new file mode 100644
index 0000000..3ffbe45
--- /dev/null
+++ b/android/app/src/main/res/drawable/launcher_icon.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..db77bb4
--- /dev/null
+++ b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-hdpi/launcher_icon.png b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png
new file mode 100644
index 0000000..e82160b
--- /dev/null
+++ b/android/app/src/main/res/mipmap-hdpi/launcher_icon.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-hdpi/notification_icon.png b/android/app/src/main/res/mipmap-hdpi/notification_icon.png
new file mode 100644
index 0000000..7b212fb
--- /dev/null
+++ b/android/app/src/main/res/mipmap-hdpi/notification_icon.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..17987b7
--- /dev/null
+++ b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files 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 0000000..ca28c9f
--- /dev/null
+++ b/android/app/src/main/res/mipmap-mdpi/launcher_icon.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-mdpi/notification_icon.png b/android/app/src/main/res/mipmap-mdpi/notification_icon.png
new file mode 100644
index 0000000..f309b39
--- /dev/null
+++ b/android/app/src/main/res/mipmap-mdpi/notification_icon.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..09d4391
--- /dev/null
+++ b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files 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 0000000..46a10b4
--- /dev/null
+++ b/android/app/src/main/res/mipmap-xhdpi/launcher_icon.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-xhdpi/notification_icon.png b/android/app/src/main/res/mipmap-xhdpi/notification_icon.png
new file mode 100644
index 0000000..d120846
--- /dev/null
+++ b/android/app/src/main/res/mipmap-xhdpi/notification_icon.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..d5f1c8d
--- /dev/null
+++ b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
new file mode 100644
index 0000000..b4b8cd1
--- /dev/null
+++ b/android/app/src/main/res/mipmap-xxhdpi/launcher_icon.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-xxhdpi/notification_icon.png b/android/app/src/main/res/mipmap-xxhdpi/notification_icon.png
new file mode 100644
index 0000000..aeff39b
--- /dev/null
+++ b/android/app/src/main/res/mipmap-xxhdpi/notification_icon.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..4d6372e
--- /dev/null
+++ b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files 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 0000000..ed89137
--- /dev/null
+++ b/android/app/src/main/res/mipmap-xxxhdpi/launcher_icon.png
Binary files differ
diff --git a/android/app/src/main/res/mipmap-xxxhdpi/notification_icon.png b/android/app/src/main/res/mipmap-xxxhdpi/notification_icon.png
new file mode 100644
index 0000000..213862d
--- /dev/null
+++ b/android/app/src/main/res/mipmap-xxxhdpi/notification_icon.png
Binary files differ
diff --git a/android/app/src/main/res/values-night/styles.xml b/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..449a9f9
--- /dev/null
+++ b/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+<?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 on -->
+ <style name="LaunchTheme" parent="@android:style/Theme.Black.NoTitleBar">
+ <!-- Show a splash screen on the activity. Automatically removed when
+ Flutter draws its first frame -->
+ <item name="android:windowBackground">@drawable/launch_background</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>
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..679c59e
--- /dev/null
+++ b/android/app/src/main/res/values/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">
+ <!-- Show a splash screen on the activity. Automatically removed when
+ Flutter draws its first frame -->
+ <item name="android:windowBackground">@drawable/launch_background</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">@drawable/launch_background</item>
+ </style>
+ <color name="primaryColor">#8BC34A</color>
+</resources>
diff --git a/android/app/src/profile/AndroidManifest.xml b/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..457869c
--- /dev/null
+++ b/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,8 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.example.kulinar_app">
+ <!-- The INTERNET permission is required for development. Specifically,
+ the Flutter tool 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>
diff --git a/android/build.gradle b/android/build.gradle
new file mode 100644
index 0000000..83ae220
--- /dev/null
+++ b/android/build.gradle
@@ -0,0 +1,31 @@
+buildscript {
+ ext.kotlin_version = '1.6.10'
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:7.1.2'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+ project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+ project.evaluationDependsOn(':app')
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/android/gradle.properties b/android/gradle.properties
new file mode 100644
index 0000000..94adc3a
--- /dev/null
+++ b/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..cc5527d
--- /dev/null
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jun 23 08:50:38 CEST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-all.zip
diff --git a/android/settings.gradle b/android/settings.gradle
new file mode 100644
index 0000000..44e62bc
--- /dev/null
+++ b/android/settings.gradle
@@ -0,0 +1,11 @@
+include ':app'
+
+def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
+def properties = new Properties()
+
+assert localPropertiesFile.exists()
+localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+
+def flutterSdkPath = properties.getProperty("flutter.sdk")
+assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"