From 9276c491bc053226f734dce153276e560583c734 Mon Sep 17 00:00:00 2001 From: Samuel Bronson Date: Wed, 18 Sep 2019 22:45:54 -0400 Subject: [PATCH] Upgrade Kotlin (to 1.3), Coroutines, Gradle and Android gradle plugin. Kotlin: 1.2.71 -> 1.3.50 Coroutines: 0.30.2 -> 1.3.1 Gradle: 4.6 -> 5.4.1 Android gradle plugin: 3.2.1 -> 3.5.0 This brings us down to *one* experimental coroutine API, and we've opted in to using it in just *one* place. (The fact that the API to opt-in to using an experimental API in a specific place is *also* experimental surely will not come back to bite us later.) --- app/build.gradle | 13 +++++-------- .../eu/kanade/tachiyomi/data/download/Downloader.kt | 2 +- .../kanade/tachiyomi/extension/ExtensionManager.kt | 2 +- .../extension/util/ExtensionInstallReceiver.kt | 8 ++++---- .../tachiyomi/extension/util/ExtensionLoader.kt | 4 ++-- .../kanade/tachiyomi/util/CoroutinesExtensions.kt | 4 ++-- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 ++-- 8 files changed, 18 insertions(+), 21 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f7945d9d4..da328ac36 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -228,14 +228,12 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" - final coroutines_version = '0.30.2' - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version" - implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$coroutines_version" // TODO: hack! + final coroutines_version = '1.3.1' implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version" } buildscript { - ext.kotlin_version = '1.2.71' + ext.kotlin_version = '1.3.50' repositories { mavenCentral() } @@ -248,10 +246,9 @@ repositories { mavenCentral() } -kotlin { - experimental { - coroutines 'enable' - } +// See https://kotlinlang.org/docs/reference/experimental.html#experimental-status-of-experimental-api-markers +tasks.withType(org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile).all { + kotlinOptions.freeCompilerArgs += ["-Xuse-experimental=kotlin.Experimental"] } androidExtensions { diff --git a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt index 0ca544936..f49585bc2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/data/download/Downloader.kt @@ -14,7 +14,7 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.source.online.HttpSource import eu.kanade.tachiyomi.source.online.fetchAllImageUrlsFromPageList import eu.kanade.tachiyomi.util.* -import kotlinx.coroutines.experimental.async +import kotlinx.coroutines.async import okhttp3.Response import rx.Observable import rx.android.schedulers.AndroidSchedulers diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt index a625c06e7..8dfcb27a4 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt @@ -13,7 +13,7 @@ import eu.kanade.tachiyomi.extension.util.ExtensionInstaller import eu.kanade.tachiyomi.extension.util.ExtensionLoader import eu.kanade.tachiyomi.source.SourceManager import eu.kanade.tachiyomi.util.launchNow -import kotlinx.coroutines.experimental.async +import kotlinx.coroutines.async import rx.Observable import rx.android.schedulers.AndroidSchedulers import rx.schedulers.Schedulers diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt index 6f08d8bc9..2a55ccd7d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionInstallReceiver.kt @@ -7,10 +7,10 @@ import android.content.IntentFilter import eu.kanade.tachiyomi.extension.model.Extension import eu.kanade.tachiyomi.extension.model.LoadResult import eu.kanade.tachiyomi.util.launchNow -import kotlinx.coroutines.experimental.CoroutineStart -import kotlinx.coroutines.experimental.Dispatchers -import kotlinx.coroutines.experimental.GlobalScope -import kotlinx.coroutines.experimental.async +import kotlinx.coroutines.CoroutineStart +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.async /** * Broadcast receiver that listens for the system's packages installed, updated or removed, and only diff --git a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt index 805effe06..f211d7d95 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/extension/util/ExtensionLoader.kt @@ -13,8 +13,8 @@ import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.Source import eu.kanade.tachiyomi.source.SourceFactory import eu.kanade.tachiyomi.util.Hash -import kotlinx.coroutines.experimental.async -import kotlinx.coroutines.experimental.runBlocking +import kotlinx.coroutines.async +import kotlinx.coroutines.runBlocking import timber.log.Timber import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get diff --git a/app/src/main/java/eu/kanade/tachiyomi/util/CoroutinesExtensions.kt b/app/src/main/java/eu/kanade/tachiyomi/util/CoroutinesExtensions.kt index 2c77a7eb8..93665ffbe 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/util/CoroutinesExtensions.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/util/CoroutinesExtensions.kt @@ -1,10 +1,10 @@ package eu.kanade.tachiyomi.util -import kotlinx.coroutines.experimental.* -import kotlinx.coroutines.experimental.android.Main +import kotlinx.coroutines.* fun launchUI(block: suspend CoroutineScope.() -> Unit): Job = GlobalScope.launch(Dispatchers.Main, CoroutineStart.DEFAULT, block) +@UseExperimental(ExperimentalCoroutinesApi::class) fun launchNow(block: suspend CoroutineScope.() -> Unit): Job = GlobalScope.launch(Dispatchers.Main, CoroutineStart.UNDISPATCHED, block) diff --git a/build.gradle b/build.gradle index 2885a88fc..3381b34e4 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.2.1' + classpath 'com.android.tools.build:gradle:3.5.0' classpath 'com.github.ben-manes:gradle-versions-plugin:0.17.0' classpath 'com.github.zellius:android-shortcut-gradle-plugin:0.1.2' classpath 'com.google.gms:google-services:3.2.0' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index bccb59f89..a35c3abf0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Tue Sep 25 08:47:56 CEST 2018 +#Wed Sep 18 21:00:59 EDT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip