/* * SPDX-FileCopyrightText: 2026 Aurora OSS * SPDX-License-Identifier: GPL-3.0-or-later */ import org.gradle.api.file.DuplicatesStrategy import org.gradle.api.attributes.Category import org.gradle.api.attributes.Usage import org.gradle.api.attributes.java.TargetJvmEnvironment import org.gradle.api.tasks.JavaExec import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { alias(libs.plugins.jetbrains.kotlin.jvm) alias(libs.plugins.jetbrains.kotlin.serialization) application } kotlin { jvmToolchain(17) } application { mainClass.set("com.aurora.apkdownloader.MainKt") } val gplayapiAar by configurations.creating { isCanBeConsumed = false isCanBeResolved = true attributes { attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.LIBRARY)) attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.JAVA_RUNTIME)) attribute(TargetJvmEnvironment.TARGET_JVM_ENVIRONMENT_ATTRIBUTE, objects.named("android")) attribute(KotlinPlatformType.attribute, KotlinPlatformType.androidJvm) } } val extractedGplayApiJar = layout.buildDirectory.file("gplayapi/gplayapi.jar") val extractGplayApiJar by tasks.registering(Copy::class) { duplicatesStrategy = DuplicatesStrategy.EXCLUDE from({ gplayapiAar.files.map { zipTree(it) } }) { include("classes.jar") rename { "gplayapi.jar" } } into(layout.buildDirectory.dir("gplayapi")) } dependencies { gplayapiAar(libs.auroraoss.gplayapi) implementation(files(extractedGplayApiJar)) implementation("com.google.code.gson:gson:2.14.0") implementation(libs.google.protobuf.javalite) implementation("org.jetbrains.kotlin:kotlin-parcelize-runtime:${libs.versions.kotlin.get()}") implementation(libs.kotlinx.coroutines.core) implementation(libs.kotlinx.serialization.json) implementation(libs.squareup.okhttp) testImplementation(libs.junit) testImplementation(libs.google.truth) } tasks.withType().configureEach { dependsOn(extractGplayApiJar) } tasks.withType().configureEach { workingDir = rootProject.projectDir } tasks.named("run") { isIgnoreExitValue = true doLast { val exitValue = executionResult.get().exitValue if (exitValue != 0) { logger.lifecycle("apk-downloader exited with code $exitValue") } } }