Mark
10/13/2025, 4:51 AMPawel Kwiecinski
10/13/2025, 7:56 AMtasks.register<Copy>("copyiOSTestResources") {
from("src/commonTest/resources/your/package")
into("build/bin/iosSimulatorArm64/debugTest/resources")
}
tasks.findByName("iosSimulatorArm64Test")!!.dependsOn("copyiOSTestResources")
I think this could work for commonMain.
You can then read it using
NSBundle.mainBundle.pathForResource
in iOS sources.Mark
10/13/2025, 8:05 AM// Task to aggregate plugin resources from dependency modules for iOS
// Compose resources from transitive dependencies don't automatically bundle for iOS
abstract class AggregateiOSPluginResourcesTask : DefaultTask() {
@get:OutputDirectory
abstract val outputDir: DirectoryProperty
@get:InputFiles
abstract val sourceDirectories: ConfigurableFileCollection
@TaskAction
fun aggregate() {
val assetsDir = outputDir.asFile.get()
assetsDir.mkdirs()
sourceDirectories.files.forEach { sourceResources ->
if (sourceResources.exists() && sourceResources.isDirectory) {
logger.lifecycle("📦 Copying resources from ${sourceResources.name}")
sourceResources.copyRecursively(assetsDir, overwrite = true)
}
}
logger.lifecycle("✅ Aggregated plugin resources to: ${assetsDir.absolutePath}")
}
}