Skip to content

Commit

Permalink
#768 unpacked klib support
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex009 committed Dec 8, 2024
1 parent 5bab814 commit 947f4ba
Show file tree
Hide file tree
Showing 3 changed files with 266 additions and 481 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
import org.jetbrains.kotlin.konan.file.zipDirAs
import java.io.File
import java.util.Properties
import org.jetbrains.kotlin.konan.file.File as KonanFile

internal class PackAppleResourcesToKLibAction(
private val assetsDirectory: Provider<File>,
Expand Down Expand Up @@ -43,11 +44,48 @@ internal class PackAppleResourcesToKLibAction(

val klibFile: File = task.outputFile.get()
val repackDir = File(klibFile.parent, klibFile.nameWithoutExtension)
val defaultDir = File(repackDir, "default")
val resRepackDir = File(defaultDir, "resources")

task.logger.info("Adding resources to klib file `{}`", klibFile)
unzipTo(zipFile = klibFile, outputDirectory = repackDir)
if (klibFile.isDirectory) {
task.logger.info("Adding resources to unpacked klib directory `{}`", klibFile)

addResourcesToUnpackedKlib(
klibDir = klibFile,
resourcesGenerationDir = resourcesGenerationDir,
assetsDirectory = assetsDirectory,
task = task
)
} else {
task.logger.info("Adding resources to packed klib directory `{}`", klibFile)

unzipTo(zipFile = klibFile, outputDirectory = repackDir)

addResourcesToUnpackedKlib(
klibDir = repackDir,
resourcesGenerationDir = resourcesGenerationDir,
assetsDirectory = assetsDirectory,
task = task
)

val repackKonan = KonanFile(repackDir.path)
val klibKonan = KonanFile(klibFile.path)

klibFile.delete()
repackKonan.zipDirAs(klibKonan)

repackDir.deleteRecursively()
}
}

private fun addResourcesToUnpackedKlib(
klibDir: File,
resourcesGenerationDir: File,
assetsDirectory: File,
task: KotlinNativeCompile
) {
assert(klibDir.isDirectory) { "should be used directory as KLib" }

val defaultDir = File(klibDir, "default")
val resRepackDir = File(defaultDir, "resources")

val manifestFile = File(defaultDir, "manifest")
val manifest = Properties()
Expand Down Expand Up @@ -83,14 +121,6 @@ internal class PackAppleResourcesToKLibAction(
} else {
task.logger.info("assets not found, compilation not required")
}

val repackKonan = org.jetbrains.kotlin.konan.file.File(repackDir.path)
val klibKonan = org.jetbrains.kotlin.konan.file.File(klibFile.path)

klibFile.delete()
repackKonan.zipDirAs(klibKonan)

repackDir.deleteRecursively()
}

private fun compileAppleAssets(
Expand Down
4 changes: 2 additions & 2 deletions samples/compose-resources-gallery/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,6 @@ org.jetbrains.compose.experimental.uikit.enabled=true
kotlin.mpp.androidSourceSetLayoutVersion=2
kotlin.mpp.androidGradlePluginCompatibility.nowarn=true

kotlin.version=2.0.0
kotlin.version=2.1.0
agp.version=8.4.0
compose.version=1.6.10
compose.version=1.7.1
Loading

0 comments on commit 947f4ba

Please sign in to comment.