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.3.0"
   kotlin("native.cocoapods") version "2.3.0"
}

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

cocoapods {} 블록

cocoapods {} 블록은 CocoaPods 설정을 위한 최상위 블록입니다. 여기에는 Pod 버전, 요약(summary), 홈페이지와 같은 필수 정보뿐만 아니라 선택적 기능 등 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()을 사용하여 사양 저장소(specification repository)를 추가합니다. 이는 비공개 Pod을 의존성으로 사용할 때 필요합니다. 자세한 내용은 CocoaPods 문서를 참조하세요.

타겟

iOSmacOStvOSwatchOS
iosArm64macosArm64tvosArm64watchosArm64
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프레임워크 링킹 유형을 정의합니다. 기본값은 dynamic(동적)입니다.
transitiveExport의존성 내보내기(export)를 활성화합니다.
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은 함수 실행 전에 선언되어야 합니다. 이 함수는 새 Pod에 대한 바인딩을 빌드할 때 기존 Pod의 Kotlin 바인딩을 사용하도록 CocoaPods 플러그인에 지시합니다.
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"))
        }
    }
}

다음 단계