Skip to content

CocoaPods Gradle 플러그인 DSL 참조

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

이 DSL 참조는 CocoaPods 통합을 설정할 때 사용할 수 있는 Kotlin CocoaPods Gradle 플러그인의 주요 블록, 함수 및 속성을 나열합니다.

플러그인 활성화

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

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

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

cocoapods {} 블록

cocoapods {} 블록은 CocoaPods 구성의 최상위 블록입니다. 이 블록은 Pod 버전, 요약, 홈페이지와 같은 필수 정보뿐만 아니라 선택적 기능을 포함하여 Pod에 대한 일반 정보를 담고 있습니다.

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

이름설명
versionPod의 버전입니다. 지정되지 않으면 Gradle 프로젝트 버전이 사용됩니다. 이 속성 중 어느 것도 구성되지 않으면 오류가 발생합니다.
summary이 프로젝트에서 빌드된 Pod에 대한 필수 설명입니다.
homepage이 프로젝트에서 빌드된 Pod의 홈페이지 링크입니다.
authors이 프로젝트에서 빌드된 Pod의 작성자를 지정합니다.
podfile기존 Podfile을 구성합니다.
noPodspec()cocoapods 섹션에 대한 Podspec 파일을 생성하지 않도록 플러그인을 설정합니다.
name이 프로젝트에서 빌드된 Pod의 이름입니다. 제공되지 않으면 프로젝트 이름이 사용됩니다.
license이 프로젝트에서 빌드된 Pod의 라이선스, 유형 및 텍스트입니다.
framework프레임워크 블록은 플러그인에 의해 생성된 프레임워크를 구성합니다.
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
kotlin {
    iosArm64()
   
    cocoapods {
        version = "2.0"
        name = "MyCocoaPod"
        summary = "CocoaPods test library"
        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
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
linkOnlyCocoaPods 플러그인에 cinterop 바인딩을 생성하지 않고 동적 프레임워크와 함께 Pod 의존성을 사용하도록 지시합니다. 정적 프레임워크와 함께 사용하면 이 옵션은 Pod 의존성을 완전히 제거합니다.
interopBindingDependencies다른 Pod에 대한 의존성 목록을 포함합니다. 이 목록은 새 Pod에 대한 Kotlin 바인딩을 빌드할 때 사용됩니다.
useInteropBindingFrom()의존성으로 사용되는 기존 Pod의 이름을 지정합니다. 이 Pod는 함수 실행 전에 선언되어야 합니다. 이 함수는 CocoaPods 플러그인에 새 Pod에 대한 바인딩을 빌드할 때 기존 Pod의 Kotlin 바인딩을 사용하도록 지시합니다.
kotlin
kotlin {
    iosArm64()
    
    cocoapods {
        version = "2.0"
        summary = "CocoaPods test library"
        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"))
        }
    }
}

다음 단계