From 834d53fbbfcaef45172f6f4dc57c7c41815ba071 Mon Sep 17 00:00:00 2001
From: Charles Lombardo <clombardo169@gmail.com>
Date: Mon, 6 Mar 2023 02:01:37 -0500
Subject: [PATCH] android: Enable Kotlin support

---
 src/android/app/build.gradle  | 10 +++++++++-
 src/android/build.gradle      | 24 ++++--------------------
 src/android/gradle.properties |  8 +++-----
 src/android/settings.gradle   | 14 ++++++++++++++
 4 files changed, 30 insertions(+), 26 deletions(-)

diff --git a/src/android/app/build.gradle b/src/android/app/build.gradle
index 2eab98197..e230f2f92 100644
--- a/src/android/app/build.gradle
+++ b/src/android/app/build.gradle
@@ -1,4 +1,7 @@
-apply plugin: 'com.android.application'
+plugins {
+    id 'com.android.application'
+    id 'org.jetbrains.kotlin.android'
+}
 
 /**
  * Use the number of seconds/10 since Jan 1 2016 as the versionCode.
@@ -20,6 +23,10 @@ android {
         targetCompatibility JavaVersion.VERSION_11
     }
 
+    kotlinOptions {
+        jvmTarget = '11'
+    }
+
     lint {
         // This is important as it will run lint but not abort on error
         // Lint has some overly obnoxious "errors" that should really be warnings
@@ -115,6 +122,7 @@ android {
 }
 
 dependencies {
+    implementation 'androidx.core:core-ktx:1.9.0'
     implementation 'androidx.appcompat:appcompat:1.6.1'
     implementation 'androidx.exifinterface:exifinterface:1.3.6'
     implementation 'androidx.cardview:cardview:1.0.0'
diff --git a/src/android/build.gradle b/src/android/build.gradle
index 4734855d0..e2c06c58c 100644
--- a/src/android/build.gradle
+++ b/src/android/build.gradle
@@ -1,24 +1,8 @@
 // Top-level build file where you can add configuration options common to all sub-projects/modules.
-
-buildscript {
-
-    repositories {
-        google()
-        jcenter()
-    }
-    dependencies {
-        classpath 'com.android.tools.build:gradle:7.4.2'
-
-        // NOTE: Do not place your application dependencies here; they belong
-        // in the individual module build.gradle files
-    }
-}
-
-allprojects {
-    repositories {
-        google()
-        jcenter()
-    }
+plugins {
+    id 'com.android.application' version '7.4.2' apply false
+    id 'com.android.library' version '7.4.2' apply false
+    id 'org.jetbrains.kotlin.android' version '1.8.10' apply false
 }
 
 task clean(type: Delete) {
diff --git a/src/android/gradle.properties b/src/android/gradle.properties
index 8de505811..885e2af85 100644
--- a/src/android/gradle.properties
+++ b/src/android/gradle.properties
@@ -8,8 +8,6 @@
 # The setting is particularly useful for tweaking memory settings.
 android.enableJetifier=true
 android.useAndroidX=true
-org.gradle.jvmargs=-Xmx1536m
-# When configured, Gradle will run in incubating parallel mode.
-# This option should only be used with decoupled projects. More details, visit
-# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
-# org.gradle.parallel=true
+org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
+# Kotlin code style for this project: "official" or "obsolete":
+kotlin.code.style=official
diff --git a/src/android/settings.gradle b/src/android/settings.gradle
index e7b4def49..1e7b2cc14 100644
--- a/src/android/settings.gradle
+++ b/src/android/settings.gradle
@@ -1 +1,15 @@
+pluginManagement {
+    repositories {
+        gradlePluginPortal()
+        google()
+        mavenCentral()
+    }
+}
+dependencyResolutionManagement {
+    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
+    repositories {
+        google()
+        mavenCentral()
+    }
+}
 include ':app'