Add apk downloader project based on aurora's core

Docker all in one
This commit is contained in:
Nathan Lecoanet
2026-07-07 15:58:48 +02:00
parent 3ab3943f1e
commit 334fd2fffd
33 changed files with 1812 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
/*
* 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<KotlinCompile>().configureEach {
dependsOn(extractGplayApiJar)
}
tasks.withType<JavaExec>().configureEach {
workingDir = rootProject.projectDir
}
tasks.named<JavaExec>("run") {
isIgnoreExitValue = true
doLast {
val exitValue = executionResult.get().exitValue
if (exitValue != 0) {
logger.lifecycle("apk-downloader exited with code $exitValue")
}
}
}