diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt index 4bfc1c14734..b5125274e96 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/AppleFrameworkIT.kt @@ -138,6 +138,38 @@ class AppleFrameworkIT : KGPBaseTest() { } } + @DisplayName("EmbedAnsSign executes normally when signing is disabled") + @OptIn(EnvironmentalVariablesOverride::class) + // We need to use Gradle 7.2 here because of the issue https://github.com/gradle/gradle/issues/13957 + @GradleTestVersions(minVersion = TestVersions.Gradle.G_7_2) + @GradleAndroidTest + fun testEmbedAnsSignExecutionWithoutSigning( + gradleVersion: GradleVersion, + agpVersion: String, + jdkProvider: JdkVersions.ProvidedJdk, + ) { + + nativeProject( + "sharedAppleFramework", + gradleVersion, + buildJdk = jdkProvider.location, + buildOptions = defaultBuildOptions.copy( + androidVersion = agpVersion + ) + ) { + val environmentVariables = mapOf( + "CONFIGURATION" to "debug", + "SDK_NAME" to "iphoneos", + "ARCHS" to "arm64", + "TARGET_BUILD_DIR" to projectPath.absolutePathString(), + "FRAMEWORKS_FOLDER_PATH" to "build/xcode-derived" + ) + build(":shared:embedAndSignAppleFrameworkForXcode", environmentVariables = EnvironmentalVariables(environmentVariables)) { + assertDirectoryInProjectExists("build/xcode-derived/sdk.framework") + } + } + } + @DisplayName("embedAndSignAppleFrameworkForXcode fail") @GradleAndroidTest // We need to use Gradle 7.2 here because of the issue https://github.com/gradle/gradle/issues/13957 diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt index 259e1b845d0..5ec4e9a342b 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/apple/AppleXcodeTasks.kt @@ -183,7 +183,9 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework property("type", envBuildType) property("targets", envTargets) property("embeddedFrameworksDir", envEmbeddedFrameworksDir) - property("sign", envSign) + if (envSign != null) { + property("sign", envSign) + } } } @@ -194,12 +196,14 @@ internal fun Project.registerEmbedAndSignAppleFrameworkTask(framework: Framework task.dependsOn(assembleTask) task.files = files(File(appleFrameworkDir(envFrameworkSearchDir), framework.outputFile.name)) task.destDir = envEmbeddedFrameworksDir - if (envSign != null) task.doLast { - val binary = envEmbeddedFrameworksDir - .resolve(framework.outputFile.name) - .resolve(framework.outputFile.nameWithoutExtension) - exec { - it.commandLine("codesign", "--force", "--sign", envSign, "--", binary) + if (envSign != null) { + task.doLast { + val binary = envEmbeddedFrameworksDir + .resolve(framework.outputFile.name) + .resolve(framework.outputFile.nameWithoutExtension) + exec { + it.commandLine("codesign", "--force", "--sign", envSign, "--", binary) + } } } }