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