From 1df1bf9c50c0d4607eff61f2d33087c21cb2c583 Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Thu, 15 Jan 2026 01:03:32 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BA=86Gradle=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/test.yml | 13 +- app/build.gradle | 390 ------------------------------------- app/build.gradle.kts | 271 ++++++++++++++++++++++++++ app/proguard-rules.pro | 2 +- build.gradle | 37 ---- build.gradle.kts | 22 +++ 6 files changed, 299 insertions(+), 436 deletions(-) delete mode 100644 app/build.gradle create mode 100644 app/build.gradle.kts delete mode 100644 build.gradle create mode 100644 build.gradle.kts diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7a2ab6c11..80b228954 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -134,11 +134,11 @@ jobs: - uses: actions/checkout@v5 with: fetch-depth: 0 - - name: Set up JDK 17 + - name: Set up JDK 21 uses: actions/setup-java@v5 with: distribution: 'temurin' - java-version: 17 + java-version: 21 - name: Clear 18PlusList.txt run: | echo "清空18PlusList.txt" @@ -154,18 +154,15 @@ jobs: - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - - name: 统一版本号 - run: | - VERSIONL="${{ env.VERSIONL }}" - BUILD_NUMBER="${{ env.BUILD_NUMBER }}" - echo "开始修改 build.gradle 中的版本号..." - sed -i "s/ext.versionName = .*/ext.versionName = \"$VERSIONL\"/" $GITHUB_WORKSPACE/app/build.gradle - name: Build With Gradle run: | echo "开始${{ env.product }}${{ env.type }}构建" chmod +x gradlew ./gradlew assemble${{ env.product }}Release + env: + BUILD_NUMBER: ${{ env.BUILD_NUMBER }} + APP_VERSION_NAME: ${{ env.VERSIONL }} - name: Move Missing Rules Files run: | diff --git a/app/build.gradle b/app/build.gradle deleted file mode 100644 index d0759cbe1..000000000 --- a/app/build.gradle +++ /dev/null @@ -1,390 +0,0 @@ -plugins { -// id "com.android.application" -// id 'org.jetbrains.kotlin.android' -// id 'kotlin-parcelize' -// //id 'kotlin-kapt' -// id 'com.google.devtools.ksp' -// id "com.google.gms.google-services" - alias libs.plugins.compose.compiler - alias libs.plugins.android.application - alias libs.plugins.kotlin.android - alias libs.plugins.kotlin.parcelize - alias libs.plugins.room - alias libs.plugins.ksp - alias libs.plugins.google.services -} -apply from: 'download.gradle' - -def versionPropsFile = file("version.properties") -def versionProps = new Properties() -versionProps.load(new FileInputStream(versionPropsFile)) - -ext { - versionMajor = versionProps['VERSION_MAJOR'].toInteger() - versionMinor = versionProps['VERSION_MINOR'].toInteger() - versionPatch = versionProps['VERSION_PATCH'].toInteger() -} - -def name = "legado" -def gitCommits = Integer.parseInt('git rev-list HEAD --count'.execute().text.trim()) - -ext.versionBuild = gitCommits -ext.versionName = "${ext.versionMajor}.${ext.versionMinor}.${ext.versionPatch}" - -def getGitCommitHash() { - try { - def stdout = new ByteArrayOutputStream() - ExecOperations.exec { - commandLine 'git', 'rev-parse', '--short', 'HEAD' - standardOutput = stdout - } - return stdout.toString().trim() - } catch (Exception ignored) { - return "unknown" - } -} - -android { - compileSdk = compile_sdk_version - namespace = "io.legado.app" - - buildFeatures { - compose = true - } - - kotlin { - jvmToolchain { - languageVersion.set(JavaLanguageVersion.of(21)) - vendor.set(JvmVendorSpec.ADOPTIUM) - } - } - - signingConfigs { - if (project.hasProperty("RELEASE_STORE_FILE")) { - myConfig { - storeFile file(RELEASE_STORE_FILE) - storePassword RELEASE_STORE_PASSWORD - keyAlias RELEASE_KEY_ALIAS - keyPassword RELEASE_KEY_PASSWORD - v1SigningEnabled true - v2SigningEnabled true - enableV3Signing = true - enableV4Signing = true - } - } - } - - defaultConfig { - applicationId "io.legato.kazusa" - minSdk 26 - targetSdk 36 - versionCode 10000 + gitCommits - versionName project.ext.versionName - testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" - project.ext.set("archivesBaseName", name + "_" + versionName) - - buildConfigField "String", "Cronet_Version", "\"$CronetVersion\"" - buildConfigField "String", "Cronet_Main_Version", "\"$CronetMainVersion\"" - - javaCompileOptions { - annotationProcessorOptions { - arguments += [ - "room.incremental" : "true", - "room.expandProjection": "true", - "room.schemaLocation" : "$projectDir/schemas".toString() - ] - } - } - - def buildTime = new Date().format("yyyy-MM-dd HH:mm:ss", TimeZone.getTimeZone("UTC")) - buildConfigField "String", "BUILD_TIME", "\"${buildTime}\"" - } - - buildFeatures { - buildConfig = true - viewBinding = true - } - - buildTypes { - release { - if (project.hasProperty("RELEASE_STORE_FILE")) { - signingConfig signingConfigs.myConfig - } - //applicationIdSuffix '.release' - manifestPlaceholders.put("app_name", "@string/app_name") - - minifyEnabled = true - shrinkResources = true - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', 'cronet-proguard-rules.pro' - } - debug { - applicationIdSuffix ".debug" - if (project.hasProperty("RELEASE_STORE_FILE")) { - signingConfig signingConfigs.myConfig - } - manifestPlaceholders.put("app_name", "@string/app_name") - - applicationIdSuffix '.debug' - versionNameSuffix "_debug+${getGitCommitHash()}" - minifyEnabled false - proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro', 'cronet-proguard-rules.pro' - } - } - - splits { - abi { - enable = true - reset() - //noinspection ChromeOsAbiSupport - include 'armeabi-v7a', 'arm64-v8a' - universalApk = true - } - } - - //noinspection GrDeprecatedAPIUsage - flavorDimensions = ['mode'] - productFlavors { - app { - dimension "mode" - manifestPlaceholders.put("APP_CHANNEL_VALUE", "app") - } - } - - android.applicationVariants.configureEach { variant -> - variant.outputs.configureEach { output -> - def abi = output.getFilter(com.android.build.OutputFile.ABI) - def flavor = variant.productFlavors[0].name - def baseVersionName = variant.versionName - def apkName = "${name}_${flavor}_${baseVersionName}" - if (abi != null) { - apkName += "_${abi}" - } - apkName += ".apk" - output.outputFileName = apkName - } - } - - - - room { - schemaDirectory "$projectDir/schemas" - } - // 设定Room的KSP参数 - ksp { - arg("room.incremental", "true") - arg("room.expandProjection", "true") - arg("room.generateKotlin", "false") - //arg("room.schemaLocation", "$projectDir/schemas") - - } - - compileOptions { - // Flag to enable support for the new language APIs - coreLibraryDesugaringEnabled = true - // Sets Java compatibility - sourceCompatibility JavaVersion.VERSION_21 - targetCompatibility JavaVersion.VERSION_21 - } - packaging { - resources.excludes.add('META-INF/*') - } - - sourceSets { - // Adds exported schema location as test app assets. - androidTest.assets.srcDirs += files("$projectDir/schemas".toString()) - } - lint { - checkDependencies = true - } - tasks.withType(JavaCompile).tap { - configureEach { - //options.compilerArgs << "-Xlint:unchecked" - } - } -} - -dependencies { - //compileOnly "com.android.tools.build:gradle:$agp_version" - //noinspection GradleDependency,GradlePackageUpdate - //coreLibraryDesugaring('com.android.tools:desugar_jdk_libs_nio:2.0.4') - coreLibraryDesugaring(libs.desugar) - testImplementation(libs.junit) - androidTestImplementation(libs.bundles.androidTest) - //kotlin - //noinspection GradleDependency,DifferentStdlibGradleVersion - implementation(libs.kotlin.stdlib) - //Kotlin反射 - //noinspection GradleDependency,DifferentStdlibGradleVersion - //implementation(libs.kotlin.reflect) - - //协程 - //def coroutines_version = '1.7.3' - implementation(libs.bundles.coroutines) - - - //androidX - implementation(libs.core.ktx) - implementation(libs.appcompat.appcompat) - implementation(libs.activity.ktx) - implementation(libs.fragment.ktx) - implementation(libs.preference.ktx) - implementation(libs.androidx.constraintlayout) - implementation(libs.androidx.swiperefreshlayout) - implementation(libs.androidx.recyclerview) - implementation(libs.androidx.viewpager2) - implementation(libs.androidx.webkit) - - //google - implementation(libs.material) - implementation(libs.flexbox) - implementation(libs.gson) - - //lifecycle - implementation(libs.lifecycle.common.java8) - implementation(libs.lifecycle.service) - - //media - implementation(libs.media.media) - // For media playback using ExoPlayer - implementation(libs.media3.exoplayer) - // For loading data using the OkHttp network stack - implementation(libs.media3.datasource.okhttp) - // For exposing and controlling media sessions - //implementation "androidx.media3:media3-session:$media3_version" - - //Splitties - implementation(libs.splitties.appctx) - implementation(libs.splitties.systemservices) - implementation(libs.splitties.views) - - //room sql语句不高亮解决方法https://issuetracker.google.com/issues/234612964#comment6 - implementation(libs.room.runtime) - implementation(libs.room.ktx) - //kapt("androidx.room:room-compiler:$room_version") - ksp(libs.room.compiler) - androidTestImplementation(libs.room.testing) - - //liveEventBus - implementation(libs.liveeventbus) - - //规则相关 - implementation(libs.jsoup) - implementation(libs.json.path) - implementation(libs.jsoupxpath) - implementation(project(path: ':modules:book')) - implementation(project(path: ':modules:rhino')) - - //JS rhino - - //网络 - implementation(libs.okhttp) - implementation(fileTree(dir: 'cronetlib', include: ['*.jar', '*.aar'])) - implementation(libs.protobuf.javalite) - - //Glide - implementation(libs.glide.glide) - implementation(libs.glide.okhttp) - ksp(libs.glide.ksp) - - //Svg - implementation(libs.androidsvg) - //Glide svg plugin - implementation(libs.glide.svg) - - //webServer - implementation(libs.nanohttpd.nanohttpd) - implementation(libs.nanohttpd.websocket) - - //二维码 - //noinspection GradleDependency - implementation(libs.zxing.lite) - - //颜色选择 - implementation(libs.colorpicker) - - //压缩解压 - implementation libs.libarchive - - //apache - implementation(libs.commons.text) - - //MarkDown - implementation(libs.markwon.core) - implementation(libs.markwon.image.glide) - implementation(libs.markwon.ext.tables) - implementation(libs.markwon.html) - - //转换繁体 - implementation(libs.quick.chinese.transfer.core) - - //加解密类库,有些书源使用 - //noinspection GradleDependency,GradlePackageUpdate - implementation(libs.hutool.crypto) - - //firebase, 崩溃统计和性能统计 - implementation platform(libs.firebase.bom) - implementation libs.firebase.analytics - implementation libs.firebase.perf - - implementation libs.glide.recyclerview - - //LeakCanary, 内存泄露检测 - //debugImplementation('com.squareup.leakcanary:leakcanary-android:2.7') - - //com.github.AmrDeveloper:CodeView代码编辑已集成到应用内 - //epubLib集成到应用内 - - implementation libs.androidx.datastore.preferences - implementation libs.androidx.palette - implementation libs.androidx.core.splashscreen - implementation libs.androidx.startup.runtime - - // Compose 基础 - implementation platform(libs.androidx.compose.bom) - implementation libs.activity.compose - implementation libs.androidx.compose.ui - implementation libs.androidx.compose.ui.tooling.preview - debugImplementation libs.androidx.compose.ui.tooling - - // Material3 - implementation libs.androidx.compose.material3 - - // Lifecycle - implementation libs.androidx.lifecycle.runtime.compose - - // Activity - implementation libs.androidx.activity.compose - - // Coil - implementation libs.coil.compose - - // accompanist – WebView(打开网页) - implementation libs.accompanist.webview - - // Markdown 渲染(Compose MD) - // implementation libs.markdown.compose - - // 协程 - implementation libs.kotlinx.coroutines.android - implementation libs.androidx.lifecycle.runtime.compose - implementation libs.androidx.lifecycle.viewmodel.compose - implementation libs.androidx.compose.animation - implementation libs.androidx.compose.foundation - implementation libs.androidx.constraintlayout.compose - implementation libs.androidx.compose.ui.viewbinding - implementation libs.androidx.navigation.compose - implementation libs.androidx.compose.material - implementation libs.compose.materialIcons - - implementation(platform(libs.koin.bom)) - implementation(libs.koin.core) - implementation(libs.koin.android) - implementation(libs.koin.compose) - implementation(libs.koin.compose.viewmodel) - - implementation(libs.reorderable) - implementation(libs.material.kolor) - implementation(libs.haze.core) - implementation(libs.haze.materials) - -} diff --git a/app/build.gradle.kts b/app/build.gradle.kts new file mode 100644 index 000000000..79f64a414 --- /dev/null +++ b/app/build.gradle.kts @@ -0,0 +1,271 @@ +import java.io.FileInputStream +import java.util.Properties + +plugins { + alias(libs.plugins.compose.compiler) + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.parcelize) + alias(libs.plugins.room) + alias(libs.plugins.ksp) + alias(libs.plugins.google.services) +} + +apply(from = "download.gradle") + + +val versionPropsFile = file("version.properties") +val versionProps = Properties().apply { + if (versionPropsFile.exists()) { + load(FileInputStream(versionPropsFile)) + } +} + +val versionMajor = versionProps["VERSION_MAJOR"]?.toString()?.toInt() ?: 0 +val versionMinor = versionProps["VERSION_MINOR"]?.toString()?.toInt() ?: 0 +val versionPatch = versionProps["VERSION_PATCH"]?.toString()?.toInt() ?: 0 +val appName = "legado" +val projectVersionName = "$versionMajor.$versionMinor.$versionPatch" + +android { + compileSdk = 36 + namespace = "io.legado.app" + + kotlin { + jvmToolchain { + languageVersion.set(JavaLanguageVersion.of(21)) + vendor.set(JvmVendorSpec.ADOPTIUM) + } + } + + signingConfigs { + if (project.hasProperty("RELEASE_STORE_FILE")) { + create("myConfig") { + storeFile = file(project.property("RELEASE_STORE_FILE") as String) + storePassword = project.property("RELEASE_STORE_PASSWORD") as String + keyAlias = project.property("RELEASE_KEY_ALIAS") as String + keyPassword = project.property("RELEASE_KEY_PASSWORD") as String + enableV1Signing = true + enableV2Signing = true + enableV3Signing = true + enableV4Signing = true + } + } + } + + defaultConfig { + applicationId = "io.legato.kazusa" + minSdk = 26 + targetSdk = 36 + versionCode = System.getenv("BUILD_NUMBER")?.toInt()?.let { 10000 + it } ?: 32640 + versionName = System.getenv("APP_VERSION_NAME") ?: projectVersionName + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + + buildConfigField("String", "Cronet_Version", "\"${project.findProperty("CronetVersion")}\"") + buildConfigField( + "String", + "Cronet_Main_Version", + "\"${project.findProperty("CronetMainVersion")}\"" + ) + + javaCompileOptions { + annotationProcessorOptions { + arguments += mapOf( + "room.incremental" to "true", + "room.expandProjection" to "true", + "room.schemaLocation" to "$projectDir/schemas" + ) + } + } + } + + buildFeatures { + compose = true + buildConfig = true + viewBinding = true + } + + buildTypes { + getByName("release") { + if (project.hasProperty("RELEASE_STORE_FILE")) { + signingConfig = signingConfigs.getByName("myConfig") + } + manifestPlaceholders["app_name"] = "@string/app_name" + isMinifyEnabled = true + isShrinkResources = true + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + "cronet-proguard-rules.pro" + ) + } + getByName("debug") { + applicationIdSuffix = ".debug" + if (project.hasProperty("RELEASE_STORE_FILE")) { + signingConfig = signingConfigs.getByName("myConfig") + } + manifestPlaceholders["app_name"] = "@string/app_name" + versionNameSuffix = "_debug" + isMinifyEnabled = false + proguardFiles( + getDefaultProguardFile("proguard-android-optimize.txt"), + "proguard-rules.pro", + "cronet-proguard-rules.pro" + ) + } + } + + splits { + abi { + isEnable = true + reset() + include("armeabi-v7a", "arm64-v8a") + isUniversalApk = true + } + } + + flavorDimensions += "mode" + productFlavors { + create("app") { + dimension = "mode" + manifestPlaceholders["APP_CHANNEL_VALUE"] = "app" + } + } + + applicationVariants.all { + val variant = this + outputs.all { + val output = this as com.android.build.gradle.internal.api.BaseVariantOutputImpl + val abi = output.getFilter(com.android.build.OutputFile.ABI) + val flavor = variant.productFlavors[0].name + val baseVersionName = variant.versionName + var apkName = "${appName}_${flavor}_${baseVersionName}" + if (abi != null) { + apkName += "_$abi" + } + output.outputFileName = "$apkName.apk" + } + } + + room { + schemaDirectory("$projectDir/schemas") + } + + ksp { + arg("room.incremental", "true") + arg("room.expandProjection", "true") + arg("room.generateKotlin", "false") + } + + compileOptions { + isCoreLibraryDesugaringEnabled = true + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 + } + + packaging { + resources.excludes.add("META-INF/*") + } + + sourceSets { + getByName("androidTest").assets.srcDirs("$projectDir/schemas") + } + + lint { + checkDependencies = true + } +} + +dependencies { + coreLibraryDesugaring(libs.desugar) + testImplementation(libs.junit) + androidTestImplementation(libs.bundles.androidTest) + implementation(libs.kotlin.stdlib) + implementation(libs.bundles.coroutines) + implementation(libs.core.ktx) + implementation(libs.appcompat.appcompat) + implementation(libs.activity.ktx) + implementation(libs.fragment.ktx) + implementation(libs.preference.ktx) + implementation(libs.androidx.constraintlayout) + implementation(libs.androidx.swiperefreshlayout) + implementation(libs.androidx.recyclerview) + implementation(libs.androidx.viewpager2) + implementation(libs.androidx.webkit) + implementation(libs.material) + implementation(libs.flexbox) + implementation(libs.gson) + implementation(libs.lifecycle.common.java8) + implementation(libs.lifecycle.service) + implementation(libs.media.media) + implementation(libs.media3.exoplayer) + implementation(libs.media3.datasource.okhttp) + implementation(libs.splitties.appctx) + implementation(libs.splitties.systemservices) + implementation(libs.splitties.views) + implementation(libs.room.runtime) + implementation(libs.room.ktx) + ksp(libs.room.compiler) + androidTestImplementation(libs.room.testing) + implementation(libs.liveeventbus) + implementation(libs.jsoup) + implementation(libs.json.path) + implementation(libs.jsoupxpath) + implementation(project(":modules:book")) + implementation(project(":modules:rhino")) + implementation(libs.okhttp) + implementation(fileTree(mapOf("dir" to "cronetlib", "include" to listOf("*.jar", "*.aar")))) + implementation(libs.protobuf.javalite) + implementation(libs.glide.glide) + implementation(libs.glide.okhttp) + ksp(libs.glide.ksp) + implementation(libs.androidsvg) + implementation(libs.glide.svg) + implementation(libs.glide.recyclerview) + implementation(libs.nanohttpd.nanohttpd) + implementation(libs.nanohttpd.websocket) + implementation(libs.zxing.lite) + implementation(libs.colorpicker) + implementation(libs.libarchive) + implementation(libs.commons.text) + implementation(libs.markwon.core) + implementation(libs.markwon.image.glide) + implementation(libs.markwon.ext.tables) + implementation(libs.markwon.html) + implementation(libs.quick.chinese.transfer.core) + implementation(libs.hutool.crypto) + implementation(platform(libs.firebase.bom)) + implementation(libs.firebase.analytics) + implementation(libs.firebase.perf) + implementation(libs.androidx.datastore.preferences) + implementation(libs.androidx.palette) + implementation(libs.androidx.core.splashscreen) + implementation(libs.androidx.startup.runtime) + implementation(platform(libs.androidx.compose.bom)) + implementation(libs.activity.compose) + implementation(libs.androidx.compose.ui) + implementation(libs.androidx.compose.ui.tooling.preview) + debugImplementation(libs.androidx.compose.ui.tooling) + implementation(libs.androidx.compose.material3) + implementation(libs.androidx.lifecycle.runtime.compose) + implementation(libs.coil.compose) + implementation(libs.accompanist.webview) + implementation(libs.kotlinx.coroutines.android) + implementation(libs.androidx.lifecycle.viewmodel.compose) + implementation(libs.androidx.compose.animation) + implementation(libs.androidx.compose.foundation) + implementation(libs.androidx.constraintlayout.compose) + implementation(libs.androidx.compose.ui.viewbinding) + implementation(libs.androidx.navigation.compose) + implementation(libs.androidx.compose.material) + implementation(libs.compose.materialIcons) + implementation(platform(libs.koin.bom)) + implementation(libs.koin.core) + implementation(libs.koin.android) + implementation(libs.koin.compose) + implementation(libs.koin.compose.viewmodel) + implementation(libs.reorderable) + implementation(libs.material.kolor) + implementation(libs.haze.core) + implementation(libs.haze.materials) +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro index 259c220f3..76d8cda00 100644 --- a/app/proguard-rules.pro +++ b/app/proguard-rules.pro @@ -1,6 +1,6 @@ # Add project specific ProGuard rules here. # You can control the set of applied configuration files using the -# proguardFiles setting in build.gradle. +# proguardFiles setting in build.gradle.kts. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html diff --git a/build.gradle b/build.gradle deleted file mode 100644 index ffe9e7a16..000000000 --- a/build.gradle +++ /dev/null @@ -1,37 +0,0 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - -buildscript { - ext{ - compile_sdk_version = 36 - build_tool_version = '34.0.0' -// kotlin_version = '1.9.22' -// ksp_version = "1.0.17" -// agp_version = '8.2.2' -// media3_version = "1.2.1" -// splitties_version = '3.0.0' -// room_version = '2.6.1' - } -} - -plugins { - //id 'com.android.application' version "$agp_version" apply false - //id 'com.android.library' version "$agp_version" apply false - //id 'org.jetbrains.kotlin.android' version "$kotlin_version" apply false - //id 'com.google.devtools.ksp' version "$kotlin_version-$ksp_version" apply false - //id "de.undercouch.download" version "5.5.0" apply false - //id "com.google.gms.google-services" version "4.4.0" apply false - alias libs.plugins.compose.compiler apply false - alias libs.plugins.android.application apply false - alias libs.plugins.android.library apply false - alias libs.plugins.kotlin.android apply false - alias libs.plugins.kotlin.parcelize apply false - alias libs.plugins.ksp apply false - alias libs.plugins.google.services apply false - alias libs.plugins.room apply false - - alias libs.plugins.download apply false -} - -tasks.register('clean', Delete) { - delete rootProject.layout.buildDirectory -} diff --git a/build.gradle.kts b/build.gradle.kts new file mode 100644 index 000000000..268349fc4 --- /dev/null +++ b/build.gradle.kts @@ -0,0 +1,22 @@ +buildscript { + extra.apply { + set("compile_sdk_version", 36) + set("build_tool_version", "34.0.0") + } +} + +plugins { + alias(libs.plugins.compose.compiler) apply false + alias(libs.plugins.android.application) apply false + alias(libs.plugins.android.library) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.parcelize) apply false + alias(libs.plugins.ksp) apply false + alias(libs.plugins.google.services) apply false + alias(libs.plugins.room) apply false + alias(libs.plugins.download) apply false +} + +tasks.register("clean") { + delete(rootProject.layout.buildDirectory) +} \ No newline at end of file