将 Kotlin Gradle 项目用作 CocoaPods 依赖项
要将带有 native 编译目标的 Kotlin Multiplatform 项目用作 CocoaPods 的依赖项, 需要 完成初始配置. 你可以在 Xcode 项目的 Podfile 中, 通过它的名称和生成的 Podspec 文件的目录路径来包含这样的依赖项.
依赖项将会与项目一起自动构建(以及重构建). 这样的方案可以简化 Kotlin Multiplatform 项目到 Xcode 的导入工作, 因为不再需要编写对应的 Gradle task 和 Xcode 构建步骤.
你可以在 Kotlin Gradle 项目和带有一个或多个编译目标的 Xcode 项目之间添加依赖. 也可以在 Gradle 项目和多个 Xcode 项目之间添加依赖. 但是, 这种情况下, 你需要通过对每个 Xcode 项目调用手动 pod install
来添加依赖. 其他情况下, 这个调用可以自动完成.
单个编译目标的 Xcode 项目
如果你还没有 Xcode 项目, 请使用
Podfile
创建一个.在应用程序 Target 中, 请确认禁用了 Build Options 之下的 User Script Sandboxing:
使用
podfile = project.file(..)
向你的 Xcode 项目Podfile
添加路径, 其中的文件路径是你的 Kotlin 项目的build.gradle.kts
(build.gradle
) 文件路径. 这个步骤可以通过对你的Podfile
调用pod install
, 帮助你的 Xcode 项目与 Gradle 项目依赖项保持同步.指定 Pod 库的部署目标(deployment target)最小版本.
kotlin { ios() cocoapods { summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" ios.deploymentTarget = "13.5" pod("FirebaseAuth") { version = "10.16.0" } podfile = project.file("../ios-app/Podfile") } }对你在 Xcode 项目中想要包含的 Gradle 项目, 将它的名称和路径添加到
Podfile
.use_frameworks! platform :ios, '13.5' target 'ios-app' do pod 'kotlin_library', :path => '../kotlin-library' end重新导入项目.
多个编译目标的 Xcode 项目
如果你还没有 Xcode 项目, 请使用
Podfile
创建一个.使用
podfile = project.file(..)
向你的 Xcode 项目Podfile
添加路径, 其中的文件路径是你的 Kotlin 项目的build.gradle(.kts)
. 这个步骤可以通过对你的Podfile
调用pod install
, 帮助你的 Xcode 项目与 Gradle 项目依赖项保持同步.对于你的项目中希望使用的 Pod 库, 使用
pod()
添加依赖项.对每个目标, 指定 Pod 库的部署目标(deployment target)最小版本.
kotlin { ios() tvos() cocoapods { summary = "CocoaPods test library" homepage = "https://github.com/JetBrains/kotlin" ios.deploymentTarget = "13.5" tvos.deploymentTarget = "13.4" pod("FirebaseAuth") { version = "10.16.0" } podfile = project.file("../severalTargetsXcodeProject/Podfile") // 指定 Podfile 路径 } }对你在 Xcode 项目中想要包含的 Gradle 项目, 将它的名称和路径添加到
Podfile
.target 'iosApp' do use_frameworks! platform :ios, '13.5' # Pods for iosApp pod 'kotlin_library', :path => '../kotlin-library' end target 'TVosApp' do use_frameworks! platform :tvos, '13.4' # Pods for TVosApp pod 'kotlin_library', :path => '../kotlin-library' end重新导入项目.
参见 示例项目.