본문으로 건너뛰기

CocoaPods Gradle 플러그인 DSL 참조

Kotlin CocoaPods Gradle 플러그인은 Podspec 파일을 생성하는 도구입니다. 이러한 파일은 Kotlin 프로젝트를 CocoaPods 종속성 관리자와 통합하는 데 필요합니다.

이 참조에는 CocoaPods 통합을 사용할 때 사용할 수 있는 Kotlin CocoaPods Gradle 플러그인의 블록, 함수 및 속성의 전체 목록이 포함되어 있습니다.

플러그인 활성화

CocoaPods 플러그인을 적용하려면 build.gradle(.kts) 파일에 다음 줄을 추가하세요.

plugins {
kotlin("multiplatform") version "2.1.20"
kotlin("native.cocoapods") version "2.1.20"
}

플러그인 버전은 Kotlin 릴리스 버전과 일치합니다. 최신 안정 버전은 2.1.20입니다.

cocoapods 블록

cocoapods 블록은 CocoaPods 구성의 최상위 블록입니다. 여기에는 Pod 버전, 요약 및 홈페이지와 같은 필수 정보와 선택적 기능을 포함하여 Pod에 대한 일반 정보가 포함되어 있습니다.

다음 블록, 함수 및 속성을 내부에 사용할 수 있습니다.

이름설명
versionPod의 버전입니다. 지정하지 않으면 Gradle 프로젝트 버전이 사용됩니다. 이러한 속성이 구성되지 않으면 오류가 발생합니다.
summary이 프로젝트에서 빌드된 Pod에 대한 필수 설명입니다.
homepage이 프로젝트에서 빌드된 Pod의 홈페이지에 대한 필수 링크입니다.
authors이 프로젝트에서 빌드된 Pod의 작성자를 지정합니다.
podfile기존 Podfile 파일을 구성합니다.
noPodspec()cocoapods 섹션에 대해 Podspec 파일을 생성하지 않도록 플러그인을 설정합니다.
name이 프로젝트에서 빌드된 Pod의 이름입니다. 제공되지 않으면 프로젝트 이름이 사용됩니다.
license이 프로젝트에서 빌드된 Pod의 라이선스, 유형 및 텍스트입니다.
frameworkframework 블록은 플러그인에서 생성된 프레임워크를 구성합니다.
source이 프로젝트에서 빌드된 Pod의 위치입니다.
extraSpecAttributeslibraries 또는 vendored_frameworks와 같은 다른 Podspec 속성을 구성합니다.
xcodeConfigurationToNativeBuildType사용자 지정 Xcode 구성을 NativeBuildType에 매핑합니다. "Debug"를 NativeBuildType.DEBUG에, "Release"를 NativeBuildType.RELEASE에 매핑합니다.
publishDirPod 게시를 위한 출력 디렉터리를 구성합니다.
podsPod 종속성 목록을 반환합니다.
pod()이 프로젝트에서 빌드된 Pod에 CocoaPods 종속성을 추가합니다.
specReposurl()을 사용하여 사양 저장소를 추가합니다. 이는 개인 Pod가 종속성으로 사용될 때 필요합니다. 자세한 내용은 CocoaPods 설명서를 참조하세요.

타겟

iOSmacOStvOSwatchOS
iosArm64macosArm64tvosArm64watchosArm64
iosX64macosX64tvosX64watchosX64
iosSimulatorArm64tvosSimulatorArm64watchosSimulatorArm64
watchosArm32
watchosDeviceArm64

각 타겟에 대해 deploymentTarget 속성을 사용하여 Pod 라이브러리의 최소 타겟 버전을 지정합니다.

적용되면 CocoaPods는 모든 타겟에 대해 debugrelease 프레임워크를 출력 바이너리로 추가합니다.

kotlin {
iosArm64()

cocoapods {
version = "2.0"
name = "MyCocoaPod"
summary = "CocoaPods 테스트 라이브러리"
homepage = "https://github.com/JetBrains/kotlin"

extraSpecAttributes["vendored_frameworks"] = 'CustomFramework.xcframework'
license = "{ :type => 'MIT', :text => 'License text'}"
source = "{ :git => '[email protected]:vkormushkin/kmmpodlibrary.git', :tag => '$version' }"
authors = "Kotlin Dev"

specRepos {
url("https://github.com/Kotlin/kotlin-cocoapods-spec.git")
}
pod("example")

xcodeConfigurationToNativeBuildType["CUSTOM_RELEASE"] = NativeBuildType.RELEASE
}
}

framework 블록

framework 블록은 cocoapods 내부에 중첩되어 있으며 프로젝트에서 빌드된 Pod의 프레임워크 속성을 구성합니다.

노트

baseName은 필수 필드입니다.

이름설명
baseName필수 프레임워크 이름입니다. 더 이상 사용되지 않는 frameworkName 대신 이 속성을 사용하세요.
isStatic프레임워크 연결 유형을 정의합니다. 기본적으로 동적입니다.
transitiveExport종속성 내보내기를 활성화합니다.
kotlin {
cocoapods {
version = "2.0"
framework {
baseName = "MyFramework"
isStatic = false
export(project(":anotherKMMModule"))
transitiveExport = true
}
}
}

pod() 함수

pod() 함수 호출은 이 프로젝트에서 빌드된 Pod에 CocoaPods 종속성을 추가합니다. 각 종속성에는 별도의 함수 호출이 필요합니다.

함수 매개변수에서 Pod 라이브러리의 이름과 추가 매개변수 값(예: 라이브러리의 versionsource)을 해당 구성 블록에 지정할 수 있습니다.

이름설명
version라이브러리 버전입니다. 라이브러리의 최신 버전을 사용하려면 매개변수를 생략하세요.
source다음을 사용하여 Pod를 구성합니다.
  • git()을 사용하는 Git 저장소. git() 뒤의 블록에서 특정 커밋을 사용하려면 commit을, 특정 태그를 사용하려면 tag를, 저장소의 특정 분기를 사용하려면 branch를 지정할 수 있습니다.
  • path()를 사용하는 로컬 저장소
  • packageName패키지 이름을 지정합니다.
    extraOptsPod 라이브러리에 대한 옵션 목록을 지정합니다. 예를 들어 특정 플래그를 지정합니다. ```Kotlin
    extraOpts = listOf("-compiler-option")
    | `linkOnly`                   | cinterop 바인딩을 생성하지 않고 동적 프레임워크로 Pod 종속성을 사용하도록 CocoaPods 플러그인에 지시합니다. 정적 프레임워크와 함께 사용하면 옵션이 Pod 종속성을 완전히 제거합니다.                                                                                           |
    | `interopBindingDependencies` | 다른 Pod에 대한 종속성 목록을 포함합니다. 이 목록은 새 Pod에 대한 Kotlin 바인딩을 빌드할 때 사용됩니다. |
    | `useInteropBindingFrom()` | 종속성으로 사용되는 기존 Pod의 이름을 지정합니다. 이 Pod는 함수 실행 전에 선언되어야 합니다. 이 함수는 새 Pod에 대한 바인딩을 빌드할 때 기존 Pod의 Kotlin 바인딩을 사용하도록 CocoaPods 플러그인에 지시합니다. |

    ```kotlin
    kotlin {
    iosArm64()
    cocoapods {
    version = "2.0"
    summary = "CocoaPods 테스트 라이브러리"
    homepage = "https://github.com/JetBrains/kotlin"

    ios.deploymentTarget = "16.0"

    pod("pod_dependency") {
    version = "1.0"
    extraOpts += listOf("-compiler-option")
    linkOnly = true
    source = path(project.file("../pod_dependency"))
    }
    }
    }