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,76 @@
/*
* SPDX-FileCopyrightText: 2026 Aurora OSS
* SPDX-License-Identifier: GPL-3.0-or-later
*/
package com.aurora.apkdownloader
import com.google.common.truth.Truth.assertThat
import java.util.zip.ZipFile
import kotlin.io.path.createDirectories
import kotlin.io.path.exists
import kotlin.io.path.writeText
import org.junit.Rule
import org.junit.Test
import org.junit.rules.TemporaryFolder
class SplitApkArchiveWriterTest {
@get:Rule
val temporaryFolder = TemporaryFolder()
@Test
fun `writes apks archive for multiple apk files`() {
val appDir = temporaryFolder.newFolder().toPath()
val base = appDir.resolve("base.apk").also { it.writeText("base") }
val split = appDir.resolve("config.arm64_v8a.apk").also { it.writeText("split") }
val archive = SplitApkArchiveWriter().write(
packageName = "org.mozilla.firefox",
versionCode = 123,
appDir = appDir,
files = listOf(base, split)
)
assertThat(archive).isNotNull()
assertThat(archive!!.exists()).isTrue()
ZipFile(archive.toFile()).use { zip ->
assertThat(zip.getEntry("base.apk")).isNotNull()
assertThat(zip.getEntry("config.arm64_v8a.apk")).isNotNull()
}
}
@Test
fun `preserves shared library relative paths`() {
val appDir = temporaryFolder.newFolder().toPath()
val base = appDir.resolve("base.apk").also { it.writeText("base") }
val libDir = appDir.resolve("libraries/com.example.lib").also { it.createDirectories() }
val lib = libDir.resolve("base.apk").also { it.writeText("lib") }
val archive = SplitApkArchiveWriter().write(
packageName = "com.example.app",
versionCode = 123,
appDir = appDir,
files = listOf(base, lib)
)
ZipFile(archive!!.toFile()).use { zip ->
assertThat(zip.getEntry("base.apk")).isNotNull()
assertThat(zip.getEntry("libraries/com.example.lib/base.apk")).isNotNull()
}
}
@Test
fun `does not write archive for a single apk file`() {
val appDir = temporaryFolder.newFolder().toPath()
val base = appDir.resolve("base.apk").also { it.writeText("base") }
val archive = SplitApkArchiveWriter().write(
packageName = "org.mozilla.firefox",
versionCode = 123,
appDir = appDir,
files = listOf(base)
)
assertThat(archive).isNull()
}
}