Reapply "Update android.gradle to v9 (major) (#3105)" (#3148)

This commit is contained in:
AntsyLich
2026-04-25 12:06:41 +06:00
committed by GitHub
parent 38ccd7d5fc
commit a2f3ec94aa
15 changed files with 98 additions and 71 deletions
+2 -2
View File
@@ -46,7 +46,7 @@ jobs:
- name: Run unit tests
id: unit_tests
run: ./gradlew testReleaseUnitTest
run: ./gradlew testDebugUnitTest
- name: Verify SQLDelight migrations
run: ./gradlew verifySqlDelightMigration
@@ -56,7 +56,7 @@ jobs:
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
with:
name: test-report-${{ github.sha }}
path: app/build/reports/tests/testReleaseUnitTest
path: app/build/reports/tests/testDebugUnitTest
- name: Build app
run: ./gradlew assembleRelease -Pinclude-telemetry -Penable-updater
+2 -6
View File
@@ -89,8 +89,8 @@ android {
}
sourceSets {
getByName("preview").res.srcDirs("src/debug/res")
getByName("benchmark").res.srcDirs("src/debug/res")
getByName("preview").res.directories.add("src/debug/res")
getByName("benchmark").res.directories.add("src/debug/res")
}
splits {
@@ -139,10 +139,6 @@ android {
viewBinding = true
buildConfig = true
aidl = true
// Disable some unused things
renderScript = false
shaders = false
}
lint {
+7
View File
@@ -1,6 +1,13 @@
buildscript {
dependencies {
classpath(libs.kotlin.gradle)
}
}
plugins {
alias(libs.plugins.aboutLibraries) apply false
alias(libs.plugins.android.application) apply false
alias(libs.plugins.android.kmp.library) apply false
alias(libs.plugins.android.library) apply false
alias(libs.plugins.android.test) apply false
alias(libs.plugins.firebase.crashlytics) apply false
+1
View File
@@ -26,6 +26,7 @@ dependencies {
api(libs.sqldelight.androidxPaging)
compileOnly(platform(libs.androidx.compose.bom))
compileOnly(libs.androidx.compose.runtimeAnnotation)
testImplementation(libs.bundles.test)
-2
View File
@@ -1,8 +1,6 @@
android.nonTransitiveRClass=false
android.useAndroidX=true
kotlin.code.style=official
kotlin.mpp.androidSourceSetLayoutVersion=2
# Configuration should be synced with [/gradle/build-logic/gradle.properties]
org.gradle.caching=true
@@ -1,21 +1,50 @@
import mihon.gradle.configurations.configureAndroid
import com.android.build.api.dsl.ApplicationDefaultConfig
import com.android.build.api.dsl.CommonExtension
import com.android.build.api.dsl.CompileOptions
import com.android.build.api.dsl.DefaultConfig
import mihon.gradle.configurations.configureKotlin
import mihon.gradle.extensions.alias
import mihon.gradle.extensions.android
import mihon.gradle.extensions.configureTest
import mihon.gradle.extensions.coreLibraryDesugaring
import mihon.gradle.extensions.libs
import mihon.gradle.extensions.plugins
import mihon.gradle.extensions.mihonx
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
@Suppress("UNUSED")
class PluginAndroidBase : Plugin<Project> {
override fun apply(target: Project): Unit = with(target) {
plugins {
alias(libs.plugins.kotlin.android)
}
configureKotlin()
configureTest()
configureAndroid()
android {
defaultConfig {
minSdk = mihonx.versions.android.sdk.min.get().toInt()
if (this is ApplicationDefaultConfig) {
targetSdk = mihonx.versions.android.sdk.target.get().toInt()
}
ndkVersion = mihonx.versions.android.ndk.get()
}
compileSdk = mihonx.versions.android.sdk.compile.get().toInt()
compileOptions {
isCoreLibraryDesugaringEnabled = true
}
}
dependencies {
coreLibraryDesugaring(libs.android.desugar)
}
}
}
private fun CommonExtension.defaultConfig(block: DefaultConfig.() -> Unit) {
defaultConfig.apply(block)
}
private fun CommonExtension.compileOptions(block: CompileOptions.() -> Unit) {
compileOptions.apply(block)
}
@@ -1,3 +1,5 @@
import com.android.build.api.dsl.BuildFeatures
import com.android.build.api.dsl.CommonExtension
import mihon.gradle.extensions.alias
import mihon.gradle.extensions.android
import mihon.gradle.extensions.api
@@ -31,3 +33,7 @@ class PluginComposeAndroid : Plugin<Project> {
}
}
}
private fun CommonExtension.buildFeatures(block: BuildFeatures.() -> Unit) {
buildFeatures.apply(block)
}
@@ -1,32 +1,44 @@
import mihon.gradle.configurations.configureAndroid
import com.android.build.api.dsl.KotlinMultiplatformAndroidLibraryTarget
import mihon.gradle.configurations.configureKotlin
import mihon.gradle.extensions.alias
import mihon.gradle.extensions.configureTest
import mihon.gradle.extensions.coreLibraryDesugaring
import mihon.gradle.extensions.libs
import mihon.gradle.extensions.mihonx
import mihon.gradle.extensions.plugins
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.kotlin.dsl.configure
import org.gradle.kotlin.dsl.dependencies
import org.gradle.kotlin.dsl.withType
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
import kotlin.text.toInt
@Suppress("UNUSED")
class PluginKotlinMultiplatform : Plugin<Project> {
override fun apply(target: Project): Unit = with(target) {
plugins {
alias(libs.plugins.android.library)
alias(libs.plugins.android.kmp.library)
alias(libs.plugins.kotlin.multiplatform)
}
configureKotlin()
configureTest()
configureAndroid()
kotlin {
@OptIn(ExperimentalKotlinGradlePluginApi::class)
applyDefaultHierarchyTemplate()
androidTarget()
android {
minSdk = mihonx.versions.android.sdk.min.get().toInt()
compileSdk = mihonx.versions.android.sdk.compile.get().toInt()
enableCoreLibraryDesugaring = true
}
}
dependencies {
coreLibraryDesugaring(libs.android.desugar)
}
}
}
@@ -34,3 +46,7 @@ class PluginKotlinMultiplatform : Plugin<Project> {
private fun Project.kotlin(block: KotlinMultiplatformExtension.() -> Unit) {
extensions.configure(block)
}
private fun KotlinMultiplatformExtension.android(block: KotlinMultiplatformAndroidLibraryTarget.() -> Unit) {
targets.withType<KotlinMultiplatformAndroidLibraryTarget>().configureEach(block)
}
@@ -1,32 +0,0 @@
package mihon.gradle.configurations
import com.android.build.api.dsl.ApplicationDefaultConfig
import mihon.gradle.extensions.android
import mihon.gradle.extensions.coreLibraryDesugaring
import mihon.gradle.extensions.libs
import mihon.gradle.extensions.mihonx
import org.gradle.api.Project
import org.gradle.kotlin.dsl.dependencies
fun Project.configureAndroid() {
android {
defaultConfig {
minSdk = mihonx.versions.android.sdk.min.get().toInt()
if (this is ApplicationDefaultConfig) {
targetSdk = mihonx.versions.android.sdk.target.get().toInt()
}
ndkVersion = mihonx.versions.android.ndk.get()
}
compileSdk = mihonx.versions.android.sdk.compile.get().toInt()
compileOptions {
isCoreLibraryDesugaringEnabled = true
}
}
dependencies {
coreLibraryDesugaring(libs.android.desugar)
}
}
@@ -1,7 +1,6 @@
package mihon.gradle.extensions
import com.android.build.api.dsl.CommonExtension
import com.android.build.gradle.BaseExtension
import org.gradle.accessors.dm.LibrariesForLibs
import org.gradle.accessors.dm.LibrariesForMihonx
import org.gradle.api.Project
@@ -19,10 +18,8 @@ internal fun Project.plugins(block: PluginManager.() -> Unit) {
pluginManager.apply(block)
}
internal fun Project.android(block: CommonExtension<*, *, *, *, *, *>.() -> Unit) {
extensions.configure<BaseExtension> {
if (this is CommonExtension<*, *, *, *, *, *>) apply(block)
}
internal fun Project.android(block: CommonExtension.() -> Unit) {
extensions.configure(block)
}
fun Project.configureTest() {
+4 -4
View File
@@ -1,7 +1,7 @@
[versions]
aboutLibraries = "14.0.1"
android-desugar = "2.1.5"
android-gradle = "8.13.2"
android-gradle = "9.2.0"
androidx-activity-compose = "1.13.0"
androidx-annotation = "1.10.0"
androidx-appCompat = "1.7.1"
@@ -83,7 +83,7 @@ androidx-benchmark-macroJunit4 = { module = "androidx.benchmark:benchmark-macro-
androidx-biometric = { module = "androidx.biometric:biometric-ktx", version.ref = "androidx-biometric" }
androidx-compose-animation = { module = "androidx.compose.animation:animation" }
androidx-compose-animationGraphics = { module = "androidx.compose.animation:animation-graphics" }
androidx-compose-bom = { module = "androidx.compose:compose-bom-beta", version.ref = "androidx-compose-bom" }
androidx-compose-bom = { module = "androidx.compose:compose-bom-alpha", version.ref = "androidx-compose-bom" }
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" }
androidx-compose-material3 = { module = "androidx.compose.material3:material3" }
androidx-compose-materialIcons = { module = "androidx.compose.material:material-icons-extended" }
@@ -186,11 +186,11 @@ xmlutil-serialization = { module = "io.github.pdvrieze.xmlutil:serialization", v
[plugins]
aboutLibraries = { id = "com.mikepenz.aboutlibraries.plugin.android", version.ref = "aboutLibraries" }
android-application = { id = "com.android.application", version.ref = "android-gradle" }
android-library = { id = "com.android.library", version.ref = "android-gradle" }
android-test = { id = "com.android.test", version.ref = "android-gradle" }
android-kmp-library = { id = "com.android.kotlin.multiplatform.library", version.ref = "android-gradle" }
android-library = { id = "com.android.library", version.ref = "android-gradle" }
firebase-crashlytics = { id = "com.google.firebase.crashlytics", version.ref = "firebase-crashlytics" }
google-services = { id = "com.google.gms.google-services", version.ref = "google-services" }
kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin-gradle" }
kotlin-compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin-gradle" }
kotlin-jvm = { id = "org.jetbrains.kotlin.jvm", version.ref = "kotlin-gradle" }
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin-gradle" }
+3 -1
View File
@@ -11,10 +11,12 @@ plugins {
kotlin {
android {
namespace = "tachiyomi.i18n"
// TODO(antsy): Remove when https://youtrack.jetbrains.com/issue/KT-83319 is resolved
withHostTest { }
}
@OptIn(ExperimentalKotlinGradlePluginApi::class)
@Suppress("UnstableApiUsage")
dependencies {
api(libs.moko.resources)
}
+9 -4
View File
@@ -8,16 +8,21 @@ plugins {
}
kotlin {
@Suppress("UnstableApiUsage")
android {
namespace = "eu.kanade.tachiyomi.source"
defaultConfig {
consumerProguardFile("consumer-proguard.pro")
optimization {
consumerKeepRules.apply {
publish = true
file("consumer-proguard.pro")
}
}
// TODO(antsy): Remove when https://youtrack.jetbrains.com/issue/KT-83319 is resolved
withHostTest { }
}
@OptIn(ExperimentalKotlinGradlePluginApi::class)
@Suppress("UnstableApiUsage")
dependencies {
api(libs.kotlinx.serialization.json)
api(libs.injekt)
+3 -1
View File
@@ -8,10 +8,12 @@ plugins {
kotlin {
android {
namespace = "tachiyomi.source.local"
// TODO(antsy): Remove when https://youtrack.jetbrains.com/issue/KT-83319 is resolved
withHostTest { }
}
@OptIn(ExperimentalKotlinGradlePluginApi::class)
@Suppress("UnstableApiUsage")
dependencies {
implementation(projects.sourceApi)
api(projects.i18n)
+2 -2
View File
@@ -11,9 +11,9 @@ android {
sourceSets {
getByName("main") {
if (Config.includeTelemetry) {
kotlin.srcDirs("src/firebase/kotlin")
kotlin.directories.add("src/firebase/kotlin")
} else {
kotlin.srcDirs("src/noop/kotlin")
kotlin.directories.add("src/noop/kotlin")
manifest.srcFile("src/noop/AndroidManifext.xml")
}
}