From 19792718c82ecdab6a50667eb2b6601dd1b6d1f5 Mon Sep 17 00:00:00 2001 From: EsraaAkram Date: Mon, 30 Sep 2024 21:01:49 +0300 Subject: [PATCH 1/5] ---update_to_target_sdk_34: 1-add dataSync service to fit android 14 (setForeground will not run on android 14 without adding the background service type) so I did it 2-adding notification permission 3-handle/remove (AD_ID permission) both required by google for android 14 4-updating gradle 5-update kotlin version 6-update compose compile ext version 7-change any required code after updating all above --- app/build.gradle | 27 +++++++++---------- app/src/main/AndroidManifest.xml | 19 ++++++++++--- .../application/TreeTrackerApplication.kt | 6 ++++- .../background/SyncNotificationManager.kt | 7 ++++- .../TreeTracker/background/TreeSyncWorker.kt | 4 +-- .../capture/TreeCaptureViewModel.kt | 2 +- .../dashboard/DashboardViewModel.kt | 2 ++ .../AnnouncementViewModel.kt | 2 +- .../messages/directmessages/ChatViewModel.kt | 2 +- .../IndividualMessageListViewModel.kt | 2 +- .../messages/survey/SurveyViewModel.kt | 2 +- .../models/TreeTrackerViewModelFactory.kt | 2 +- .../TreeTracker/preferences/Preferences.kt | 4 ++- .../TreeTracker/splash/SplashScreen.kt | 25 ++++++++++------- .../splash/SplashScreenViewModel.kt | 2 +- build.gradle | 14 ++++++---- gradle.properties | 3 +++ gradle/wrapper/gradle-wrapper.properties | 2 +- 18 files changed, 81 insertions(+), 46 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 8a71328c1..84a3543d3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -18,13 +18,11 @@ def loadExtraProperties(String fileName) { loadExtraProperties("treetracker.keys.properties") android { - compileSdkVersion 31 - buildToolsVersion '30.0.3' - + compileSdkVersion 34 defaultConfig { applicationId "org.greenstand.android.TreeTracker" minSdkVersion 21 - targetSdkVersion 31 + targetSdkVersion 34 versionCode 196 versionName "2.1.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" @@ -63,7 +61,7 @@ android { } composeOptions { - kotlinCompilerExtensionVersion compose_version + kotlinCompilerExtensionVersion "1.5.14" } compileOptions { @@ -73,12 +71,6 @@ android { coreLibraryDesugaringEnabled = true } - lintOptions { - checkReleaseBuilds false - // Or, if you prefer, you can continue to check for errors in release builds, - // but continue the build even when errors are found: - abortOnError false - } buildTypes { release { @@ -170,6 +162,11 @@ android { exclude 'META-INF/INDEX.LIST' } + lint { + abortOnError false + checkReleaseBuilds false + } + namespace 'org.greenstand.android.TreeTracker' } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { @@ -215,7 +212,7 @@ dependencies { implementation "androidx.compose.material:material:$compose_version" implementation "androidx.compose.animation:animation:$compose_version" implementation "androidx.activity:activity-compose:1.3.0" - implementation "androidx.navigation:navigation-compose:2.4.1" + implementation "androidx.navigation:navigation-compose:2.5.0" //Permissions management library for Jetpack Compose implementation "com.google.accompanist:accompanist-permissions:0.21.1-beta" @@ -228,9 +225,9 @@ dependencies { coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:1.1.5") //Database - implementation 'androidx.room:room-runtime:2.4.0-beta01' - implementation 'androidx.room:room-ktx:2.4.0-beta01' - kapt "androidx.room:room-compiler:2.4.0-beta01" + implementation 'androidx.room:room-runtime:2.6.1' + implementation 'androidx.room:room-ktx:2.6.1' + kapt "androidx.room:room-compiler:2.6.1" devImplementation 'com.amitshekhar.android:debug-db:1.0.6' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index da53d080d..14f9896eb 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,22 +1,30 @@ - + + - + + + + + + - + = Build.VERSION_CODES.R) { + ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC + } else { + 0 + }) } @RequiresApi(Build.VERSION_CODES.O) diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/background/TreeSyncWorker.kt b/app/src/main/java/org/greenstand/android/TreeTracker/background/TreeSyncWorker.kt index 1f2ceac42..e7b3f4816 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/background/TreeSyncWorker.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/background/TreeSyncWorker.kt @@ -68,9 +68,9 @@ class TreeSyncWorker( notificationManager.createNotificationChannel(channel) } - val PENDING_INTENT_FLAG_MUTABLE = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) PendingIntent.FLAG_MUTABLE else 0 + val pendingFlag = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) PendingIntent.FLAG_MUTABLE else 0 val notification = NotificationCompat.Builder(applicationContext, NOTIFICATION_CHANNEL_ID) - .setContentIntent(PendingIntent.getActivity(applicationContext, 0, Intent(applicationContext, TreeTrackerActivity::class.java), PENDING_INTENT_FLAG_MUTABLE)) + .setContentIntent(PendingIntent.getActivity(applicationContext, 0, Intent(applicationContext, TreeTrackerActivity::class.java), pendingFlag)) .setSmallIcon(R.drawable.upload_icon) .setOngoing(true) .setAutoCancel(true) diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/capture/TreeCaptureViewModel.kt b/app/src/main/java/org/greenstand/android/TreeTracker/capture/TreeCaptureViewModel.kt index 2a77ffc70..f9f71a559 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/capture/TreeCaptureViewModel.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/capture/TreeCaptureViewModel.kt @@ -103,7 +103,7 @@ class TreeCaptureViewModel( class TreeCaptureViewModelFactory(private val profilePicUrl: String) : ViewModelProvider.Factory, KoinComponent { @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { + override fun create(modelClass: Class): T { CaptureFlowScopeManager.open() return TreeCaptureViewModel(profilePicUrl, get(), get(), get(), get(), get(), get()) as T } diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/dashboard/DashboardViewModel.kt b/app/src/main/java/org/greenstand/android/TreeTracker/dashboard/DashboardViewModel.kt index 3267d7476..2c76db2a1 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/dashboard/DashboardViewModel.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/dashboard/DashboardViewModel.kt @@ -121,6 +121,8 @@ class DashboardViewModel( triggerSnackBar(R.string.sync_preparing) _isSyncing = true } + + null -> {} } } diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/messages/announcementmessage/AnnouncementViewModel.kt b/app/src/main/java/org/greenstand/android/TreeTracker/messages/announcementmessage/AnnouncementViewModel.kt index a67cc0a4b..bdf081ac4 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/messages/announcementmessage/AnnouncementViewModel.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/messages/announcementmessage/AnnouncementViewModel.kt @@ -62,7 +62,7 @@ class AnnouncementViewModelFactory( ) : ViewModelProvider.Factory, KoinComponent { @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { + override fun create(modelClass: Class): T { return AnnouncementViewModel(messageId, get()) as T } } \ No newline at end of file diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/messages/directmessages/ChatViewModel.kt b/app/src/main/java/org/greenstand/android/TreeTracker/messages/directmessages/ChatViewModel.kt index 1b54f3b2e..1703c73bd 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/messages/directmessages/ChatViewModel.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/messages/directmessages/ChatViewModel.kt @@ -99,7 +99,7 @@ class ChatViewModel( class ChatViewModelFactory(private val userId: Long, private val otherChatIdentifier: String) : ViewModelProvider.Factory, KoinComponent { @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { + override fun create(modelClass: Class): T { return ChatViewModel(userId, otherChatIdentifier, get(), get()) as T } } \ No newline at end of file diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/messages/individualmeassagelist/IndividualMessageListViewModel.kt b/app/src/main/java/org/greenstand/android/TreeTracker/messages/individualmeassagelist/IndividualMessageListViewModel.kt index d3cc61081..55b374680 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/messages/individualmeassagelist/IndividualMessageListViewModel.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/messages/individualmeassagelist/IndividualMessageListViewModel.kt @@ -92,7 +92,7 @@ class IndividualMessageListViewModel( class IndividualMessageListViewModelFactory(private val userId: Long) : ViewModelProvider.Factory, KoinComponent { @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { + override fun create(modelClass: Class): T { return IndividualMessageListViewModel(userId, get(), get()) as T } } \ No newline at end of file diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/messages/survey/SurveyViewModel.kt b/app/src/main/java/org/greenstand/android/TreeTracker/messages/survey/SurveyViewModel.kt index e2b7b6c9f..65602889a 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/messages/survey/SurveyViewModel.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/messages/survey/SurveyViewModel.kt @@ -107,7 +107,7 @@ class SurveyViewModel( class SurveyViewModelFactory(private val messageId: String) : ViewModelProvider.Factory, KoinComponent { @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { + override fun create(modelClass: Class): T { return SurveyViewModel(messageId, get(), get()) as T } } \ No newline at end of file diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/models/TreeTrackerViewModelFactory.kt b/app/src/main/java/org/greenstand/android/TreeTracker/models/TreeTrackerViewModelFactory.kt index 32e85509d..489370b05 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/models/TreeTrackerViewModelFactory.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/models/TreeTrackerViewModelFactory.kt @@ -38,7 +38,7 @@ import org.koin.core.component.get @Suppress("UNCHECKED_CAST") class TreeTrackerViewModelFactory : ViewModelProvider.NewInstanceFactory(), KoinComponent { - override fun create(modelClass: Class): T { + override fun create(modelClass: Class): T { return when { modelClass.isAssignableFrom(UserSelectViewModel::class.java) -> get() as T modelClass.isAssignableFrom(DashboardViewModel::class.java) -> get() as T diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/preferences/Preferences.kt b/app/src/main/java/org/greenstand/android/TreeTracker/preferences/Preferences.kt index fdd44260b..cb3bfad3e 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/preferences/Preferences.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/preferences/Preferences.kt @@ -28,7 +28,9 @@ class Preferences( private val prefUpdateFlow: MutableSharedFlow = MutableSharedFlow(replay = 1) private val preferenceChangeListener: SharedPreferences.OnSharedPreferenceChangeListener = SharedPreferences.OnSharedPreferenceChangeListener { _, key -> - prefUpdateFlow.tryEmit(key) + if (key != null) { + prefUpdateFlow.tryEmit(key) + } } init { diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/splash/SplashScreen.kt b/app/src/main/java/org/greenstand/android/TreeTracker/splash/SplashScreen.kt index 7e5287320..e3f2941c6 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/splash/SplashScreen.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/splash/SplashScreen.kt @@ -16,6 +16,7 @@ package org.greenstand.android.TreeTracker.splash import android.Manifest +import android.os.Build import androidx.activity.compose.rememberLauncherForActivityResult import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.Image @@ -45,6 +46,20 @@ fun SplashScreen( viewModel: SplashScreenViewModel = viewModel(factory = SplashScreenViewModelFactory(orgJsonString)), navController: NavHostController = LocalNavHostController.current, ) { + val permissions = mutableListOf( +// Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.CAMERA, + Manifest.permission.ACCESS_COARSE_LOCATION, + Manifest.permission.ACCESS_FINE_LOCATION + ) + + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + permissions.add(Manifest.permission.POST_NOTIFICATIONS) + } + + + val scope = rememberCoroutineScope() val permissionRequester = rememberLauncherForActivityResult( @@ -68,16 +83,8 @@ fun SplashScreen( } } ) - LaunchedEffect(true) { - permissionRequester.launch( - arrayOf( - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.CAMERA, - Manifest.permission.ACCESS_COARSE_LOCATION, - Manifest.permission.ACCESS_FINE_LOCATION - ) - ) + permissionRequester.launch(permissions.toTypedArray()) } Image( diff --git a/app/src/main/java/org/greenstand/android/TreeTracker/splash/SplashScreenViewModel.kt b/app/src/main/java/org/greenstand/android/TreeTracker/splash/SplashScreenViewModel.kt index 32c727681..7bcd33ff6 100644 --- a/app/src/main/java/org/greenstand/android/TreeTracker/splash/SplashScreenViewModel.kt +++ b/app/src/main/java/org/greenstand/android/TreeTracker/splash/SplashScreenViewModel.kt @@ -78,7 +78,7 @@ class SplashScreenViewModel( class SplashScreenViewModelFactory(private val orgJsonString: String?) : ViewModelProvider.Factory, KoinComponent { @Suppress("UNCHECKED_CAST") - override fun create(modelClass: Class): T { + override fun create(modelClass: Class): T { return SplashScreenViewModel(orgJsonString, get(), get(), get(), get(), get(), get(), get(), get(), get()) as T } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index 5350a2ffd..c863f52d3 100644 --- a/build.gradle +++ b/build.gradle @@ -1,19 +1,21 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.9.24' repositories { google() jcenter() + mavenCentral() maven { url "https://plugins.gradle.org/m2/" } + maven { url 'https://jitpack.io' } } dependencies { - classpath 'com.android.tools.build:gradle:7.0.0' - classpath 'com.google.gms:google-services:4.3.3' + classpath 'com.android.tools.build:gradle:8.5.2' + classpath 'com.google.gms:google-services:4.4.2' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.5" + classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.8.1' classpath 'org.jlleitschuh.gradle:ktlint-gradle:11.0.0' classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.18.0' classpath 'io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.18.0-RC2' @@ -36,10 +38,12 @@ allprojects { repositories { google() jcenter() + mavenCentral() maven { url "https://maven.google.com" // Google's Maven repository } maven { url "https://oss.sonatype.org/content/repositories/snapshots" } + maven { url 'https://jitpack.io' } } ext { @@ -81,6 +85,6 @@ subprojects { } } -task clean(type: Delete) { +tasks.register('clean', Delete) { delete rootProject.buildDir } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 988d1ed5e..845225d91 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,6 +14,9 @@ android.enableJetifier=true android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m org.gradle.warning.mode=all +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false # When configured, Gradle will run in incubating parallel mode. diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ffed3a254..48c0a02ca 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From a013f6d8185aa1de4237424117aefc387984276e Mon Sep 17 00:00:00 2001 From: EsraaAkram Date: Tue, 1 Oct 2024 22:16:15 +0300 Subject: [PATCH 2/5] ---update_to_target_sdk_34: update unit test libs --- app/build.gradle | 4 +++- build.gradle | 4 ++-- gradle.properties | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 84a3543d3..2da199eb7 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -54,6 +54,8 @@ android { buildFeatures { compose true viewBinding true + + buildConfig = true } kotlinOptions { @@ -260,7 +262,7 @@ dependencies { implementation 'com.google.firebase:firebase-iid:21.0.1' testImplementation 'androidx.test:core-ktx:1.5.0' - testImplementation "io.mockk:mockk:1.10.0" + testImplementation "io.mockk:mockk:1.13.12" testImplementation "junit:junit:4.13.1" testImplementation "androidx.room:room-testing:2.2.6" testImplementation "org.jetbrains.kotlinx:kotlinx-coroutines-test:1.3.9" diff --git a/build.gradle b/build.gradle index c863f52d3..1ba7715e8 100644 --- a/build.gradle +++ b/build.gradle @@ -4,7 +4,7 @@ buildscript { ext.kotlin_version = '1.9.24' repositories { google() - jcenter() +// jcenter() mavenCentral() maven { url "https://plugins.gradle.org/m2/" } maven { url 'https://jitpack.io' } @@ -37,7 +37,7 @@ allprojects { } repositories { google() - jcenter() +// jcenter() mavenCentral() maven { url "https://maven.google.com" // Google's Maven repository diff --git a/gradle.properties b/gradle.properties index 845225d91..40212fdd1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,7 +14,7 @@ android.enableJetifier=true android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m org.gradle.warning.mode=all -android.defaults.buildfeatures.buildconfig=true +#android.defaults.buildfeatures.buildconfig=true android.nonTransitiveRClass=false android.nonFinalResIds=false From 25a7fccf812f4cfa55e5e5531919883133a59be9 Mon Sep 17 00:00:00 2001 From: EsraaAkram Date: Tue, 1 Oct 2024 23:43:07 +0300 Subject: [PATCH 3/5] ---update_to_target_sdk_34: downgrade navigation --- build.gradle | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 1ba7715e8..aa6e39a08 100644 --- a/build.gradle +++ b/build.gradle @@ -15,7 +15,8 @@ buildscript { classpath 'com.google.gms:google-services:4.4.2' classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.2' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'androidx.navigation:navigation-safe-args-gradle-plugin:2.8.1' + classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.5.0" + classpath 'org.jlleitschuh.gradle:ktlint-gradle:11.0.0' classpath 'com.diffplug.spotless:spotless-plugin-gradle:6.18.0' classpath 'io.gitlab.arturbosch.detekt:detekt-gradle-plugin:1.18.0-RC2' From af91cfc94b9505a204645ec14b0c458f162deb45 Mon Sep 17 00:00:00 2001 From: EsraaAkram Date: Wed, 2 Oct 2024 16:17:57 +0300 Subject: [PATCH 4/5] ---update_to_target_sdk_34: java_version_edited --- app/build.gradle | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 2da199eb7..a4af175ec 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -59,7 +59,7 @@ android { } kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "11" //"1.8" } composeOptions { @@ -67,8 +67,8 @@ android { } compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11//VERSION_1_8 + targetCompatibility JavaVersion.VERSION_11 coreLibraryDesugaringEnabled = true } @@ -173,7 +173,7 @@ android { tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach { kotlinOptions { - jvmTarget = "1.8" + jvmTarget = "11" //"1.8" } } From 69bc1173cfdd033bddd0a989b5a20fbeeb1955d6 Mon Sep 17 00:00:00 2001 From: Tarek-Bohdima Date: Mon, 7 Oct 2024 01:21:36 +0300 Subject: [PATCH 5/5] chore(ci): Update workflow to use JDK 17 Updates the CI workflow to use Java 17 to support the latest Android Gradle plugin. Updates the `debug-db` dependency to resolve a 401 Unauthorized error during dependency resolution. --- .github/workflows/pull_request.yml | 9 +++++---- app/build.gradle | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml index be79945c1..b93baeea9 100644 --- a/.github/workflows/pull_request.yml +++ b/.github/workflows/pull_request.yml @@ -11,11 +11,12 @@ jobs: name: test and assemble runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: set up JDK 11 - uses: actions/setup-java@v1 + - uses: actions/checkout@v3 + - name: set up JDK 17 + uses: actions/setup-java@v3 with: - java-version: 11 + java-version: 17 + distribution: 'temurin' - name: Generate dummy property file run: | echo "#Treetracker API Keys diff --git a/app/build.gradle b/app/build.gradle index a4af175ec..1363116ab 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -231,7 +231,7 @@ dependencies { implementation 'androidx.room:room-ktx:2.6.1' kapt "androidx.room:room-compiler:2.6.1" - devImplementation 'com.amitshekhar.android:debug-db:1.0.6' + devImplementation 'com.github.amitshekhariitbhu.Android-Debug-Database:debug-db:v1.0.6' api "com.squareup.retrofit2:converter-gson:${retrofit2Version}" implementation "com.squareup.retrofit2:retrofit:${retrofit2Version}"