Я создал модуль, используя kotlin мультиплатформенный, и он отлично работает на Android и iOS, но когда я пытаюсь сделать то же самое для приложения macOS, я получаю следующую ошибку:
XYZ.app: code object is not signed at all
Command CodeSign failed with a nonzero exit code
Я создаю структуру следующим образом:
kotlin {
jvm("android")
macosX64("mac") {
binaries {
framework {
baseName = "XyzForMac"
}
}
}
def iosClosure = {
binaries {
framework {
baseName = "XyzForIos"
}
}
}
if (System.getenv("SDK_NAME")?.startsWith("iphoneos")) {
iosArm64("ios", iosClosure)
} else {
iosX64("ios", iosClosure)
}
sourceSets {…}
}
task packForXcode(type: Sync) {
def targetDir = new File(buildDir, "xcode-frameworks")
def mode = System.getenv("CONFIGURATION") ?: "DEBUG"
def frameworkMac = kotlin.targets.getByName("mac").binaries.getFramework(mode)
inputs.property("mode", mode)
dependsOn frameworkMac.linkTask
from frameworkMac.outputDirectory
into targetDir
def frameworkIos = kotlin.targets.getByName("ios").binaries.getFramework(mode)
inputs.property("mode", mode)
dependsOn frameworkIos.linkTask
from frameworkIos.outputDirectory
into targetDir
doLast {
def gradlew = new File(targetDir, "gradlew")
gradlew.text = """\
|#!/bin/bash
|export 'JAVA_HOME=${System.getProperty("java.home")}'
|cd '${rootProject.rootDir}'
|./gradlew \$@""".stripMargin().stripIndent()
gradlew.setExecutable(true)
}
}
tasks.getByName("build").dependsOn(packForXcode)
Похоже, я все делаю правильно, особенно потому, что приложение работает, как и ожидалось, на Android и iOS. Мне интересно, пропустил ли я какую-либо конфигурацию ma c os Speci c, чтобы она работала ...