You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

64 lines
2.5 KiB

/*
* Copyright 2020-2022 JetBrains s.r.o. and respective authors and developers.
* Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE.txt file.
*/
package org.jetbrains.compose.experimental.uikit.internal
import org.gradle.api.Project
import org.gradle.api.tasks.TaskProvider
import org.jetbrains.compose.experimental.uikit.tasks.AbstractComposeIosTask
internal fun Project.configureTaskToGenerateXcodeProject(
id: String,
projectName: String,
bundleIdPrefix: String,
getTeamId: () -> String? = { null },
taskInstallXcodeGen: TaskProvider<*>,
): TaskProvider<AbstractComposeIosTask> = tasks.composeIosTask<AbstractComposeIosTask>("iosGenerateXcodeProject$id") {
dependsOn(taskInstallXcodeGen)
doLast {
val commonMainResources = file("src/commonMain/resources").absolutePath
val uikitMainResources = file("src/uikitMain/resources").absolutePath
val iosMainResources = file("src/iosMain/resources").absolutePath
val buildIosDir = getBuildIosDir(id)
buildIosDir.mkdirs()
buildIosDir.resolve("project.yml").writeText(
"""
name: $projectName
options:
bundleIdPrefix: $bundleIdPrefix
settings:
${if (getTeamId() != null) "DEVELOPMENT_TEAM: \"${getTeamId()}\"" else ""}
CODE_SIGN_IDENTITY: "iPhone Developer"
CODE_SIGN_STYLE: Automatic
MARKETING_VERSION: "1.0"
CURRENT_PROJECT_VERSION: "4"
SDKROOT: iphoneos
targets:
$projectName:
type: application
platform: iOS
deploymentTarget: "12.0"
info:
path: plists/Ios/Info.plist
settings:
LIBRARY_SEARCH_PATHS: "$(inherited)"
ENABLE_BITCODE: "YES"
ONLY_ACTIVE_ARCH: "NO"
VALID_ARCHS: "arm64"
sources:
- path: $commonMainResources
optional: true
buildPhase: resources
- path: $uikitMainResources
optional: true
buildPhase: resources
- path: $iosMainResources
optional: true
buildPhase: resources
""".trimIndent()
)
runExternalTool(xcodeGenExecutable, emptyList(), workingDir = buildIosDir)
}
}