gradle: migrate to build-logic

This commit is contained in:
Harsh Shandilya 2022-04-05 19:10:34 +05:30
parent 4cef244d71
commit 3097eaf82f
No known key found for this signature in database
GPG key ID: 366D7BBAD1031E80
26 changed files with 501 additions and 182 deletions

View file

@ -1,51 +1,20 @@
@file:OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class)
@file:Suppress("DSL_SCOPE_VIOLATION", "UnstableApiUsage")
import com.android.build.api.artifact.SingleArtifact
import com.android.build.api.variant.BuiltArtifactsLoader
import java.nio.file.Files
import java.nio.file.Paths
import java.nio.file.StandardCopyOption
import java.util.Properties
import org.gradle.api.DefaultTask
import org.gradle.api.file.DirectoryProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.CacheableTask
import org.gradle.api.tasks.InputFiles
import org.gradle.api.tasks.Internal
import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction
plugins {
alias(libs.plugins.android.application)
alias(libs.plugins.kotlin.android)
alias(libs.plugins.kotlin.kapt)
id("dev.msfjarvis.claw.android-application")
id("dev.msfjarvis.claw.rename-artifacts")
id("dev.msfjarvis.claw.kotlin-android")
id("dev.msfjarvis.claw.kotlin-kapt")
alias(libs.plugins.compose)
alias(libs.plugins.hilt)
}
@CacheableTask
abstract class CollectApksTask : DefaultTask() {
@get:InputFiles @get:PathSensitive(PathSensitivity.NONE) abstract val apkFolder: DirectoryProperty
@get:Input abstract val variantName: Property<String>
@get:Internal abstract val builtArtifactsLoader: Property<BuiltArtifactsLoader>
@get:OutputDirectory abstract val outputDirectory: DirectoryProperty
@TaskAction
fun taskAction() {
val outputDir = outputDirectory.asFile.get()
outputDir.mkdirs()
val builtArtifacts =
builtArtifactsLoader.get().load(apkFolder.get()) ?: throw RuntimeException("Cannot load APKs")
builtArtifacts.elements.forEach { artifact ->
Files.copy(
Paths.get(artifact.outputFile),
outputDir.resolve("Claw-${variantName.get()}-${artifact.versionName}.apk").toPath(),
StandardCopyOption.REPLACE_EXISTING,
)
}
android {
defaultConfig {
applicationId = "dev.msfjarvis.claw.android"
versionCode = 1
versionName = "1.0"
}
}
@ -71,55 +40,3 @@ dependencies {
implementation(libs.kotlinx.serialization.json)
implementation(libs.retrofit.kotlinxSerializationConverter) { isTransitive = false }
}
android {
compileSdk = 31
defaultConfig {
applicationId = "dev.msfjarvis.claw.android"
minSdk = 23
targetSdk = 31
versionCode = 1
versionName = "1.0"
}
val keystoreConfigFile = rootProject.layout.projectDirectory.file("keystore.properties")
if (keystoreConfigFile.asFile.exists()) {
val contents = providers.fileContents(keystoreConfigFile).asText
val keystoreProperties = Properties()
keystoreProperties.load(contents.get().byteInputStream())
signingConfigs {
register("release") {
keyAlias = keystoreProperties["keyAlias"] as String
keyPassword = keystoreProperties["keyPassword"] as String
storeFile = rootProject.file(keystoreProperties["storeFile"] as String)
storePassword = keystoreProperties["storePassword"] as String
}
}
buildTypes.all { signingConfig = signingConfigs.getByName("release") }
}
buildFeatures { buildConfig = true }
buildTypes {
named("release") {
isMinifyEnabled = false
setProguardFiles(listOf("proguard-android-optimize.txt", "proguard-rules.pro"))
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
dependenciesInfo {
includeInBundle = false
includeInApk = false
}
}
androidComponents {
onVariants { variant ->
project.tasks.register<CollectApksTask>("collect${variant.name.capitalize()}Apks") {
variantName.set(variant.name)
apkFolder.set(variant.artifacts.get(SingleArtifact.APK))
builtArtifactsLoader.set(variant.artifacts.getBuiltArtifactsLoader())
outputDirectory.set(project.layout.projectDirectory.dir("outputs"))
}
}
}