diff --git a/.gitignore b/.gitignore index 1d91a10..c3b99dc 100644 --- a/.gitignore +++ b/.gitignore @@ -47,7 +47,6 @@ proguard/ captures/ # IntelliJ -*.iml .idea/workspace.xml .idea/tasks.xml .idea/gradle.xml @@ -66,7 +65,6 @@ captures/ #*.keystore # External native build folder generated in Android Studio 2.2 and later -.externalNativeBuild .cxx/ # Google Services (e.g. APIs or Firebase) @@ -92,8 +90,5 @@ lint/intermediates/ lint/generated/ lint/outputs/ lint/tmp/ -# lint/reports/ -app/google-services.json -.idea/codeStyles/Project.xml .idea/codeStyles/Project.xml app/release/output.json diff --git a/app/build.gradle b/app/build.gradle index 6f0a2d0..7618e96 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,5 +1,6 @@ +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' apply plugin: 'kotlin-parcelize' apply plugin: 'org.jetbrains.kotlin.plugin.serialization' apply plugin: 'com.google.devtools.ksp' @@ -8,40 +9,43 @@ apply plugin: 'com.google.firebase.crashlytics' apply plugin: 'com.google.gms.google-services' android { - compileSdk 37 + compileSdk = 37 defaultConfig { - applicationId "com.cornellappdev.coursegrab" - minSdkVersion 24 - targetSdkVersion 34 - versionCode 10 - versionName "1.2.0" - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" + applicationId = "com.cornellappdev.coursegrab" + minSdk = 24 + targetSdk = 34 + versionCode = 10 + versionName = "1.2.0" + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" buildConfigField("String", "BACKEND_URI", "\"coursegrab-backend.cornellappdev.com\"") } buildTypes { debug { manifestPlaceholders = [crashlyticsCollectionEnabled: "false"] - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + minifyEnabled = false + proguardFiles(getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro') } release { manifestPlaceholders = [crashlyticsCollectionEnabled: "true"] - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' + minifyEnabled = false + proguardFiles(getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro') } } compileOptions { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 - } - kotlinOptions { - jvmTarget = '11' + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } buildFeatures { - viewBinding true - buildConfig true + viewBinding = true + buildConfig = true + } + namespace = 'com.cornellappdev.coursegrab' +} + +kotlin { + compilerOptions { + jvmTarget = JvmTarget.JVM_17 } - namespace 'com.cornellappdev.coursegrab' } dependencies { @@ -57,18 +61,18 @@ dependencies { implementation 'androidx.credentials:credentials-play-services-auth:1.6.0' implementation 'com.google.android.libraries.identity.googleid:googleid:1.2.0' implementation 'com.squareup.okhttp3:okhttp:5.5.0' - implementation "com.squareup.retrofit2:retrofit:$retrofit_version" - implementation "com.squareup.retrofit2:converter-kotlinx-serialization:$retrofit_version" + implementation "com.squareup.retrofit2:retrofit:${rootProject.ext.retrofit_version}" + implementation "com.squareup.retrofit2:converter-kotlinx-serialization:${rootProject.ext.retrofit_version}" implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.11.0' implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.11.0' - implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$serialization_json_version" + implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:${rootProject.ext.serialization_json_version}" implementation 'androidx.appcompat:appcompat:1.8.0' implementation 'androidx.core:core-ktx:1.19.0' implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.11.0' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.11.0' - implementation 'androidx.activity:activity-ktx:1.8.0' - implementation "com.google.dagger:hilt-android:$hilt_version" - ksp "com.google.dagger:hilt-compiler:$hilt_version" + implementation 'androidx.activity:activity-ktx:1.13.0' + implementation "com.google.dagger:hilt-android:${rootProject.ext.hilt_version}" + ksp "com.google.dagger:hilt-compiler:${rootProject.ext.hilt_version}" implementation 'androidx.constraintlayout:constraintlayout:2.2.2' implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.2.0' testImplementation 'junit:junit:4.13.2' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ee41f36..d303cd0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -38,7 +38,7 @@ + android:theme="@style/Theme.AppCompat.Light.NoActionBar" /> diff --git a/app/src/main/java/com/cornellappdev/coursegrab/ui/details/CourseDetailsActivity.kt b/app/src/main/java/com/cornellappdev/coursegrab/ui/details/CourseDetailsActivity.kt index 00683b8..c78ef9e 100644 --- a/app/src/main/java/com/cornellappdev/coursegrab/ui/details/CourseDetailsActivity.kt +++ b/app/src/main/java/com/cornellappdev/coursegrab/ui/details/CourseDetailsActivity.kt @@ -36,7 +36,11 @@ class CourseDetailsActivity : AppCompatActivity() { val courseDetails: SearchResult = intent.getParcelableExtra("courseDetails") as SearchResult - binding.headerTextView.text = "${courseDetails.subjectCode} ${courseDetails.courseNum}" + binding.headerTextView.text = getString( + R.string.course_header_format, + courseDetails.subjectCode, + courseDetails.courseNum + ) binding.courseTitle.text = courseDetails.title binding.courseDetails.text = @@ -91,7 +95,11 @@ class CourseDetailsActivity : AppCompatActivity() { holder.sectionStatus.setImageResource(if (availableCourses[position].isOpen) R.drawable.ic_status_open else R.drawable.ic_status_closed) //change tracking text - holder.trackText.text = availableCourses[position].numTracking.toString() + " Tracking" + holder.trackText.text = context.resources.getQuantityString( + R.plurals.tracking_count, + availableCourses[position].numTracking, + availableCourses[position].numTracking + ) //Change the track button to remove button holder.removeButton.visibility = diff --git a/app/src/main/java/com/cornellappdev/coursegrab/ui/main/MainActivity.kt b/app/src/main/java/com/cornellappdev/coursegrab/ui/main/MainActivity.kt index 3cf3d2e..a4f09e5 100644 --- a/app/src/main/java/com/cornellappdev/coursegrab/ui/main/MainActivity.kt +++ b/app/src/main/java/com/cornellappdev/coursegrab/ui/main/MainActivity.kt @@ -140,13 +140,13 @@ class MainActivity : AppCompatActivity() { layoutManager = LinearLayoutManager(this@MainActivity) adapter = AvailableAdapter(state.available, this@MainActivity) } - binding.availableTitle.text = "${state.available.size} Available" + binding.availableTitle.text = getString(R.string.available_count, state.available.size) binding.awaitingList.apply { layoutManager = LinearLayoutManager(this@MainActivity) adapter = AwaitingAdapter(state.awaiting, this@MainActivity) } - binding.awaitingTitle.text = "${state.awaiting.size} Awaiting" + binding.awaitingTitle.text = getString(R.string.awaiting_count, state.awaiting.size) binding.layoutAvailable.visibility = if (state.available.isNotEmpty()) View.VISIBLE else View.GONE @@ -209,8 +209,12 @@ class MainActivity : AppCompatActivity() { } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - holder.courseTitle.text = - "${availableCourses[position].subjectCode} ${availableCourses[position].courseNum}: ${availableCourses[position].title}" + holder.courseTitle.text = context.getString( + R.string.course_title_format, + availableCourses[position].subjectCode, + availableCourses[position].courseNum, + availableCourses[position].title + ) holder.courseTime.text = availableCourses[position].section.uppercase(getDefault()) holder.coursePin.text = availableCourses[position].catalogNum.toString() holder.courseStatus.setImageResource(if (availableCourses[position].isOpen) R.drawable.ic_status_open else R.drawable.ic_status_closed) @@ -260,8 +264,12 @@ class MainActivity : AppCompatActivity() { } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - holder.courseTitle.text = - "${awaitingCourses[position].subjectCode} ${awaitingCourses[position].courseNum}: ${awaitingCourses[position].title}" + holder.courseTitle.text = context.getString( + R.string.course_title_format, + awaitingCourses[position].subjectCode, + awaitingCourses[position].courseNum, + awaitingCourses[position].title + ) holder.courseTime.text = awaitingCourses[position].section.uppercase(getDefault()) holder.coursePin.text = awaitingCourses[position].catalogNum.toString() holder.courseStatus.setImageResource(if (awaitingCourses[position].isOpen) R.drawable.ic_status_open else R.drawable.ic_status_closed) diff --git a/app/src/main/java/com/cornellappdev/coursegrab/ui/notification/NotificationModal.kt b/app/src/main/java/com/cornellappdev/coursegrab/ui/notification/NotificationModal.kt index 72827b6..c175efb 100644 --- a/app/src/main/java/com/cornellappdev/coursegrab/ui/notification/NotificationModal.kt +++ b/app/src/main/java/com/cornellappdev/coursegrab/ui/notification/NotificationModal.kt @@ -1,9 +1,10 @@ package com.cornellappdev.coursegrab.ui.notification import android.content.Intent -import android.net.Uri import android.os.Bundle import androidx.appcompat.app.AppCompatActivity +import androidx.core.net.toUri +import com.cornellappdev.coursegrab.R import com.cornellappdev.coursegrab.databinding.ActivityNotificationModalBinding import com.cornellappdev.coursegrab.models.Course import com.cornellappdev.coursegrab.models.CourseNotification @@ -22,13 +23,18 @@ class NotificationModal : AppCompatActivity() { val course: Course = (intent.getParcelableExtra("courseDetails") as CourseNotification).section - binding.courseTitle.text = "${course.subjectCode} ${course.courseNum}: ${course.title}" + binding.courseTitle.text = getString( + R.string.course_title_format, + course.subjectCode, + course.courseNum, + course.title + ) binding.courseSection.text = course.section binding.coursePin.text = course.catalogNum.toString() binding.buttonStudentCenter.setOnClickListener { val browserIntent = - Intent(Intent.ACTION_VIEW, Uri.parse("http://studentcenter.cornell.edu")) + Intent(Intent.ACTION_VIEW, "http://studentcenter.cornell.edu".toUri()) startActivity(browserIntent) } diff --git a/app/src/main/java/com/cornellappdev/coursegrab/ui/search/SearchActivity.kt b/app/src/main/java/com/cornellappdev/coursegrab/ui/search/SearchActivity.kt index 95c5b07..724a5e8 100644 --- a/app/src/main/java/com/cornellappdev/coursegrab/ui/search/SearchActivity.kt +++ b/app/src/main/java/com/cornellappdev/coursegrab/ui/search/SearchActivity.kt @@ -139,8 +139,12 @@ class SearchActivity : AppCompatActivity() { } override fun onBindViewHolder(holder: ViewHolder, position: Int) { - holder.courseTitle.text = - "${resultsCourses[position].subjectCode} ${resultsCourses[position].courseNum}: ${resultsCourses[position].title}" + holder.courseTitle.text = context.getString( + R.string.course_title_format, + resultsCourses[position].subjectCode, + resultsCourses[position].courseNum, + resultsCourses[position].title + ) holder.expandButton.setOnClickListener { val intent = Intent(context, CourseDetailsActivity::class.java).apply { diff --git a/app/src/main/java/com/cornellappdev/coursegrab/ui/splash/SplashScreenActivity.kt b/app/src/main/java/com/cornellappdev/coursegrab/ui/splash/SplashScreenActivity.kt index 764209c..7d283a3 100644 --- a/app/src/main/java/com/cornellappdev/coursegrab/ui/splash/SplashScreenActivity.kt +++ b/app/src/main/java/com/cornellappdev/coursegrab/ui/splash/SplashScreenActivity.kt @@ -11,6 +11,7 @@ import android.view.View import android.view.WindowInsets import android.widget.VideoView import androidx.appcompat.app.AppCompatActivity +import androidx.core.net.toUri import com.cornellappdev.coursegrab.R import com.cornellappdev.coursegrab.databinding.ActivitySplashScreenBinding import com.cornellappdev.coursegrab.ui.login.LoginActivity @@ -74,10 +75,8 @@ class SplashScreenActivity : AppCompatActivity() { fullscreenContent = binding.fullscreenContent fullscreenContent.setOnClickListener { toggle() } try { - val video: Uri = Uri.parse( - "android.resource://" + packageName + "/" - + R.raw.splash - ) + val video: Uri = ("android.resource://" + packageName + "/" + + R.raw.splash).toUri() fullscreenContent.visibility = View.VISIBLE fullscreenContent.setVideoURI(video) fullscreenContent.setOnCompletionListener { jump() } diff --git a/app/src/main/res/drawable-v24/icon.png b/app/src/main/res/drawable/icon.png similarity index 100% rename from app/src/main/res/drawable-v24/icon.png rename to app/src/main/res/drawable/icon.png diff --git a/app/src/main/res/layout/activity_course_details.xml b/app/src/main/res/layout/activity_course_details.xml index e89efaf..2529206 100644 --- a/app/src/main/res/layout/activity_course_details.xml +++ b/app/src/main/res/layout/activity_course_details.xml @@ -68,7 +68,7 @@ android:maxLines="2" android:paddingStart="14dp" android:scrollHorizontally="true" - android:text="CS 1998: Intro to Android" + tools:text="CS 1998: Intro to Android" android:textColor="@android:color/black" android:textSize="18sp" /> @@ -82,7 +82,7 @@ android:fontFamily="sans-serif-medium" android:gravity="bottom" android:paddingLeft="14dp" - android:text="LEC 006 / M 7:30PM" + tools:text="LEC 006 / M 7:30PM" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index a878cb8..53f5083 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -84,7 +84,7 @@ android:paddingStart="16dp" android:paddingTop="16dp" android:paddingBottom="4dp" - android:text="0 Available" + tools:text="0 Available" android:textColor="@color/greenTextColor" android:textSize="20sp" /> @@ -115,7 +115,7 @@ android:paddingStart="16dp" android:paddingTop="16dp" android:paddingBottom="4dp" - android:text="0 Awaiting" + tools:text="0 Awaiting" android:textColor="@android:color/black" android:textSize="20sp" /> diff --git a/app/src/main/res/layout/activity_notification_modal.xml b/app/src/main/res/layout/activity_notification_modal.xml index aab25d9..ef38273 100644 --- a/app/src/main/res/layout/activity_notification_modal.xml +++ b/app/src/main/res/layout/activity_notification_modal.xml @@ -29,7 +29,7 @@ android:layout_marginStart="20dp" android:layout_marginTop="45dp" android:layout_marginEnd="20dp" - android:text="CS 1998: Intro to Android Development" + tools:text="CS 1998: Intro to Android Development" android:textAlignment="center" android:textAllCaps="false" android:textColor="@color/white" @@ -45,7 +45,7 @@ android:layout_height="wrap_content" android:layout_marginStart="20dp" android:layout_marginEnd="20dp" - android:text="10032" + tools:text="10032" android:textAlignment="center" android:textAllCaps="false" android:textColor="@color/white" @@ -64,7 +64,7 @@ android:layout_marginTop="20dp" android:layout_marginEnd="20dp" android:fontFamily="sans-serif-medium" - android:text="lec 001 / TR 1:25pm" + tools:text="lec 001 / TR 1:25pm" android:textAlignment="center" android:textAllCaps="true" android:textColor="@color/white" diff --git a/app/src/main/res/layout/activity_search.xml b/app/src/main/res/layout/activity_search.xml index bef0cf9..091def6 100644 --- a/app/src/main/res/layout/activity_search.xml +++ b/app/src/main/res/layout/activity_search.xml @@ -72,7 +72,7 @@ android:paddingStart="14dp" android:paddingTop="16dp" android:paddingBottom="10dp" - android:text="0 Results" + tools:text="0 Results" android:textColor="@color/black" android:textSize="24sp" /> diff --git a/app/src/main/res/layout/course_available_list_item.xml b/app/src/main/res/layout/course_available_list_item.xml index ffcc08e..ba48926 100644 --- a/app/src/main/res/layout/course_available_list_item.xml +++ b/app/src/main/res/layout/course_available_list_item.xml @@ -1,5 +1,6 @@ @@ -57,7 +58,7 @@ android:fontFamily="sans-serif-medium" android:gravity="bottom" android:paddingStart="14dp" - android:text="LEC 006 / M 7:30PM" + tools:text="LEC 006 / M 7:30PM" android:textSize="16sp" /> diff --git a/app/src/main/res/layout/course_available_list_item_v2.xml b/app/src/main/res/layout/course_available_list_item_v2.xml index 2822791..4de3fa1 100644 --- a/app/src/main/res/layout/course_available_list_item_v2.xml +++ b/app/src/main/res/layout/course_available_list_item_v2.xml @@ -32,7 +32,7 @@ android:gravity="bottom" android:maxLines="2" android:scrollHorizontally="true" - android:text="CS 1998: Intro to Android" + tools:text="CS 1998: Intro to Android" android:textColor="@android:color/black" android:textSize="18sp" app:layout_constraintEnd_toStartOf="@+id/course_status" @@ -58,7 +58,7 @@ android:layout_marginTop="12dp" android:fontFamily="sans-serif-medium" android:gravity="bottom" - android:text="LEC 006 / M 7:30PM" + tools:text="LEC 006 / M 7:30PM" android:textSize="16sp" app:layout_constraintEnd_toStartOf="@+id/course_pin" app:layout_constraintStart_toStartOf="parent" @@ -70,7 +70,7 @@ android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:fontFamily="sans-serif-medium" - android:text="10032" + tools:text="10032" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="@+id/course_time" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/course_awaiting_list_item.xml b/app/src/main/res/layout/course_awaiting_list_item.xml index b9ebf17..806107c 100644 --- a/app/src/main/res/layout/course_awaiting_list_item.xml +++ b/app/src/main/res/layout/course_awaiting_list_item.xml @@ -19,7 +19,7 @@ android:gravity="bottom" android:maxLines="2" android:scrollHorizontally="true" - android:text="CS 1998: Intro to Android" + tools:text="CS 1998: Intro to Android" android:textColor="@android:color/black" android:textSize="18sp" app:layout_constraintEnd_toStartOf="@+id/course_status" @@ -45,7 +45,7 @@ android:layout_marginTop="12dp" android:fontFamily="sans-serif-medium" android:gravity="bottom" - android:text="LEC 006 / M 7:30PM" + tools:text="LEC 006 / M 7:30PM" android:textSize="16sp" app:layout_constraintEnd_toStartOf="@+id/course_pin" app:layout_constraintStart_toStartOf="parent" @@ -57,7 +57,7 @@ android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:fontFamily="sans-serif-medium" - android:text="10032" + tools:text="10032" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="@+id/course_time" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout/course_awaiting_list_item_v2.xml b/app/src/main/res/layout/course_awaiting_list_item_v2.xml index c2c58d5..bc0e33a 100644 --- a/app/src/main/res/layout/course_awaiting_list_item_v2.xml +++ b/app/src/main/res/layout/course_awaiting_list_item_v2.xml @@ -35,7 +35,7 @@ android:gravity="bottom" android:maxLines="2" android:scrollHorizontally="true" - android:text="CS 1998: Intro to Android" + tools:text="CS 1998: Intro to Android" android:textColor="@android:color/black" android:textSize="18sp" android:translationZ="2dp" @@ -64,7 +64,7 @@ android:layout_marginTop="12dp" android:fontFamily="sans-serif-medium" android:gravity="bottom" - android:text="LEC 006 / M 7:30PM" + tools:text="LEC 006 / M 7:30PM" android:textSize="16sp" android:translationZ="2dp" app:layout_constraintEnd_toStartOf="@+id/course_pin" @@ -77,7 +77,7 @@ android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:fontFamily="sans-serif-medium" - android:text="10032" + tools:text="10032" android:textSize="16sp" android:translationZ="2dp" app:layout_constraintBottom_toBottomOf="@+id/course_time" diff --git a/app/src/main/res/layout/course_search_list_item.xml b/app/src/main/res/layout/course_search_list_item.xml index 9a9641e..fd472d8 100644 --- a/app/src/main/res/layout/course_search_list_item.xml +++ b/app/src/main/res/layout/course_search_list_item.xml @@ -1,5 +1,6 @@ diff --git a/app/src/main/res/layout/course_section_item.xml b/app/src/main/res/layout/course_section_item.xml index 7d63127..1df930b 100644 --- a/app/src/main/res/layout/course_section_item.xml +++ b/app/src/main/res/layout/course_section_item.xml @@ -44,7 +44,7 @@ android:gravity="bottom" android:maxLines="2" android:scrollHorizontally="true" - android:text="LEC 001 / W 7:30PM" + tools:text="LEC 001 / W 7:30PM" android:textColor="@android:color/black" android:textSize="16sp" app:layout_constraintBottom_toBottomOf="parent" @@ -88,7 +88,7 @@ android:layout_marginStart="4dp" android:layout_marginTop="4dp" android:layout_marginBottom="4dp" - android:text="0 Tracking" + tools:text="0 Tracking" android:textSize="14sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/trackingLogo" diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1b971f1..c93c206 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -18,7 +18,7 @@ coursegrab_alert Add - Enter a Course ID... + Enter a Course ID… Find Courses @@ -43,6 +43,15 @@ Try a different query + + %1$s %2$d: %3$s + %1$s %2$d + %d Available + %d Awaiting + + %d Tracking + %d Tracking + %d Result %d Results diff --git a/build.gradle b/build.gradle index 8e1ab03..3c61c67 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,9 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - // Pegged to 2.2.x: Hilt's annotation processor cannot read Kotlin 2.4 metadata. - ext.kotlin_version = '2.2.0' - ext.ksp_version = '2.2.0-2.0.2' - ext.hilt_version = '2.56.2' + ext.kotlin_version = '2.4.10' + ext.ksp_version = '2.3.9' + ext.hilt_version = '2.60.1' ext.serialization_json_version = '1.9.0' ext.retrofit_version = '3.0.0' repositories { @@ -33,5 +32,5 @@ allprojects { } tasks.register('clean', Delete) { - delete rootProject.buildDir + delete rootProject.layout.buildDirectory } diff --git a/gradle.properties b/gradle.properties index f26acd6..a08ba65 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,20 +15,10 @@ org.gradle.jvmargs=-Xmx1536m # Android operating system, and which are packaged with your app's APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true -# Automatically convert third-party libraries to use AndroidX -android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official android.nonTransitiveRClass=false -android.nonFinalResIds=false -android.defaults.buildfeatures.resvalues=true -android.sdk.defaultTargetSdkToCompileSdkIfUnset=false -android.enableAppCompileTimeRClass=false -android.usesSdkInManifest.disallowed=false android.uniquePackageNames=false android.dependency.useConstraints=true android.r8.strictFullModeForKeepRules=false -android.r8.optimizedResourceShrinking=false -android.builtInKotlin=false -android.newDsl=false android.buildFeatures.buildConfig = true