From 5fd7fb1807747f8e2fc3274387182faa76e18e6d Mon Sep 17 00:00:00 2001 From: Nicolas Pomepuy <nicolas@videolabs.io> Date: Fri, 21 Mar 2025 08:51:34 +0100 Subject: [PATCH 1/3] Bump android gradle plugin and kotlin versions --- .../org/videolan/vlc/gui/DebugLogActivity.kt | 2 +- .../org/videolan/vlc/util/FilterDelegate.kt | 37 ++++++++++--------- .../org/videolan/vlc/viewmodels/BaseModel.kt | 2 +- build.gradle | 4 +- 4 files changed, 23 insertions(+), 22 deletions(-) diff --git a/application/vlc-android/src/org/videolan/vlc/gui/DebugLogActivity.kt b/application/vlc-android/src/org/videolan/vlc/gui/DebugLogActivity.kt index 4d59c31475..0aeaaa37f0 100644 --- a/application/vlc-android/src/org/videolan/vlc/gui/DebugLogActivity.kt +++ b/application/vlc-android/src/org/videolan/vlc/gui/DebugLogActivity.kt @@ -157,7 +157,7 @@ class DebugLogActivity : FragmentActivity(), DebugLogService.Client.Callback { share(File(path)) } } else { - UiTools.snacker(window.decorView.findViewById(android.R.id.content), R.string.dump_logcat_failure) + UiTools.snacker(this, R.string.dump_logcat_failure) } } diff --git a/application/vlc-android/src/org/videolan/vlc/util/FilterDelegate.kt b/application/vlc-android/src/org/videolan/vlc/util/FilterDelegate.kt index 8b173c9735..99a5e2f71f 100644 --- a/application/vlc-android/src/org/videolan/vlc/util/FilterDelegate.kt +++ b/application/vlc-android/src/org/videolan/vlc/util/FilterDelegate.kt @@ -1,15 +1,15 @@ package org.videolan.vlc.util -import androidx.lifecycle.MutableLiveData import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.withContext import org.videolan.medialibrary.interfaces.media.MediaWrapper import org.videolan.medialibrary.media.MediaLibraryItem import org.videolan.resources.AppContextProvider +import org.videolan.tools.livedata.LiveDataset import org.videolan.vlc.media.MediaUtils import java.util.Locale -open class FilterDelegate<T : MediaLibraryItem>(val dataset: MutableLiveData<out List<T>>) { +open class FilterDelegate<T : MediaLibraryItem>(val dataset: LiveDataset<T>) { var sourceSet: List<T>? = null protected fun initSource() : List<T>? { @@ -21,13 +21,14 @@ open class FilterDelegate<T : MediaLibraryItem>(val dataset: MutableLiveData<out protected open suspend fun filteringJob(charSequence: CharSequence?) : MutableList<T>? { if (charSequence !== null) initSource()?.let { - return withContext(Dispatchers.Default) { mutableListOf<T>().apply { - val queryStrings = charSequence.trim().toString().split(" ") - for (item in it) for (query in queryStrings) - if (item.title.contains(query, true)) { - this.add(item) - break - } + return withContext(Dispatchers.Default) { + mutableListOf<T>().apply { + val queryStrings = charSequence.trim().toString().split(" ") + for (item in it) for (query in queryStrings) + if (item.title.contains(query, true)) { + this.add(item) + break + } } } } @@ -36,17 +37,17 @@ open class FilterDelegate<T : MediaLibraryItem>(val dataset: MutableLiveData<out private fun publish(list: MutableList<T>?) { sourceSet?.let { - if (list !== null) - dataset.value = list - else { + list?.let { dataset.value = it + } ?: run { + dataset.value = it.toMutableList() sourceSet = null } } } } -class PlaylistFilterDelegate(dataset: MutableLiveData<out List<MediaWrapper>>) : FilterDelegate<MediaWrapper>(dataset) { +class PlaylistFilterDelegate(dataset: LiveDataset<MediaWrapper>) : FilterDelegate<MediaWrapper>(dataset) { override suspend fun filteringJob(charSequence: CharSequence?): MutableList<MediaWrapper>? { if (charSequence !== null) initSource()?.let { list -> @@ -61,11 +62,11 @@ class PlaylistFilterDelegate(dataset: MutableLiveData<out List<MediaWrapper>>) : val genre = MediaUtils.getMediaGenre(AppContextProvider.appContext, media).lowercase(Locale.getDefault()) for (queryString in queryStrings) { if (title.contains(queryString) || - location.contains(queryString) || - artist.contains(queryString) || - albumArtist.contains(queryString) || - album.contains(queryString) || - genre.contains(queryString)) { + location.contains(queryString) || + artist.contains(queryString) || + albumArtist.contains(queryString) || + album.contains(queryString) || + genre.contains(queryString)) { this.add(media) break } diff --git a/application/vlc-android/src/org/videolan/vlc/viewmodels/BaseModel.kt b/application/vlc-android/src/org/videolan/vlc/viewmodels/BaseModel.kt index 8acb78d443..702bfce9b4 100644 --- a/application/vlc-android/src/org/videolan/vlc/viewmodels/BaseModel.kt +++ b/application/vlc-android/src/org/videolan/vlc/viewmodels/BaseModel.kt @@ -40,7 +40,7 @@ private const val TAG = "VLC/BaseModel" abstract class BaseModel<T : MediaLibraryItem>(context: Context, val coroutineContextProvider: CoroutineContextProvider) : SortableModel(context) { - private val filter by lazy(LazyThreadSafetyMode.NONE) { FilterDelegate(dataset) } + private val filter by lazy(LazyThreadSafetyMode.NONE) { FilterDelegate<T>(dataset) } val dataset = LiveDataset<T>() open val loading = MutableLiveData<Boolean>().apply { value = false } diff --git a/build.gradle b/build.gradle index 7004c21385..5b49c5a958 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.android_plugin_version = '8.5.0' - ext.kotlin_version = '1.9.22' + ext.android_plugin_version = '8.9.1' + ext.kotlin_version = '2.1.0' ext.kotlinx_version = '1.7.1' repositories { flatDir dirs: "gradle/plugins" -- GitLab From 1015cada0c8ed324f186d274e56a72a77a5347d7 Mon Sep 17 00:00:00 2001 From: Nicolas Pomepuy <nicolas@videolabs.io> Date: Mon, 7 Apr 2025 10:38:19 +0200 Subject: [PATCH 2/3] Use the new gradle plugin syntax --- application/app/build.gradle | 6 ++++-- application/donations/build.gradle | 6 ++++-- application/live-plot-graph/build.gradle | 6 ++++-- application/mediadb/build.gradle | 9 +++++---- application/moviepedia/build.gradle | 8 +++++--- application/resources/build.gradle | 6 ++++-- application/television/build.gradle | 10 ++++++---- application/tools/build.gradle | 6 ++++-- application/vlc-android/build.gradle | 10 ++++++---- 9 files changed, 42 insertions(+), 25 deletions(-) diff --git a/application/app/build.gradle b/application/app/build.gradle index 212c3be4ed..12d2fb90ca 100644 --- a/application/app/build.gradle +++ b/application/app/build.gradle @@ -1,5 +1,7 @@ -apply plugin: 'com.android.application' -apply plugin: 'kotlin-android' +plugins { + id 'com.android.application' + id 'kotlin-android' +} android { compileOptions { diff --git a/application/donations/build.gradle b/application/donations/build.gradle index 2d7d1bf3f4..be14b36153 100644 --- a/application/donations/build.gradle +++ b/application/donations/build.gradle @@ -22,8 +22,10 @@ * */ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' +plugins { + id 'com.android.library' + id 'kotlin-android' +} android { diff --git a/application/live-plot-graph/build.gradle b/application/live-plot-graph/build.gradle index 32396eec91..97d6f27eca 100644 --- a/application/live-plot-graph/build.gradle +++ b/application/live-plot-graph/build.gradle @@ -22,8 +22,10 @@ * */ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' +plugins { + id 'com.android.library' + id 'kotlin-android' +} android { diff --git a/application/mediadb/build.gradle b/application/mediadb/build.gradle index 02ef2569e1..24aef03d38 100644 --- a/application/mediadb/build.gradle +++ b/application/mediadb/build.gradle @@ -21,10 +21,11 @@ * * */ - -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-kapt' +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'kotlin-kapt' +} android { diff --git a/application/moviepedia/build.gradle b/application/moviepedia/build.gradle index 5dc1408495..b21d20a62d 100644 --- a/application/moviepedia/build.gradle +++ b/application/moviepedia/build.gradle @@ -1,6 +1,8 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-kapt' +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'kotlin-kapt' +} android { diff --git a/application/resources/build.gradle b/application/resources/build.gradle index 344c304e50..8187d3b544 100644 --- a/application/resources/build.gradle +++ b/application/resources/build.gradle @@ -1,5 +1,7 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' +plugins { + id 'com.android.library' + id 'kotlin-android' +} android { diff --git a/application/television/build.gradle b/application/television/build.gradle index 5b5c58c2f7..aa720bd4d5 100644 --- a/application/television/build.gradle +++ b/application/television/build.gradle @@ -1,7 +1,9 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-kapt' -apply plugin: 'kotlin-parcelize' +plugins { + id 'com.android.library' + id 'kotlin-android' + id 'kotlin-kapt' + id 'kotlin-parcelize' +} android { diff --git a/application/tools/build.gradle b/application/tools/build.gradle index 3ae05a583b..25f11569d4 100644 --- a/application/tools/build.gradle +++ b/application/tools/build.gradle @@ -1,5 +1,7 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' +plugins { + id 'com.android.library' + id 'kotlin-android' +} android { diff --git a/application/vlc-android/build.gradle b/application/vlc-android/build.gradle index e37071da8a..417f0bb984 100644 --- a/application/vlc-android/build.gradle +++ b/application/vlc-android/build.gradle @@ -1,7 +1,9 @@ -apply plugin: 'com.android.library' -apply plugin: 'kotlin-android' -apply plugin: 'kotlin-kapt' -apply plugin: 'kotlin-parcelize' +plugins { + id 'com.android.library' + id 'org.jetbrains.kotlin.android' + id 'kotlin-kapt' + id 'kotlin-parcelize' +} android { -- GitLab From 6c34da619b554acddc4a4c131e2a811b91eac5c0 Mon Sep 17 00:00:00 2001 From: Nicolas Pomepuy <nicolas@videolabs.io> Date: Mon, 7 Apr 2025 13:09:25 +0200 Subject: [PATCH 3/3] Migrate to ksp --- application/mediadb/build.gradle | 6 +++--- application/moviepedia/build.gradle | 5 +++-- application/television/build.gradle | 2 +- application/vlc-android/build.gradle | 14 +++----------- build.gradle | 6 +++++- 5 files changed, 15 insertions(+), 18 deletions(-) diff --git a/application/mediadb/build.gradle b/application/mediadb/build.gradle index 24aef03d38..408de4e0ae 100644 --- a/application/mediadb/build.gradle +++ b/application/mediadb/build.gradle @@ -24,7 +24,7 @@ plugins { id 'com.android.library' id 'kotlin-android' - id 'kotlin-kapt' + id 'com.google.devtools.ksp' } android { @@ -73,8 +73,8 @@ dependencies { androidTestImplementation "androidx.test.espresso:espresso-core:$rootProject.ext.espressoVersion" //Room implementation "androidx.room:room-ktx:$rootProject.ext.roomVersion" - kapt ('org.xerial:sqlite-jdbc:3.36.0') - kapt "androidx.room:room-compiler:$rootProject.ext.roomVersion" + ksp ('org.xerial:sqlite-jdbc:3.36.0') + ksp "androidx.room:room-compiler:$rootProject.ext.roomVersion" implementation project(':application:tools') implementation project(':application:resources') diff --git a/application/moviepedia/build.gradle b/application/moviepedia/build.gradle index b21d20a62d..749c13eeec 100644 --- a/application/moviepedia/build.gradle +++ b/application/moviepedia/build.gradle @@ -2,6 +2,7 @@ plugins { id 'com.android.library' id 'kotlin-android' id 'kotlin-kapt' + id 'com.google.devtools.ksp' } android { @@ -66,8 +67,8 @@ dependencies { //Room implementation "androidx.room:room-runtime:$rootProject.ext.roomVersion" // Provide proper JDBC version, see https://issuetracker.google.com/issues/174695268 - kapt ('org.xerial:sqlite-jdbc:3.36.0') - kapt "androidx.room:room-compiler:$rootProject.ext.roomVersion" + ksp ('org.xerial:sqlite-jdbc:3.36.0') + ksp "androidx.room:room-compiler:$rootProject.ext.roomVersion" // Retrofit diff --git a/application/television/build.gradle b/application/television/build.gradle index aa720bd4d5..fa2a84e639 100644 --- a/application/television/build.gradle +++ b/application/television/build.gradle @@ -1,7 +1,7 @@ plugins { id 'com.android.library' id 'kotlin-android' - id 'kotlin-kapt' + id 'com.google.devtools.ksp' id 'kotlin-parcelize' } diff --git a/application/vlc-android/build.gradle b/application/vlc-android/build.gradle index 417f0bb984..b49d7cd5f3 100644 --- a/application/vlc-android/build.gradle +++ b/application/vlc-android/build.gradle @@ -2,6 +2,7 @@ plugins { id 'com.android.library' id 'org.jetbrains.kotlin.android' id 'kotlin-kapt' + id 'com.google.devtools.ksp' id 'kotlin-parcelize' } @@ -183,8 +184,8 @@ dependencies { api 'androidx.gridlayout:gridlayout:1.0.0' api "androidx.car.app:app:$rootProject.ext.carVersion" - kapt ("org.xerial:sqlite-jdbc:jdbcVersion") - kapt("androidx.room:room-compiler:$rootProject.ext.roomVersion") + ksp ("org.xerial:sqlite-jdbc:jdbcVersion") + ksp("androidx.room:room-compiler:$rootProject.ext.roomVersion") api "androidx.paging:paging-runtime-ktx:$rootProject.ext.pagingVersion" @@ -289,12 +290,3 @@ def isBeta() { def versionNameLower = versionName.toLowerCase() return (versionNameLower.contains("beta") || versionNameLower.contains("rc") || versionNameLower.contains("alpha") || versionNameLower.contains("dev")).toString() } - - -kapt { - javacOptions { - // Increase the max count of errors from annotation processors. - // Default is 100. - option("-Xmaxerrs", 500) - } -} diff --git a/build.gradle b/build.gradle index 5b49c5a958..75a381fbf7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.android_plugin_version = '8.9.1' - ext.kotlin_version = '2.1.0' + ext.kotlin_version = '2.1.20' ext.kotlinx_version = '1.7.1' repositories { flatDir dirs: "gradle/plugins" @@ -17,6 +17,10 @@ buildscript { } } +plugins { + id 'com.google.devtools.ksp' version '2.1.20-1.0.32' apply false +} + allprojects { repositories { google() -- GitLab