From 54f9bcb03e4d1e4033cb630a5fbe2f81e5c6c154 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sun, 18 Jan 2026 00:30:12 +0800 Subject: [PATCH 1/8] Upgrade AGP to 9.0.0 Signed-off-by: Aayush Gupta --- gradle.properties | 3 +++ gradle/libs.versions.toml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 01e1aa01f..39c2392ba 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,3 +7,6 @@ systemProp.file.encoding=utf-8 # https://docs.gradle.org/current/userguide/configuration_cache.html org.gradle.configuration-cache=true +android.enableAppCompileTimeRClass=false +android.r8.strictFullModeForKeepRules=false +android.r8.optimizedResourceShrinking=false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 5448848a2..ddfe32a31 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -5,7 +5,7 @@ [versions] acra = "5.13.1" -agp = "8.13.2" +agp = "9.0.0" appcompat = "1.7.1" assertj = "3.27.6" autoservice-google = "1.1.1" From 4f70235ee82ff595c389b06f1a3a7279cddd4c5b Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sat, 17 Jan 2026 23:56:27 +0800 Subject: [PATCH 2/8] Enable proguard android optimizations AGP 9.0+ requires enabling optimizations Signed-off-by: Aayush Gupta --- app/build.gradle.kts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 62afd8522..5a10a4aad 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -78,7 +78,10 @@ android { } isMinifyEnabled = true isShrinkResources = false // disabled to fix F-Droid"s reproducible build - proguardFiles(getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro") + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro" + ) } } From d045b27cea1ca30d1dc877440070172e1caae573 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sun, 18 Jan 2026 00:40:12 +0800 Subject: [PATCH 3/8] Migrate to built-in Kotlin Ref: https://developer.android.com/build/migrate-to-built-in-kotlin Signed-off-by: Aayush Gupta --- app/build.gradle.kts | 3 +-- build.gradle.kts | 3 +-- gradle/libs.versions.toml | 5 ++--- 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5a10a4aad..949f38cb6 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -5,8 +5,7 @@ plugins { alias(libs.plugins.android.application) - alias(libs.plugins.jetbrains.kotlin.android) - alias(libs.plugins.jetbrains.kotlin.kapt) + alias(libs.plugins.android.legacy.kapt) alias(libs.plugins.google.ksp) alias(libs.plugins.jetbrains.kotlin.parcelize) alias(libs.plugins.sonarqube) diff --git a/build.gradle.kts b/build.gradle.kts index 2c9173f57..40d91d770 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,8 +5,7 @@ plugins { alias(libs.plugins.android.application) apply false - alias(libs.plugins.jetbrains.kotlin.android) apply false - alias(libs.plugins.jetbrains.kotlin.kapt) apply false + alias(libs.plugins.android.legacy.kapt) apply false alias(libs.plugins.google.ksp) apply false alias(libs.plugins.jetbrains.kotlin.parcelize) apply false alias(libs.plugins.sonarqube) apply false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index ddfe32a31..c6413f68e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,7 +23,7 @@ groupie = "2.10.1" jsoup = "1.22.1" junit = "4.13.2" junit-ext = "1.3.0" -kotlin = "2.2.21" +kotlin = "2.2.10" ksp = "2.3.4" ktlint = "1.8.0" leakcanary = "2.14" @@ -132,8 +132,7 @@ zacsweers-autoservice-compiler = { module = "dev.zacsweers.autoservice:auto-serv [plugins] android-application = { id = "com.android.application", version.ref = "agp" } +android-legacy-kapt = { id = "com.android.legacy-kapt", version.ref = "agp" } # Needed for statesaver google-ksp = { id = "com.google.devtools.ksp", version.ref = "ksp" } -jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } -jetbrains-kotlin-kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } # Needed for statesaver jetbrains-kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } sonarqube = { id = "org.sonarqube", version.ref = "sonarqube" } From a3301dcfb17b76d1da8afaf5603fbe56f05d75d0 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sun, 18 Jan 2026 00:42:09 +0800 Subject: [PATCH 4/8] Enable resValues as build feature Signed-off-by: Aayush Gupta --- app/build.gradle.kts | 1 + 1 file changed, 1 insertion(+) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 949f38cb6..759636042 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -113,6 +113,7 @@ android { buildFeatures { viewBinding = true buildConfig = true + resValues = true } packaging { From 7758a276947748e370c5f837a5a19e5e9cf0b49a Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sun, 18 Jan 2026 00:42:28 +0800 Subject: [PATCH 5/8] Migrate from deprecated android block to ApplicationExtension Signed-off-by: Aayush Gupta --- app/build.gradle.kts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 759636042..e79803a53 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,6 +3,8 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ +import com.android.build.api.dsl.ApplicationExtension + plugins { alias(libs.plugins.android.application) alias(libs.plugins.android.legacy.kapt) @@ -31,7 +33,7 @@ kotlin { } } -android { +configure { compileSdk = 36 namespace = "org.schabi.newpipe" From 19e94bd30ca36a1f3677761277f7a9c19fa6a53c Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sun, 18 Jan 2026 00:42:50 +0800 Subject: [PATCH 6/8] Migrate from deprecated srcDir to directories method Signed-off-by: Aayush Gupta --- app/build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e79803a53..9f3837eb7 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -104,7 +104,7 @@ configure { sourceSets { getByName("androidTest") { - assets.srcDir("$projectDir/schemas") + assets.directories += "$projectDir/schemas" } } From fd192b4f3f48e8e98b4edd8ebb490effa70efec4 Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Sun, 18 Jan 2026 01:09:06 +0800 Subject: [PATCH 7/8] Drop default properties Signed-off-by: Aayush Gupta --- gradle.properties | 3 --- 1 file changed, 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index 39c2392ba..edfb90d9f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,4 @@ -android.enableJetifier=false android.nonFinalResIds=false -android.nonTransitiveRClass=true -android.useAndroidX=true org.gradle.jvmargs=-Xmx2048M --add-opens jdk.compiler/com.sun.tools.javac.model=ALL-UNNAMED systemProp.file.encoding=utf-8 From a7aad63bbbb5b721d3c5863e69cd91bec951f30e Mon Sep 17 00:00:00 2001 From: Aayush Gupta Date: Thu, 29 Jan 2026 14:59:25 +0800 Subject: [PATCH 8/8] Upgrade Kotlin and KSP Fixes multiple build errors. Once parcelize is fixed, we should be good to use built-in Kotlin completely Ref: https://issuetracker.google.com/issues/478401081 Signed-off-by: Aayush Gupta --- build.gradle.kts | 7 +++++++ gradle/libs.versions.toml | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 40d91d770..eeb640af3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,6 +3,13 @@ * SPDX-License-Identifier: GPL-3.0-or-later */ +buildscript { + dependencies { + // https://developer.android.com/build/releases/agp-9-0-0-release-notes#runtime-dependency-on-kotlin-gradle-plugin-upgrade + classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${libs.versions.kotlin.get()}") + } +} + plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.android.legacy.kapt) apply false diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index c6413f68e..d5b38e519 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -23,8 +23,8 @@ groupie = "2.10.1" jsoup = "1.22.1" junit = "4.13.2" junit-ext = "1.3.0" -kotlin = "2.2.10" -ksp = "2.3.4" +kotlin = "2.3.0" +ksp = "2.3.5" ktlint = "1.8.0" leakcanary = "2.14" lifecycle = "2.9.4" # Newer versions require minSdk >= 23